The algorithm to encrypt the password is simply to expand every byte of the password to 2 bytes, swap the higher and lower 4 bits within each byte, xor each byte with A5. For example to encrypt the character "p":
(ASCII is 70 hex):
70 is expanded to 70 00
After the swap the result is: 07 00
XOR with A5: A2 A5
Hence to decrypt it, we will take the odd bytes, XOR with A5, and swap the higher and lower 4 bits.
Take A2
XOR with A5: A2 XOR A5 = 07
Swap: 7 becomes 70.
This tool make use of the WinPcap library and it listen on TCP port 1433 and 2433 and perform the above algorithm to retrieve user name and password.
Почитай разберись и ... посмотри внимательно snifflog.txt
Gray_Wolf
Почитай разберись и ... посмотри внимательно snifflog.txt
С этим то я разобрался, но вот смещение на пароль там вычисляется непонятным для меня образом, и как следствие я не могу понять какие именно байты нужно прогонять через описанный выше алгоритм...
Пароль это набор байтов чередующихся A5 байтом... посмотри внимательно snifflog... Там только в одном месте есть чередующаяся последовательность байтов... вот это и есть пароль... дальше расшифровка по алгоритму:
два байта XORим по A5 байту и свопим младшую и старшую тетраду в первом байте. Что не понятного?
проводя аналогию из твоей ссылки расшифруем значение 'p' зашифрованное 'a2 a5':
1010 0010 1010 0101 - это a2 a5 в двоичной
XOR
1010 0101 1010 0101 - это a5 a5 в двоичной
0000 0111 0000 0000 - 07 00
свопим младшую и старшую тетрады в первом (старшем байте) ... 70 00 - p, а нули это просто расширение до UNICODE...
Последний раз редактировалось takas; 11.09.2009 в 23:01..