Pull to refresh

Интересные совпадения. Часть вторая.

Instant Messaging *
Прочитав топик о подозрительности реализации протокола Jabber в приложении Mail.ru Агент, а также комментарии Swappp и naum о присутствующих в модуле интересных строках, я решил проверить, что же там внутри.

Потратив пол часа на поиск утилит и закачку бинарников Mail.ru Агента, я получил листинг со списком некоторых строк, присутствующих внутри файла JABBER_0X2001FACA.DLL. Для удобства читателя, незнакомого с кодом jabber модуля из Miranda IM, приведу сопоставления найденых строк с нашими исходниками:
XML processing (logging)
00032C7C TAG_MAX_LEN too small, ignore current tag jabber_xml.cpp (192)
00032CA8 ATTR_MAX_LEN too small, ignore current tag jabber_xml.cpp (214)
00032CE0 XML: skip <?xml> tag jabber_xml.cpp (343)
00032CF8 XML: Closing </%s> without opening tag jabber_xml.cpp (419)
Base stanza processing (logging)
0002C464 Invalid top-level tag ( only <message/> <presence/> and <iq/> allowed ) jabber_thread.cpp (889)
0002C4AC Invalid top-level tag ( only <iq/> allowed ) jabber_thread.cpp (895)
Login process (logging)
0002C6A8 Requesting TLS jabber_thread.cpp (667)
0002C7D8 after successful sasl jabber_thread.cpp (831)
0002C8AC <iq/> iqIdGetBookmarks jabber_iqid.cpp (1456)
0002C968 <iq/> iqIdGetVcard jabber_iqid.cpp (731)
0002CA8C <iq/> iqIdGetRoster jabber_iqid.cpp (351)
0002E998 Never publish the hash below jabber_secur.cpp (191)
Login process (data)
0002E900 username=\"%s\", realm=\"%s\", nonce=\"%s\", cnonce=\"%s\", nc=%08d, qop=auth, digest-uri=\"xmpp/%s\", charset=utf-8, response=%08x%08x%08x%08x jabber_secur.cpp (156)

Как мы можем видеть, почти все строки (кроме последней) являются отладочной информацией и входят либо в функции для работы с XML, либо в процесс подключения к XMPP-сети. Могу заметить, что остальные части джаббера сильно завязаны на интерфейс windows и/или архитектуру самой миранды.

Также, может быть интересен факт использования в XML потоке одинарных кавычек ['], который имел место и в ветке 0.7 jabber модуля из миранды (в ветке 0.8 используются двойные кавычки ["], и они субъективно более популярны).

Я не являюсь знатоком внутренностей бинарных модулей для SymbianOS, но в списке строк наткнулся также на имена классов, использующихся в нашем коде для поддержки разных методов логина. Судя по наличию аналогичных строк с «классообразным» содержимым и числом в начале, такие строки генерирутся для большинства классов. Обращаю внимание на непоследовательность использования регистра букв в аббревиатурах MD5 и NTLM.
Class names
0002EA18 11TJabberAuth
0002EA30 10TPlainAuth
0002EA4C 8TMD5Auth
0002EA64 9TNtlmAuth

Кстати, интересно, насколько уместна NTLM авторизация на мобильном телефоне :) (Update: говорят уместна и при желании хэш можно вычислить вручную, ну да не в этом суть)

В контексте увиденного интересно звучит комментарий по поводу «да что же можно взять из Миранды»
Мне вот очень интересно, что именно в реализации xmpp было бы полезно «украсть» из миранды? Может последовательность соединения? Да вроде она описана в открытых источниках притом подробно. Может xml-парсер? А зачем он нам, он у нас уже был и использовался. Может структуру плагинов? зачем она нам — у нас своя.

Тут упомянуто именно два находящихся под вопросом компонента протокола и всем известная модульная архитектура Miranda IM. Об остальных частях протокола — ни слова :)

Я не знаю, есть ли наш код внутри Мобильного Агента, или его там нету — однозначно могут сказать лишь авторы самого Агента. Приведенные же факты были собраны исключительно из открытых источников для общего ознакомления с ситуацией. Мои познания в анализе бинарных модулей SymbianOS Довольно скудны, и было бы интересно услышать комментарии Swappp и naum, особенно в свете этой реплики.

P.S. На данный момент с сайта Mail.Ru удалены бинарники бета-версии Агента, также их удаляют с других сайтов. У пользователей, установивших версию 1.15 на телефон происходит автоматическое «обновление» до более старой версии 1.11.
Tags:
Hubs:
Total votes 159: ↑140 and ↓19 +121
Views 7.8K
Comments Comments 96