"Алекс Федченко. Описание механизма функционирования парольных кэшей Windows v4.xx" - читать интересную книгу автора while (datalen--) { p2+=x->body[++p1];
t=x->body[p1]; x->body[p1]=x->body[p2]; x->body[p2]=t; t+=x->body[p1]; *((byte*)data)++^=x->body[t]; }; x->c1=p1; x->c2=p2; } RC4_table инкапсулирует в себя все данные необходимые для выполнения шифрования (все поля и процедуры получены в результате анализа кода MSPWL32.dll, стандарт я в руках не держал). init_RC4_table() осуществляет первичную настройку таблицы по ключу key, а use_RC4_table выполняет наложение получающейся гаммы на поток данных data длинной datalen. Hадеюсь, что все вышеприведенное прозрачно, поэтому перейдем к MD5. Выполнение одного этапа свертки выполняется следующей функцией: MD5_FF 1,2,3,4, 0, 0D76AA478h, 7 ; Round 1 MD5_FF 4,1,2,3, 1, 0E8C7B756h, 12 MD5_FF 3,4,1,2, 2, 0242070DBh, 17 MD5_FF 2,3,4,1, 3, 0C1BDCEEEh, 22 MD5_FF 1,2,3,4, 4, 0F57C0FAFh, 7 MD5_FF 4,1,2,3, 5, 04787C62Ah, 12 MD5_FF 3,4,1,2, 6, 0A8304613h, 17 MD5_FF 2,3,4,1, 7, 0FD469501h, 22 MD5_FF 1,2,3,4, 8, 0698098D8h, 7 MD5_FF 4,1,2,3, 9, 08B44F7AFh, 12 MD5_FF 3,4,1,2, 10, 0FFFF5BB1h, 17 MD5_FF 1,2,3,4, 12, 06B901122h, 7 MD5_FF 4,1,2,3, 13, 0FD987193h, 12 MD5_FF 3,4,1,2, 14, 0A679438Eh, 17 MD5_FF 2,3,4,1, 15, 049B40821h, 22 MD5_GG 1,2,3,4, 1, 0F61E2562h, 5 ; Round 2 MD5_GG 4,1,2,3, 6, 0C040B340h, 9 MD5_GG 3,4,1,2, 11, 0265E5A51h, 14 MD5_GG 2,3,4,1, 0, 0E9B6C7AAh, 20 MD5_GG 1,2,3,4, 5, 0D62F105Dh, 5 MD5_GG 4,1,2,3, 10, 002441453h, 9 MD5_GG 3,4,1,2, 15, 0D8A1E681h, 14 MD5_GG 2,3,4,1, 4, 0E7D3FBC8h, 20 MD5_GG 1,2,3,4, 9, 021E1CDE6h, 5 MD5_GG 4,1,2,3, 14, 0C33707D6h, 9 MD5_GG 3,4,1,2, 3, 0F4D50D87h, 14 MD5_GG 2,3,4,1, 8, 0455A14EDh, 20 MD5_GG 1,2,3,4, 13, 0A9E3E905h, 5 MD5_GG 4,1,2,3, 2, 0FCEFA3F8h, 9 MD5_GG 3,4,1,2, 7, 0676F02D9h, 14 MD5_GG 2,3,4,1, 12, 08D2A4C8Ah, 20 MD5_HH 1,2,3,4, 5, 0FFFA3942h, 4 ; Round 3 MD5_HH 4,1,2,3, 8, 08771F681h, 11 |
|
|