Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Tools (http://mangos.ytdb.ru/forumdisplay.php?f=22)
-   -   [DEV]Java sniffer (http://mangos.ytdb.ru/showthread.php?t=7181)

Evgeniy 29.05.2013 09:38

[DEV]Java sniffer
 
Вложений: 2
https://github.com/MinimaJack/JSniffer
для билда 16992,17055

Собирать

забирать:

в sniffer.properties настройки.
Код:

sniffer.networkDeviceIndex = 1
По умолчанию используется второй (отсчет от нуля ) интерфейс
для изменения настроек скопировать sniffer.properties из исходников и положить рядом с джарником. Ну и изменить настройки.
sniffer.log.enablePkt = 1 - сохранять лог в пкт формат(версия 3.1), по умолчанию включен
sniffer.log.enableTxt = 0 - сохранять лог в тестовой формат, по умолчанию выключен

Архив со всем добром: Вложение 1217

Запускать: run.bat
Для запуска:
  • Необходима jre1.7
  • Необходимо иметь установленую http://www.winpcap.org/ pcap библиотеку.
  • Необходимо запускать wow.exe, либо в лаунчере указать на запуск 32 битной версии вова
  • необходимо запускать снифер с админскими правами

Измененная версия WoWPacketViewer-а от TOM_RUS для поддержки пкт 3.1 Вложение 1214. Парсеры ес-но надо обновлять вручную.
Теперь можно просмотреть тринити парсером https://github.com/TrinityCore/WowPacketParser

ззы проверил на 64 битной Windows 7601 в режиме запуска как 32, так 64 битной версии программы.

Build
17055 sniffer.properties

Огромное спасибо
YuruY за тестирование.
RomanRom2 за помощь в разработке.

Evgeniy 06.06.2013 08:57

Вложений: 2
Цитата:

Сообщение от YuruY (Сообщение 31521)
..пусто пока.(

после закрытия вова, да и переодически после каждого закрытого соединения
в логе будет что то типо такого:
Код:

08:54:59.012 [main] INFO  o.j.sniffer.handler.RawPacketHandler - Close Connection: 195.12.246.241 3724-192.168.1.101 57383
08:55:09.218 [main] INFO  o.j.sniffer.handler.RawPacketHandler - Close Connection: 195.12.246.239 3724-192.168.1.101 57384

Вложение 1209 пример
Запускать с административными правами.
Что бы что то появилось, минимум необходимо зайти до выбора персонажа.

Evgeniy 10.06.2013 16:15

Имеет ли смысл встраивать скриптование для обработки пакетов?
То есть либо, обработка пакета, либо запись дополнительных данных в лог файл, да и в общем то любых действий.

RomanRom2 10.06.2013 16:46

нет, не имеет. пусть снифер занимается своим делом. обработку нужно делать в оффлайне.

единственный тип обработки мне приходит на ум - это то, что делал вад в свое время: радар детектор. приложение показывало видимые объекты вокруг в окошке.

Evgeniy 10.06.2013 16:52

Цитата:

Сообщение от RomanRom2 (Сообщение 31552)
нет, не имеет. пусть снифер занимается своим делом. обработку нужно делать в оффлайне.

единственный тип обработки мне приходит на ум - это то, что делал вад в свое время: радар детектор. приложение показывало видимые объекты вокруг в окошке.

я и намекал, что любых действий...радар также возможен =)))
Конкретно о заполнении опциональных данных в снифах.

Konctantin 10.06.2013 17:35

Кстати, от куда можно причитать ConnectionId (никак не могу найти)
Сейчас вот тестю свой инжектор, все пишется, а вот ConnectionId незнаю от куда вытащить.

ЗЫ. И еще один вопрос к знающим людям.
Для записи в файл я использую WinApi функции и вызываю их по оффсету в клиенте.
Может есть другой способ определить адрес импортированной функции?

Evgeniy 10.06.2013 17:41

Цитата:

Сообщение от Konctantin (Сообщение 31555)
Кстати, от куда можно причитать ConnectionId (никак не могу найти)
Сейчас вот тестю свой инжектор, все пишется, а вот ConnectionId незнаю от куда вытащить.

без понятия как там в клиенте...у меня хеши джава объектов( грубо говоря хеш с портов и йп). Роман говорил, что подойдет и обычная нумерация. По идее, что бы отделить пакеты от разных серверов, подойдет что угодно.

RomanRom2 11.06.2013 10:44

Цитата:

Сообщение от Evgeniy (Сообщение 31556)
По идее, что бы отделить пакеты от разных серверов, подойдет что угодно.

из разных коннектов. да, важно что бы эта нумерация не пересекалась в рамках одного снифа. а какие именно значения там будут - это не важно. важно, что бы они были уникальными.

Evgeniy 11.06.2013 16:17

Обновил снифер для запуска пользовательских скриптов.
Скрипты на джава.
Папка со скриптами script/ (Обновился конфиг, добавился путь к хмл описанию скриптов)
scripts.xml - описание скриптов....йд скрипта, класс и путь к файлу скрипта.
Для примера написаны 2 скрипта:
TestScript.java - имплеминирует два интерфейса ScriptHandler и Runnable, означает что у него будет вызван(и должен существовать) метод initScript, Runnable - что скрипт будет запущен в другом потоке(будет выполнен метод run). В самом методе ничего интересного нет: в цикле отображается системное время 5 раз с промежутком в одну секунду.
UiLogger.java - имплемениерует PacketLogHandler - что означает, что данный класс будет добавлен в цепочку логеров на получение всех пакетов путем вызова метода:
Код:

public void onDecodePacket(NetworkChannel channel, Direction direction, Integer size,
            Integer opcode, byte[] data, int frame);

Конкретно данный класс создает гуи окно, показывает счетчик пакетов и по нажатию на закрытие(крестик) окна - отключает снифер.

Скрипты загружаются из хмл, но компилируются все вместе. Из-за чего ошибка в одном скрипте может не дать работать остальным.
Для работы со скриптами, а именно компиляции в рантайме, необходимо наличие установленой JDK. Для тех у кого нет JDK - скрипты работать не будут и в логе будет предупреждение.

RomanRom2 11.06.2013 16:29

компиляцию в рантайме, по моему, может только дотнет делать. Nomad в свое время делал это в своем RunServer и мне показывал как это круто :)

Evgeniy 11.06.2013 16:30

Цитата:

Сообщение от RomanRom2 (Сообщение 31569)
компиляцию в рантайме, по моему, может только дотнет делать. Nomad в свое время делал это в своем RunServer и мне показывал как это круто :)

Ну джава и с# близки, компиляция в рантайме работает. Значит джава тоже может.:thank_you:

RomanRom2 11.06.2013 16:35

да, мне мои джава-гуру-пацаны рассказали, джава тоже может, причем lдаже нативно. javax.script.*

Evgeniy 13.06.2013 11:53

кто то пользуется? Или так ....есть и ладно?

Evgeniy 13.06.2013 20:48

В шапке обновил конфигурацию для билда 17055

RomanRom2 14.06.2013 23:27

пока нет. чото как то не улыбает выключение ASLR... надо что то думать.

Evgeniy 16.06.2013 10:50

Вложений: 1
Теперь можно не отключать ASLR. В первом посте обновленный конфиг и release build.
Для включения ASLR удалить ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Session Manager\Memory Management\MoveImages
либо импортировать reg файл из Вложение 1218 (запустить и импортировать)

Evgeniy 20.06.2013 09:06

Вопросы, предложения, пожелания...
Пока из насущных проблем - написание С библиотеки для получения ключа под вайном. Pcap и Java работают замечательно, но вот с кодом на С у меня проблемы. Если кто желает помочь проекту в этом нелегком труде, буду только рад.
Имеет ли смысл создавать гуи?
Автоматическая загрузка снифов на сервера по фтп( либо другому протоколу)?

RomanRom2 20.06.2013 11:07

предложения:
1. автоматический скан и получение ключа
2. полный инсталлер

гуи не надо, аплоад не надо.

Evgeniy 20.06.2013 11:33

Цитата:

Сообщение от RomanRom2 (Сообщение 31585)
предложения:
1. автоматический скан и получение ключа
2. полный инсталлер

гуи не надо, аплоад не надо.

Поконкретней...что значит автоматический скан?

RomanRom2 20.06.2013 12:00

я вроде рассказывал в скайпе:
запускается снифер, выясняет билд клиента (например 17055).
читает свой конфиг и ищет запись типа
17055=F823AADC
ну типа адрес, где ключ читать.

если полученное значение равно ничему, то записи такой нет, значит надо запустить скан и найти адрес для этого билда.

таким образом в инишнике по сути копятся записи
17000=AABBCCDD
17020=BBCCDDEE
17055=CCDDEEFF

ну так по крайней мере сделано было у меня в снифере.
еще иногда оказывалось, что адрес был записан неверно или еще по каким причинам надо адрес получить заново. поэтому можно было пересканить принудительно, запустив снифер с определенным ключиком. можно конечно из инишника запись удалить, но скан у нас был насколько быстрым, что я запускал его каждый раз и не парился :)

YuruY 22.09.2013 05:44

Под текущую реву 5.4.0 есть у кого сниффер?


Текущее время: 20:08. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS