Думаю когото они интересуют. Дешифрырует QIP Infium/2010 В нового Infium пароли невытаскивает но старые версии работают на ура! 2010 тестил тоже работает на ура! Компилировался на delphi 7, как поведёт себя в других версиях Delphi незнаю Скачать: Code: http://rghost.ru/5571897
2 ka3101 можно оптимальнее написать DeCryptQipInfiumProfile, формат файла не видел но уверен можно обойтись без копирования логина и пароля в динамически выделяемый буфер, а все преобразования проводить прямо в выделенной памяти.
Gar|k, думаю ka3101 тебе ничего не объяснит =D, так как исходники эти он когда-то брал у меня, и они немного кривоваты, а что до новый версий QIP Infium, то там совсем другой алгоритм шифрования, чему я искренне рад, меньше людей пострадает от свеженаштопаных кривых троянцев =)
Ты ошибаешся я у тебя нечего небрал я поменялся с пацаном на фэйк страницы Mail.ru с проверкой на валидность Так то я незнаю в скольких он руках еще побывал. Раз мне он так можно сказать просто достался я его выложил в сеть
не хочу разводить тут демогогию и выкладывать лог переписки с icq (только не говори, что это не твой уин 333357566) но выходит, что так... =)
мдэ я уж обрадовался более менее адекватному человеку, который даже (тут редкость) знает что такое файл маппинг... а оказывается вон чо... ну нужно предупреждать сразу, что это не твои исходники.
Что касаемо алго, раз на то пошло, то он прост: логин и пароль хранятся в виде простенькой структуры: первый байт это длина строки, сразу за ним идет шифрованная строка указанного размера Далее открываем профиль и ищем следующую константу: Code: 0x00 0x02 0x00 0x00 0x00 0x03 0x00 перед ней находится конец шифрованного логина, начало думаю доголаетесь как получит, после ... 0x03 0x00 идет байт длины пароля и сам шифрованный пароль\хэш шифрование тоже ничего сложно не представляет: берем первый символ инкремируем на величину позиции в строке (индексация начинается с 1) и далее NOT, так в цикле до конца строки На делфи примерно так: Code: procedure DeCryptQipInfiumStr(var Hash: String); var i: Byte; begin for i:= 1 to Length(Hash) do Hash[i]:= Char(not(Ord(Hash[i]) + i)); end; PS: поиск по 0x00 0x02 0x00 0x00 0x00 0x03 0x00 не актуален для последних версий QIP Infium
2 alexey-m когда начинал анализ mra.dbs тоже алгоритмы основывались на поиске, но догадаться не сложно что подобные файле представляют из себя какие-то упорядоченные структуры данных. Поэтому вместо того чтобы искать магические цепочки байт по которым можно сделать поиска, нужно искать зависимости. Например ты увидел что длина это один байт перед хешем, а посмотри смещение этого байта может это смещение в числовом виде где-то присутвует в файле? а может оно постоянно если знать начало структуры данных....
Gar|k, сказал же, что алго немного кривой, тогда мне лень было разбирать, из-за нового алго шифрования пришлось поковырять структуру базы профиля инфиума(qip 2010) в принципе, там почти как с паролями всё, и уж точно по-проще, чем с mra.dbs