|
Программирование C / C++ / Visual C++ / Delphi / Visual Basic / ASM / Windows / Pascal |
|
Опции темы | Оценить тему |
23.10.2011, 07:27 | #1 |
Участник
|
Проблема с MD5-авторизацией в ICQ
Доброго времени суток, уважаемые форумчане. Я пишу ICQ-клиент в среде Delphi 7 и недавно столкнулся со следующей проблемой: перестал работать MD5-логин, хотя раньше всё работало, а код я не изменял. Если использовать обычную схему авторизации (без MD5), всё работает отлично, а при MD5-авторизации, сервер присылает в ответ SNAC [17,03], содержащий TLV 8 с кодом ошибки 5 (неверный пароль). Код получения хеша я брал из исходников R&Q:
Код:
FillChar(MD5Digest,SizeOf(TMD5Digest),0); MD5Init(MD5Context); MD5UpdateBuffer(MD5Context,PChar(AuthKey),Length(AuthKey)); MD5UpdateBuffer(MD5Context,PChar(@Password[1]),Length(Password)); MD5UpdateBuffer(MD5Context,PChar(AIM_MD5_STRING),Length(AIM_MD5_STRING)); MD5Final(MD5Digest,MD5Context); |
25.10.2011, 16:00 | #3 |
Участник
|
В SNAC BUCP__LOGIN присутствует TLV MACHINE_INFO (Tag: 76)?
Если нет — добавь. Length: 0.
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR. |
Плюсанул .fry : |
29.10.2011, 19:57 | #4 |
Участник
|
TLV 76 у меня присутствует. Но MD5-авторизация всё равно не работает. Вот что происходит:
Код:
---INCOMING--- 2A 01 F4 4A 00 04 00 00 00 01 ---OUTCOMING--- 2A 01 3D 98 00 0C 00 00 00 01 80 03 00 04 00 10 00 00 ---OUTCOMING--- 2A 02 3D 99 00 17 00 17 00 06 00 00 00 00 00 00 00 01 00 09 XX XX XX XX XX XX XX XX XX // UIN ---INCOMING--- 2A 02 F4 4B 00 16 00 17 00 07 00 00 00 00 00 00 00 0A 32 36 30 37 30 31 35 30 30 36 // AuthKey ---OUTCOMING--- 2A 02 3D 9A 00 74 00 17 00 02 00 00 00 00 00 00 00 01 00 09 XX XX XX XX XX XX XX XX XX // UIN 00 25 00 10 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX // MD5 00 4C 00 00 <-- TLV 76 00 03 00 0A 49 43 51 20 43 6C 69 65 6E 74 // 'ICQ Client' 00 17 00 02 00 06 00 18 00 02 00 05 00 19 00 02 00 00 00 1A 00 02 04 12 00 16 00 02 01 0A 00 14 00 04 00 00 75 37 00 0F 00 02 72 75 // 'ru' 00 0E 00 02 72 75 // 'ru' 00 94 00 01 00 ---INCOMING--- 2A 02 F4 4C 00 60 00 17 00 03 00 00 00 00 00 00 00 01 00 09 XX XX XX XX XX XX XX XX XX // UIN 00 04 00 3F 68 74 74 70 ... 67 3D 72 75 // 'http://www.icq.com/errors/MISMATCH_PASSWD.html?ccode=ru&lang=ru' 00 08 00 02 00 05 // ошибка 5 — "mismatch nick or password" ---INCOMING--- 2A 04 F4 4D 00 00 |