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

 eXeL@B —› Основной форум —› Определить крипто алго
Посл.ответ Сообщение


Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 23 апреля 2011 10:49
· Личное сообщение · #1

Есть некая прога, которая криптует свои файлы. Алго я вытащил, но хочется знать название чтобы переписать было проще. В аттаче кусок кода. Может кто сказать название этой бадяги?

02a9_22.04.2011_EXELAB.rU.tgz - крипт файлов.rar




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 23 апреля 2011 11:38 · Поправил: neomant
· Личное сообщение · #2

А где собственно сам крипт? Нужно вот это CALL 02F86000.

-----
Следуй за белым кроликом





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

Создано: 23 апреля 2011 12:08
· Личное сообщение · #3

neomant, там же оно, будь внимательнее.

Nightshade
02F86000 - изюминка алго, на входе 8 байт ключа, который первоначально берётся из 2F98F00, на выходе 8 байт изменённого ключа.

1) Перед её вызовом и после производится преобразование в Big Endian или из него.

2) После чего оригинальные 64 бит информации меняются ксором 64 битами из изменённого ключа, но перед этим оригинал заменяет ключ.

3) Шаги 1-3 повторяются, пока информация не иссякнет.

В функции 02F86000 последовательно используются 4 таблицы по 1к (256 1байтовых значений, выровненных до DWORD) и 18 констант для шифрования 2FA9CA0...2FA9CE4. По константам можно быстрее идентифицировать, если они не отличаются от оригинальных. Можете их привести?

Не AES точно, и не RSA... Что-то, похожее на Pukall Cipher, но у Пукалла много разновидностей...

-----
IZ.RU


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

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

Создано: 23 апреля 2011 12:08
· Личное сообщение · #4

На blowfish похоже, но могу ошибаться...



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 23 апреля 2011 12:35 · Поправил: Vovan666
· Личное сообщение · #5

Смотри в гугле по первому dword-у который лежит в 2FAA0E8




Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 23 апреля 2011 12:37
· Личное сообщение · #6

Да, бывает, действительно не заметил 02F86000 . Нужно гуглить константы из таблиц.

-----
Следуй за белым кроликом





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

Создано: 23 апреля 2011 13:19 · Поправил: DenCoder
· Личное сообщение · #7

Кстати, почему не Blowfish? Именно он и есть! Берём книгу Панасенко "Алгоритмы шифрования. Справочник 2009г.", 118 стр.

Цитирую описание раундов, которые выполняются в функции 02F860DD:

1) Значение субблока складывается с ключом i-го раунда Ki операцией XOR, результат операции становится новым значением субблока.
2) Субблок обрабатывается функцией F (описана далее)....

Функция F:
F(x) = ((S1(x1) + S2(x2) mod 2^32) XOR S3(x3)) + S4(x4) mod 2^32

Исходные значения ключей K1..K18 (2FA9CA0...2FA9CE4) инициализируются hex-записью дробной части числа ПИ (операцией XOR на них накладывается ключ шифрования).:

Code:
  1. 243f6a88 85a308d3 13198a2e 03707344 a4093822 299f31d0
  2. 082efa98 ec4e6c89 452821e6 38d01377 be5466cf 34e90c6c
  3. c0ac29b7 c97c50dd 3f84d5b5 b5470917 9216d5d9 8979fb1b


Значения таблиц - остальная часть числа пи. (Насчет выровненных значений до DWORD напутал, сорри).
Детект нескольких признаков BlowFish. Это он!

-----
IZ.RU





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 23 апреля 2011 20:37 · Поправил: Nightshade
· Личное сообщение · #8

02FAA0E8 CC C1 D4 FA 7F BA 48 93 C5 57 09 49 C1 10 CD 4E МБФъєH“ЕW.IБНN
02FAA0F8 ED 97 93 73 BE 55 1E F9 1A C7 C9 D0 00 2F CF AB н—“sѕUщЗЙР./П«

02FA9CA0 17 76 F7 68 61 6B E2 04 56 F8 07 30 C8 8B 45 14 vчhakвVш0И‹E
02FA9CB0 46 93 3A F7 A9 1D F5 8E AA BA F0 78 CA 55 8A 26 F“:ч©хЋЄєрxКUЉ&

Пока не нашел похожих констант
upd
02F951A0 88 6A 3F 24 D3 08 A3 85 2E 8A 19 13 44 73 70 03 €j?$УЈ….ЉDsp
02F951B0 22 38 09 A4 D0 31 9F 29 98 FA 2E 08 89 6C 4E EC "8.¤Р1џ)˜ъ.‰lNм




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

Создано: 23 апреля 2011 20:46 · Поправил: DenCoder
· Личное сообщение · #9

Так это не константы. Вы привели остальную дробную часть числа ПИ сложенную с ключом шифрования вверху, внизу кусок первой части числа ПИ, сложенный с ключом шифрования операцией XOR.

DenCoder пишет:
Исходные значения ключей K1..K18 (2FA9CA0...2FA9CE4) инициализируются hex-записью дробной части числа ПИ (операцией XOR на них накладывается ключ шифрования)


Можете поискать в памяти одно из значений таблиц, должно найтись.

______________________
Ага, пока я писал, уже нашли. Оно и есть

-----
IZ.RU





Ранг: 170.1 (ветеран), 96thx
Активность: 0.090.01
Статус: Участник

Создано: 23 апреля 2011 21:01
· Личное сообщение · #10

Nightshade пишет:
В аттаче кусок кода


Проще смотреть на сам исполняемый файл.


dfd2_23.04.2011_EXELAB.rU.tgz - cc.rar




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 23 апреля 2011 21:07 · Поправил: Nightshade
· Личное сообщение · #11

Где почитать про блуфиш желательно с примерами кода. Ничерта не пойму как из куска файла получить расшифрованный вариант. И как должен выглядеть ключ?
Могу привести зашифрованные и расшифрованные данные. Но не могу понять как получить их самому.
Пробовал через снд тулз прогнать строку - выдает мусор.



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

Создано: 23 апреля 2011 21:13
· Личное сообщение · #12

http://ru.wikipedia.org/wiki/Blowfish
http://www.schneier.com/blowfish-download.html

первая ссылка теория, вторая ссылка- исходники.




Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 23 апреля 2011 21:36 · Поправил: Nightshade
· Личное сообщение · #13

Зашифрованный текст
226BDAC26C2293412A03161CC6342E278435309358C09B42831E311F1B
Расшифрованный
5246204F6E6C696E65206279204F64696E5465616D2073285E4F5E297A
Как получить из одного другое зная ключ?
Калькулятор снд не выдает ничего путного. Возможно я не догоняю что ему надо как ключ
Нашел исходники дешифровщика шифровщика файлов по blowfish. С ключом
58A57513B485644F и B485644F58A57513
02F98F00 13 75 A5 58 4F 64 85 B4 91 5F 46 19 BE 41 B2 51 uҐXOd…ґ‘_FѕAІQ
02F98F10 63 55 A5 01 10 A9 CE 91 78 33 48 E7 5A EB 0F 2F cUҐ©О‘x3HзZл/
02F98F20 D7 B1 69 BB 8D C1 67 87 DC 49 DB 13 75 A5 58 4F Ч±i»ЌБg‡ЬIЫuҐXO
02F98F30 64 85 B4 13 B5 F1 2B AF 52 69 F1 49 D4 1B A0 15 d…ґµс+ЇRiсIФ 
02F98F40 24 97 57 4D 7F 15 31 25 CC 31 F9 02 00 00 00 00 $—WM1%М1щ....

Ничего путного не получил




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

Создано: 23 апреля 2011 23:57 · Поправил: DenCoder
· Личное сообщение · #14

Nightshade пишет:
Где почитать про блуфиш желательно с примерами кода

--> Брюс Шнаер - Прикладная криптография<--

Раньше там Панасенко, по-моему был, оттуда кажется качал.... не могу найти. Зато эта книга как раз с исходниками, в том числе и блоуфиша.

-----
IZ.RU





Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 24 апреля 2011 19:49
· Личное сообщение · #15

Nightshade пишет:
И как должен выглядеть ключ?

Ключ шифрования - это просто строка. Например, набор символов "asdfghef", или же слово "key12", или же массив байт. Есть требование для ключа шифрования - от 4 символов до 56 символов (байт).

Nightshade пишет:
Зашифрованный текст
226BDAC26C2293412A03161CC6342E278435309358C09B42831E311F1B
Расшифрованный
5246204F6E6C696E65206279204F64696E5465616D2073285E4F5E297A
Как получить из одного другое зная ключ?

Собственно, если нужно сделать кейген, то закейгенить, зная ключ шифрования для Blowfish проще простого. Так как алго симметричный, то выбирается ключ, он будет использован для шифрования и дешифрования. Сначала идет операция развертывания ключа - здесь образуется массив байт длиной около 4*4*256 байт. Затем собственно операция шифрования или дешифрования блока данных, и закрытие алгоритма (освобождение буферов развернутого ключа).
Поэтому для кейгена нужно просто определить какая функа юзается - encrypt или decrypt, и проделать обратную операцию.

-----
Программист SkyNet





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 29 апреля 2011 16:10
· Личное сообщение · #16

Нашел ключ. В проге была подъебка - ключ длинной 64 байт




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 30 апреля 2011 08:56 · Поправил: FrenFolio
· Личное сообщение · #17

Nightshade пишет:
Нашел ключ. В проге была подъебка - ключ длинной 64 байт

Любопытно. В модификациях Blowfish обычно изменяют константы из массива подключей PBox или SBox, но не длину ключа.

ЗЫ Дык, закрывай тему, раз разобрался.


Nightshade пишет:
В Blowfish оказывается максимальная длина ключа 72 байта, а не 56 как везде пишут

В классическом алгоритме блочного шифра Blowfish, разработанным Брюсом Шнайером, нет длины ключа 72, а максимум 56, так что ты столкнулся с модификацией алгоритма.

-----
Программист SkyNet





Ранг: 241.9 (наставник), 107thx
Активность: 0.140.01
Статус: Участник

Создано: 30 апреля 2011 14:26
· Личное сообщение · #18

В Blowfish оказывается максимальная длина ключа 72 байта, а не 56 как везде пишут


 eXeL@B —› Основной форум —› Определить крипто алго
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати