Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Хочу все знать (http://forum.oszone.net/forumdisplay.php?f=23)
-   -   Как бы распаковать архив ... (http://forum.oszone.net/showthread.php?t=98315)

natsgull 17-01-2008 00:21 718765

Как бы распаковать архив ...
 
Есть вопрос задаваемый уже кучу раз, возможно ли взломать WinRaR пароль. Программы типа Advanced_RAR_Password_Recovery использующие метод грубого подбора это конечно надежно но можно и не дожить до результата, А ведь этот самый пароль где-то зашифрован в самом архиве правильно ? а раз так то его оттуда можно извлечь какимто дескриптором прошу помощи :)

Admiral 17-01-2008 00:35 718775

Цитата:

Цитата natsgull
А ведь этот самый пароль где-то зашифрован в самом архиве правильно ? »

Там только хеш (Hash) пароля (комбинация символов, полученная с помощью безвозвратных математических операций). Когда вводится пароль на открытие/извлечение генерируется хеч на введённый и сравнивается с тем, что есть в архиве.

CyberDaemon 17-01-2008 08:39 718905

Вообще ничего там не сравнивается. Он просто распаковывает архив, используя в качестве ключа введенный пароль, и, если пароль введен некорректно - получает мусор на выходе "Ошибка CRC в зашифрованном файле".
Если, конечно, винрар не старый - алгоритм шифрации в старых версиях был уязвим.

natsgull 17-01-2008 11:01 719023

ом ясно значит грубый подбор

Drongo 17-01-2008 20:29 719462

Цитата:

Цитата natsgull
А ведь этот самый пароль где-то зашифрован в самом архиве правильно »

Давай рассуждать логично, если бы его можно было так легко найти или ломануть, слоило бы его делать?! Овчинка выделки не стоит, в хеше хранится или генерируется ключ, который этот пароль шифрует, а потом дешифрует когда ты его вводишь, так что нужно искать ключ шифрующий пароль а это ещё хуже чем перебирать, ты ведь алгоритма расшифровки не знаешт?! То то и оно... Мой друг пытался справиться с такой проблемой, тоже считал что откроет *.rar в текстовом режиме и там где-то будет пароль, ага уже с блючечком с синей каёмочкой туда его выложили... Придумали переборщики, а больше ничего... Ну можешь попробовать создать архив "exe", с паролем а потом через OllyDbg, посмотреть куда оно идёт за паролем, какая функция то всё делает... ))))) Только...

yurfed 17-01-2008 20:55 719476

natsgull, можно попытаться проследить с помощью дебагера SoftIce (OllyDbg для этого будет малопригоден) что и где пытается сравниваться, тут же можно вытащить алгоритм шифрования и сделать ломалку для запароленых архивов (кстати, так создаются кейгены. Сам алгоритм знать необязательно. Достаточно выдернуть кусок кода сравнения и/или генерации ключа, а запихнуть его в любую симпатичную обложку- задача для первокласника). Правда этого ещё ни у кого не получилось. Во всяком случае, я про такое не слышал. Заодно знать ассемблер на 5 с плюсом.
Уже была подобная тема http://forum.oszone.net/thread-83255.html

DillerInc 17-01-2008 23:11 719570

Что вы тут ещё придумываете с этими отладчиками и процедурами проверки...?
CyberDaemon дал вполне исчерпывающий ответ.WinRAR + пароль >20 символов оставляют один единственный вариант -- брутфорс -- который может продолжаться очень многие годы.

yurfed 17-01-2008 23:45 719580

CyberDaemon
Цитата:

и, если пароль введен некорректно - получает мусор на выходе
Цитата:

Цитата DillerInc
Что вы тут ещё придумываете с этими отладчиками и процедурами проверки...? »

А вот возьми и объясни, каким образом и как ещё, можно определить некорректность пароля?

Это IMHO, хеш идёт в несколько уровней, т.е., определяется хеш хеша, если можно так сказать.

DedAlex 18-01-2008 01:35 719630

yurfed, когда я еще учился, то писал программу для шифрования. Она просто циклически перебирала байты пароля и складывала с байтами файла. Если при расшифровке вводился неправильный пароль, то она отрабатывала, но в файле получался "мусор". И пароль в файле нигде не был записан. Записать в файл CRC незашифрованного файла, после расшифровки сравнить CRC с записанным, вот вам и определение неправильного пароля.

yurfed 18-01-2008 08:51 719720

Цитата:

Цитата DedAlex
Записать в файл CRC незашифрованного файла, после расшифровки сравнить CRC с записанным, вот вам и определение неправильного пароля. »

Вот ты сам и сказал куда нужно было копать в твоей криптографии :) Достаточно усечь момент сравнения CRC и золотой ключик в кармане. Нужно подменить при сравнении ячейку/ячейки памяти (образно говоря) с неправильным CRC на тот, который правильный или правильную копировать в неправильную. После этого любой пароль окажется правильным. Для этого создаётся лоадер, который это и будет делать. Причём криптованный файл ни коим образом не модифицируется. Всё подмена происходит в памяти.

DillerInc 18-01-2008 09:43 719746

Цитата:

Цитата yurfed
Достаточно усечь момент сравнения CRC и золотой ключик в кармане »

...помимо золотого ключика вы будете также иметь нерабочий файл,наполненный мусором.

Я к сожалению не обладаю сейчас точной информацией о реализации в WinRAR'е,но готов поверить CyberDaemon'у,что там ничего не сравнивается,ибо место сравнения является одной из наиболее критичных уязвимостей(достаточно обычно помянять пару байт,чтобы достичь нужного результата).Если бы подобная уязвимость была в WinRAR'е,то его бы вскрывали направо и налево.Однако этого не происходит.И единственное,что есть в наличии -- это программы типа Advanced_RAR_Password_Recovery.

yurfed 18-01-2008 10:16 719769

Цитата:

Цитата DillerInc
...помимо золотого ключика вы будете также иметь нерабочий файл,наполненный мусором. »

Отчего же? Распаковка с правильным CRC, это как раз то, что мы и добиваемся при помощи правильного пароля.
Цитата:

Цитата DillerInc
Если бы подобная уязвимость была в WinRAR'е, »

Последний мой пост был про твой алгоритм защиты, когда ты "ещё учился".
Вообще, всё познаётся в сравнении. Тот же самый архив RAR должен иметь отправную точку, т.е., нужно с чем то сравнить. Другое дело что это организовано у него на высшем уровне.
Думаю вся инфа о пароле находится в первых 102 байтах (для версий 3+), заголовке архива. Именно такой размер получается при архивировании пустого (0 байт) файла. С добавлением пароля его длина увеличивается. При создании архива из однобайтного файла, пароль тот же, размер архива не увеличивается.
Это всего лишь мои догадки

DedAlex 18-01-2008 11:48 719838

yurfed, после шифрования размер архива действительно увеличивается. Но при увеличении пароля размер архива не изменяется. Объяснение увеличению архива есть в документации WinRAR - некоторые поля в заголовке присутствуют, только если файл зашифрован.

P.S. Посмотрите документацию по формату файла WinRAR.

CyberDaemon 18-01-2008 12:33 719873

Цитата:

Цитата yurfed
Отчего же? Распаковка с правильным CRC, это как раз то, что мы и добиваемся при помощи правильного пароля. »

CRC нужна только для того, чтобы понять, что распаковался мусор и сообщить об этом (я вначале процитировал винрар ;) ). Если ты в момент сравнения контрольной суммы полученного с ожидаемым направишь программу по другой ветке (а для этого даже не надо подменять CRC - достаточно просто изменить оператор перехода на противоположный - типа вместо "Переход если ноль" установить "Переход если НЕ ноль" - один байт кода), то... Ну скажет тебе архиватор "Ок, я все распаковал, забирай", ну и заберешь ты мусор :)
Я не знаю алгоритм работы винрара. Я просто предположил, как это должно быть. Кстати, контрольная сумма архивированного файла хранится в заголовке. Легкое движение шестнадцатеричным редактором - и оп-па, правильный пароль уже не подходит :) Т.е. подходить-то он подходит, но РАР считает, что получил ерунду и ругается на ошибку.
Можно, конечно, ради интереса не дать рару стереть неверно расшифрованный файл и посмотреть, что там внутри - но смысла в этом никакого нет.
Да, винрар, прежде чем сказать, что пароль неверный, сначала распаковывает файл полностью. Вопрос: если пароль хранится в заголовке, то зачем распаковывать полностью гигабайтный файл? Из вредности? ;)

yurfed 18-01-2008 12:53 719890

Цитата:

Цитата DedAlex
P.S. Посмотрите документацию по формату файла WinRAR. »

Вот только документация от кого :)
Цитата:

Цитата CyberDaemon
а для этого даже не надо подменять CRC - достаточно просто изменить оператор перехода на противоположный - типа вместо "Переход если равно" установить "Переход если НЕ равно" »

В сложных ситуациях нупить и джампить иногда не выходит. Поэтому и подставляем на выход памяти верный результат.
----------------
Пока не известен алгоритм работы WinRARa, вся эта наша болтовня не стоит "выеденого гроша :)".

CyberDaemon 18-01-2008 14:12 719975

Цитата:

Цитата yurfed
Пока не известен алгоритм работы WinRARa, вся эта наша болтовня не стоит "выеденого гроша ". »

Ну исходники UnRAR открыты. Кто возьмется изучить и разобраться? Мне что-то лень :)

DedAlex 18-01-2008 14:25 719989

yurfed,
Цитата:

Цитата yurfed
Вот только документация от кого »

При установке есть файлик TechNote.txt. Там конечно нету алгоритма архивации, но есть формат файла, и пароль там никоим образом не упоминается.

yurfed 18-01-2008 15:15 720039

Цитата:

Цитата DedAlex
При установке есть файлик TechNote.txt. Там конечно нету алгоритма архивации... »

А тогда весь смысл этой доки? Только коммандная строка и не более.
Цитата:

Цитата CyberDaemon
Ну исходники UnRAR открыты. »

Какой версии?

CyberDaemon 18-01-2008 15:36 720059

yurfed, cейчас на оффсайте ссылка на UnRAR source версии 3.7.8


Время: 11:10.

Время: 11:10.
© OSzone.net 2001-