заметка рассчитана на профессиональных
пользователей.
Информация касатеся только Java-чата фирмы
Volano, чаты других производителей возможно работают по иному протоколу, хотя
принцип обмена данными вероятно тот же. Приведенная информация добыта никак не из
документации только методом отслеживания соеденении также TCP пакетов. Применялись такие
инструменты как IP-Tools v2.07 также Network Spy v2.0 (http://network-spy.com/netspy.exe
).
Фрагмент HTML кода вставляющий апплет:
Как наблюдаем в качестве параметра передается имя группы чатов
MTR Chat Server. Помимо того,
с сервера загружается файл ресурсов english.txt (посмотреть). На сервере
также имеется франкоязычный аналог french.txt (посмотреть). Данных файлы
содержат настройки и строковые константы апплета.
Просмотрев файл настроек мы нашел еще несколько файлов (указанных в
english.txt ), содержимое
которых возможно покажется также занимательным: BannerPlayer.txt (список баннеров,
которые будут загружаться в апплет), LogoPlayer.txt (ссылка на эмблему, отображаемую на
передней панели апплета), version.html, help.html, inde.htm , unable.html, document.html, host.html (руководства
пользователя, версии чата, сообщение об погрешности также др.).
Ну самый интересный файл это
конечно password.html. К сожалению просто так получить
доступ к нему невозможно. Ежели мне удастся его прочитать, мы выставлю тут ссылку на
него.
Исходя из разбора файла english.txt разрешено сделать
вывод о том, что в чате существуют пользователи с админскими правами, также им
доступны такие операции как удаление также блокировка пользователей, только похоже
вероятно удаление сообщений. Это видно из следующего фрагмента файла
english.txt :
Кроме того, видно что в чате существует регистрация а также
зарегестрированные ники защищенные паролем. У зарегестрированных
пользователей существует профайл.
После запуска, апплет чата ведет общение с хостом на котором
расположен сервер чата (для данного чата это 193.124.133.54).
Общение ведется по TCP протоколу. Сокет раскрывается один однажды
при запуске апплета также закрывается при завершении его работы. Таким
образом local также remote порты остаются постоянными на протяжении сеанса
работы. Апплет открвает сокет на 8000 порту
сервера.
Здесь приведены все пакеты входа в группу
чатов (собственно изобретение апплета) также выход из группы чатов (закрытие апплета).
Файл в формате Network Spy v2.0.
Приведу дамп основного пакета запроса на вход в группу чатов (этот пакет отсылается
аплетом на 8000 порт сервера):
Серым цветом отмечен заголовок пакета.
Далее движется тело пакета. Тело состоит из текстовых строк в незашифрованном виде.
Каждая строка начинается с указателя длины строки (отмечено розовым цветом).
Белоснежным цветом отмечены байты, назначение которых мы никак не осознал.
Как мы наблюдаем при инициализации соединения, апплет отсылает следующую
информацию:
1. COM.volano.Access - возможно это запрос на доступ
пользователя к чату. Все запросы апплета начинаются на
COM.volano. , только позже точки следует команда которую вызывает
апплет (в данном случае Access).
2. MTR.Chat.Server - Имя группы чатов к которым мы
присоединяемся (эта строка указывалась в параметрах апплета, при вызове его из
HTML странички - см. выше)
В возражение на этот запрос сервер присылает ответный пакет, основное сущность
которого - перечень активных комнат чата:
Названия комнат перечисляются в том бла бла формате что также было описано выше: двухбайтовая длинна строки также сама строка. Но в конце каждого названия горницы идут три байта C3 90 5F назначение которых непонятно.
После того как пользователь "тыкнул" в одну из комнат чата (но еще никак не вошел в
нее), апплет высылает на сервер последующий пакет:
Как наблюдаем перечень содержит в себе массу интересной информации, в том числе
IP адреса чатлан. Разберем все по распорядку:
1. COM.volano.bg - имя команды которую высылал апплет.
Вероятно сервер просто дублирует ту команду которая вызывалась для того дабы
клиент знал в возражение на какой именно запрос пришел этот пакет.
2. 00 00 00 04 - снова никак не понятно
что такое. Скорее всего это пересылается какой-то счетчик (целое 4-байтовое
число). Обратим забота на то, что во всех пакетах присутствуют данные 4 байта, но
значение завершительного пропорционально числу информации, присылаемой
пользователю. Когда апплет высылал название горницы куда хочет войти
юзер, этот счетчик был равен 1, в какое время сервер присылает перечень пары чатлан,
находящихся в горнице - счетчик равен 4, только в какое время сервер высылал перечень комнат
(их возле 40-ка) - счетчик был равен даже 32h.
3. ENGLISH.CHAT - название горницы перечень пользователей
которой мы приобретаем плюс непонятные байты C3 90 5F.
4. 00 01 00 00 00 01 00 00 00 00 00 02 - снова непонятно что, хоть последее количество возможно
означает число юзеров в комнате.
5. Edward - ник юзера, Cooking more apple pie
- так называемый профайл пользователя (вводится при входе пользователя
в чат), 64.209.99.139 - IP адрес пользователя (пока непонятно
зачем он нужен апплету, ведь информация все равно вся движется чрез сервер), далее
следует пара значения false назначение которых непонятно, может
быть это какие-то настройки пользователя либо его статус.
6. Glock также т.д. - ник пользователя также все такое бла бла как также у
первого, за исключением того что строка профайла пустая (профайл вводить
необязательно).