Как утверждает еврейская пословица, "О гору не спотыкаются".
В поисках какого-либо приличного по размеру корпуса русского текста для теста,
вспомнил про "Большой Энциклопедический Словарь" - порядка 25 мегабайт. Как
водится, скачивал я его несколько раз из разных мест и по разным поводам, и
первое, что попалось под руку, оказалось собственно словарем (в текстовом
формате) с какой-то кривой оболочкой на Delphi - с большими кнопками.
Рука уже потянулась к F8 - отправить ее в Рай для программ, но зацепился
взглядом за файлики в служебной директории:
Directory of \data\page
11.11.2012 00:41 <DIR> .
11.11.2012 00:41 <DIR> ..
03.02.2001 05:54 60 365 010.cd
03.02.2001 05:55 99 827 020.cd
03.02.2001 05:55 195 016 030.cd
03.02.2001 05:55 126 023 040.cd
03.02.2001 05:55 162 607 050.cd
03.02.2001 05:55 10 905 060.cd
03.02.2001 05:55 28 991 080.cd
03.02.2001 05:55 166 215 090.cd
03.02.2001 05:56 114 192 100.cd
03.02.2001 05:56 1 572 110.cd
03.02.2001 05:56 234 194 120.cd
03.02.2001 05:56 70 085 130.cd
03.02.2001 05:56 146 468 140.cd
03.02.2001 05:56 259 866 150.cd
03.02.2001 05:57 282 054 160.cd
03.02.2001 05:57 657 258 170.cd
03.02.2001 05:57 178 353 180.cd
03.02.2001 05:57 341 580 190.cd
03.02.2001 05:57 123 319 200.cd
03.02.2001 05:58 98 588 210.cd
03.02.2001 05:58 68 384 220.cd
03.02.2001 05:58 43 643 230.cd
03.02.2001 05:58 24 085 240.cd
03.02.2001 05:58 44 130 250.cd
03.02.2001 05:58 51 324 260.cd
03.02.2001 05:59 6 727 270.cd
03.02.2001 05:59 58 792 310.cd
03.02.2001 05:59 5 671 320.cd
03.02.2001 05:59 12 256 330.cd
04.02.2001 07:52 2 607 sokr.cd
30 File(s) 3 675 097 bytes
2 Dir(s) 57 184 563 200 bytes free
Как оказалось, за расширением .cd прятался обычный запароленный ZIP.
И хотя все, что мне было нужно, я уже нашел, любопытство взяло вверх и я
запустил программу подбора паролей к ZIP-архивам.
Когда быстренько прожевав короткие - до шести символов - пароли она всерьез
задумалась над семибуквенными, я понял, что ребята постарались и перебор не
поможет.
Ну, что ж. Схема шифрования ZIP общеизвестна, потрачу еще несколько минут и
подсмотрю пароль в отладчике - судя по задумчивости программы при старте,
именно в этот момент она и занимается распаковкой.
Для начала, выясняем, по какому смещению находится сам алго шифрования:
Загружаем программу в IDA и запускаем отладчик.
Гм. Опрометчиво. Возможно, отладчик IDA - наихудший выбор из возможных, но
дело представлялось мне таким пустяковым, что я даже не задумался об ошибке.
Устанавливаем брэйк на том месте, где в криптомашину передается парольная
фраза, запускаем программу и через несколько секунд наслаждаемся видом пароля
в рамочке редактора: "123456789".
Чего, собственно, и следовало ожидать от Delphi-программеров.
Закрываю отладчик, захожу в директорию с запароленными файлами, запускаю Rar -
Oops! - ошибка контрольной суммы.
Ввожу пароль еще раз, вдумчиво - ошибка контрольной суммы.
И тут меня клинит.
Старательно, одним пальцем, набиваю пароль в третий раз, дважды перечитываю
и нажимаю <ENTER> - ошибка контрольной суммы!
Когнитивный диссонанс...
Моей уверенности в себе, в архиваторе Rar и в методах взлома паролей к
программам на Delphi нанесен сокрушительный удар.
Поглядев, напоследок, с тоской на монитор со зловещей надписью: "Wrong
password or data error.", отправляюсь пить чай.
Перерыв, как обычно, помогает.
Мне приходит в голову свежая мысль, что я забыл проверить размер передаваемой
строки. Может у них там бинарный нуль или еще что..., кто знает этих
пакостников.
Возвращаюсь к отладчику. Размер вычисляется строчкой ниже.
Невероятно!
Размер - двадцать (0x14).
Так, смотрим адрес в EAX - 00DD04CC. Бегом туда. Shit!
В действительности, полный двадцатисимвольный (за 100 лет не перебрать) пароль
выглядит так: "12345678900987654321".
IDA просто обрезала его при показе под размер окошка тултипа. Засранка...
И я, как последний ламер, об это споткнулся...
А в запароленных архивах оказался старый и на каждом углу в инете валяющийся
орфографический словарь Лопатина, который у меня уже и без того был в двух
изданиях двумя вариантами - с ударениями и без.
|