Сейчас на форуме: rmn, exp50848, _MBK_ (+9 невидимых)

 eXeL@B —› Основной форум —› Возможно ли обратить алгоритм?
Посл.ответ Сообщение


Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 06 июня 2012 10:17
· Личное сообщение · #1

Имеется банальная пара - сервер / клиент. Есть доступ только к коду клиента. По запросу сервер присылает файл, который клиент проверяет на валидность и далее расшифровывает. Проверка на валидность с виду проста, считается "CRC файла", за исключением последних 8 байт, и сравнивается с последними 8 байтами файла, если совпало - ок, иначе - облом.
Задача - требуется самому "посчитать CRC" и записать в конец данных, чтобы клиент принял этот файл за родной, возможно ли это реализовать?
Весь отреверсенный алгоритм проверки с примером файла и рабочим кодом в прицепе (моя неудачная попытка обращения там же).

9a9d_06.06.2012_EXELAB.rU.tgz - FileCRC.zip

-----
Everything is relative...




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 06 июня 2012 10:54 · Поправил: r_e
· Личное сообщение · #2

Vamit
Мне кажется будет проще, если переименовать
UpdateKey в MulMod64 = /* k * n mod m. */
GetKey в ExpMod64 = /* rem ^ n mod m. */
Тогда становится ясно что
ulong keyOr = GetKey(origKey, Y, M); // origKey ^ Y mod M

Дальше надо?

added:
public ulong ComputePrivateKey(byte[] data)
{
ulong dataKey = PrepareKey(data);
ulong keyDt = dataKey % M;
return ExpMod64(keyDt, 0x1DE7FED38081, M);
}

-----
старый пень


| Сообщение посчитали полезным: Vamit


Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 06 июня 2012 11:15 · Поправил: Vamit
· Личное сообщение · #3

r_e
Я понимаю, что вы в этом гуру, а я, к сожалению, в криптоалгоритмах почти нуль (могу только реверсить не очень понимая что к чему), т.ч. если есть желание и возможность, то можете переименовать всё что нужно и если сделаете функу обращения, то вознаграждение гарантирую - подробности в личку...

added1: Охх, пока писал ты уже и ответ добавил - вот молодец...

added2: Вопросик можно, откуда взялась эта константа - 0x1DE7FED38081?

-----
Everything is relative...




Ранг: 590.4 (!), 408thx
Активность: 0.360.18
Статус: Модератор

Создано: 06 июня 2012 11:25 · Поправил: r_e
· Личное сообщение · #4

Читаем про RSA. Модуль в 64-бита разлагается за доли секунды msieve. Вычисляем параметры RSA и секретную экспоненту D, которая равна 0x1DE7FED38081.

-----
старый пень





Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 06 июня 2012 11:57
· Личное сообщение · #5

r_e
Благодарю... Приятно иметь дело со спецом.
Но я тоже кое в чем силен , т.ч. если потребуется, обращайтесь - помогу...

-----
Everything is relative...




Ранг: 5.8 (гость), 1thx
Активность: 0=0
Статус: Участник

Создано: 06 июня 2012 14:36
· Личное сообщение · #6

Vamit пишет:
Имеется банальная пара - сервер / клиент. Есть доступ только к коду клиента. По запросу сервер присылает файл, который клиент проверяет на валидность и далее расшифровывает. Проверка на валидность с виду проста, считается "CRC файла", за исключением последних 8 байт, и сравнивается с последними 8 байтами файла, если совпало - ок, иначе - облом.


Метатрейдер Сервер-клиет ковыряете ... Именно там идут подписи с помощью этого ключа.


 eXeL@B —› Основной форум —› Возможно ли обратить алгоритм?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати