ICQ: расшифровка MainLocation
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
ICQ: расшифровка MainLocation - 2008-03-12 19:25:40.480000
|
|
|
skalgar
Сообщений: 3
Оценки: 0
Присоединился: 2008-03-06 15:16:08.523333
|
По этой ссылке http://forum.asechka.ru/showthread.php?p=103289 приведен алгоритм расшифровки пароля ICQ из значения MainLocation в реестре. Т.к. я в дельфях не смыслю, по алгоритму (ниже кода) возникает вопрос: в качестве ключа для DES использовать md5 (в тексте не уточнено) от UIN или от ID жесткого диска? Если нет, то от чего? З.Ы. Прошу не предлагать софтину и разных пинчей для доставания паролей. Мне нужно знать алгоритм досканально.
|
|
|
RE: ICQ: расшифровка MainLocation - 2008-03-13 17:05:08.673333
|
|
|
skalgar
Сообщений: 3
Оценки: 0
Присоединился: 2008-03-06 15:16:08.523333
|
Хорошо, т.к. я не вижу, что бы кто-либо из просмотревших людей знает ответ, то задам вопрос немного по-другому. Кто сможет данный код хотя бы разъяснить или перевести на Си++? procedure DecryptPass(dwVolumeSerial: LongWord; lpMainLocation: Pointer; dwMainLocationLen: LongWord; lpszUIN: String); var key: array[0..15] of Byte; md5: TDCP_md5; UIN: LongWord; Cipher: TDCP_des; result: array[0..16] of Byte; L, i, j: Integer; begin try UIN := StrToInt(lpszUIN); except if dwMainLocationLen > 0 then PByte(lpMainLocation)^ := 0; Exit; end; if (dwMainLocationLen <> 8) and (dwMainLocationLen <> 16) then begin if dwMainLocationLen > 0 then PByte(lpMainLocation)^ := 0; Exit; end; md5 := TDCP_md5.Create(nil); md5.Init; md5.Update(dwVolumeSerial, 4); md5.Update(UIN, 4); md5.Final(key); md5.Burn; md5.Free; Cipher := TDCP_des.Create(nil); Cipher.Init(key, 64, nil); FillChar(Result, SizeOf(Result), 0); Cipher.DecryptECB(lpMainLocation^, result); if dwMainLocationLen = 16 then Cipher.DecryptECB(Pointer(LongWord(lpMainLocation)+8)^, result[8]); Cipher.Burn; Cipher.Free; L := StrLen(@Result[0]); if L < 3 then Move(result[0], lpMainLocation, L+1) else begin if (result[((L-2) shr 1)] in [$30..$34]) and (result[((L-2) shr 1)+1] in [$30..$34]) then begin for j := 1 to 2 do for i := (L-2) shr 1 to L-1 do result := result[i+1]; Move(result[0], lpMainLocation^, L-1); end else PByte(lpMainLocation)^ := 0; end; end;
|
|
|
RE: ICQ: расшифровка MainLocation - 2008-03-13 17:18:11.093333
|
|
|
dos 999
Сообщений: 331
Оценки: 0
Присоединился: 2007-12-17 10:49:07.556666
|
В этом коде нехватает самого типа TDCP_md5 полностью юнит в студию =)
|
|
|
RE: ICQ: расшифровка MainLocation - 2008-03-13 18:09:37.936666
|
|
|
skalgar
Сообщений: 3
Оценки: 0
Присоединился: 2008-03-06 15:16:08.523333
|
http://www.delphi32.com/vcl/3266/download,xid,3266.asp тут либа (DCPCrypt) с функциями, использованными в коде 8|
|
|
|
|
|