добрый день! я учусь программировать на делфи, но совсем не знаю синтаксиса Си... нужен перевод этого кода на паскальный (или хотябы расписать по пунктам что тут делается) #define AIM_MD5_STRING "AOL Instant Messenger (SM)" /* calculate md5-hash to send to server */ md5_init(&state); md5_append(&state, (const md5_byte_t *)authkey, strlen(authkey)); md5_append(&state, (const md5_byte_t *)passwd, strlen(passwd)); md5_append(&state, (const md5_byte_t *)AIM_MD5_STRING, strlen(AIM_MD5_STRING)); md5_finish(&state, (md5_byte_t *)auth_hash); /* Now we ready send to server auth_hash array (16 bytes long) */ этот код подготавливает md5 хеш пароля для безопасного логина в icq AOL Instant Messenger (SM) - необходимая константа authkey - случайная строка, которая дается сервером обе эти вещи учавствуют в хешировании пароля. Спасибо.
Это всеголишь заголовочный файл типа *.h в котором описаны константы и функции. Сами функции поищи в файле с такимще названием но расширением или .c или .cpp
да нет... тут идет вызов только стандартных функций МД5 крипта, все остальное - нужная последовательность действий... вот делфовый код из исходников крысы... но не понятно все-же... например что такое MD5Digest : TMD5Digest; MD5Context : TMD5Context; и откуда оно берется procedure TicqSession.parseAuthKey(snac:string); var I : Integer; MD5Digest : TMD5Digest; MD5Context : TMD5Context; key : String; sendKey : String; begin i := 1; key := getWNTS(snac, i); FillChar(MD5Digest, sizeOf(TMD5Digest), 0); // for I := 0 to 15 do // Byte(MD5Digest) := 0; MD5Init(MD5Context); MD5UpdateBuffer(MD5Context, PChar(key), length(key)); MD5UpdateBuffer(MD5Context, PChar(pwd), length(pwd)); MD5UpdateBuffer(MD5Context, PChar(AIM_MD5_STRING), length(AIM_MD5_STRING)); MD5Final(MD5Digest, MD5Context); sendKey := ''; for I := 0 to 15 do sendKey := sendKey + MD5Digest; // sendFLAP( LOGIN_CHANNEL, #0#0#0#1 if saveMD5Pwd then key := TLV($4C, '') else key := ''; sendSNAC( $17, $02, TLV(1, myinfo.uinAsStr) +TLV($25, sendKey) // By Rapid D +TLV(3, 'ICQ Inc. - Product of ICQ (TM).2003b.5.56.1.3916.85') +TLV($16, word($010A)) +TLV($17, word($0002)) +TLV($18, word($0038)) +TLV($19, word($0001)) +TLV($1A, word($0f4c)) +TLV($14, integer($55)) +TLV($E,'us') +TLV($F,'en') +key ); notifyListeners(IE_loggin); end; может кто-то знает алгоритм подготовки icq хеша? автор программы icq.message.logger утверждает что это md5 (соль + пароль + константа), но мне кажется он сложнее... судя по этим функциям на Си и Делфи
Кликни держа ctrl на tmd5digest и узнаешь, походу это просто сложный тип Там мд5, но мд5 не пароля, а пароля с солью в изощренной форме
контрал-клики ничего не дают про изощренную форму в курсе, ее и пытаемся понять! что в этом примере, что в начале на Си - одно и то же делается, вопрос - что!?