Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент > Копаем клиент

Важная информация

Копаем клиент Копаем клиент

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.05.2011, 18:39   #1
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию Как из данных получить опкод?

Написал прокси сервер для вов. Все работает, но нужно сделать запись в файл. Напоролся на проблему при определении опкода. Я думал что опкод - первый 4 байта в данных, которые мы передаем, но это не так - получаю чистый бред(имеется снифф в 4.1.0 для проверки). Как из данных получить опкод???
Lordronn вне форума   Ответить с цитированием
Старый 10.05.2011, 19:00   #2
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Размер опкода равен 2 байтам если пакет от сервера клиенту, и 4 байта если от клиента серверу.
Более того, первым идет 2 байта длина пакета (возможно 3 байта если 8 бит установлен в 1)

Последний раз редактировалось Йоха; 10.05.2011 в 19:02.
Йоха вне форума   Ответить с цитированием
Старый 10.05.2011, 19:13   #3
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

в альфе вот например опкод в обе стороны int32 был.
йоха не сказал самого главного - длина пакета и опкод - это заголовок пакета. заголовки шифруются сессионым ключем. без дешифрации и будет "бред".
а зачем тебе опкод во время снифинга? пиши весь трафик без разбора (формат RAW) и выдирай ключ. мы потом этот raw расшифруем в pkt.
RomanRom2 вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Lordronn (10.05.2011), Йоха (10.05.2011)
Старый 10.05.2011, 19:21   #4
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
а зачем тебе опкод во время снифинга? пиши весь трафик без разбора (формат RAW) и выдирай ключ. мы потом этот raw расшифруем в pkt.
Кстати сейчас некоторые проблемы с расшифровкой raw файлов. Дело в том что клиент может по сто раз открывать/закрывать соединение с основным потоком данных. нпример при входе/выходи из инста, бг или телепорте на другой континет. Для определения контекста соединения необходимо отслеживать момент установки/разрыва соединения. Без этого расшифровка невозможна.

Я у себя в raw снифере вставлял дополнительно в выходной файл пустые пакеты, по которым конвертер в пкт определял что соединение закрыто.
А если такого не делать, то конвертер не узнает когда нужно закрывать контекст и когда создавать новый
Йоха вне форума   Ответить с цитированием
Старый 10.05.2011, 19:45   #5
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Я верно понимаю:
в dataLength пишем длинну данных, которые проходят через прокси, а в byte[dataLength] data - сами данные. Без каких либо манипуляций с ними.

Цитата:
в альфе вот например опкод в обе стороны int32 был.
йоха не сказал самого главного - длина пакета и опкод - это заголовок пакета. заголовки шифруются сессионым ключем. без дешифрации и будет "бред".
а зачем тебе опкод во время снифинга? пиши весь трафик без разбора (формат RAW) и выдирай ключ. мы потом этот raw расшифруем в pkt.
Для меня проэкт носит обучающий характер, по этому был бы благодарен за информацию о том, как с помощью ключика расшифровываются эти данные. Где-то слышал что для этого используется SHA256, но не уверен

Lordronn вне форума   Ответить с цитированием
Старый 10.05.2011, 19:48   #6
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

тут есть практически все по этому поводу : http://мангос.рф/showthread.php?t=419
Йоха вне форума   Ответить с цитированием
Старый 10.05.2011, 21:42   #7
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
Кстати сейчас некоторые проблемы с расшифровкой raw файлов.
во многом поэтому я разные сессии пишу в отдельные файлы. и не поверите - никаких проблем
(добавлено) и еще, кажется, это легко отслеживается по опкодам типа
SMSG_CONNECT_TO = $050D;
CMSG_CONNECT_TO_FAILED = $050E;
SMSG_SUSPEND_COMMS = $050F;
CMSG_SUSPEND_COMMS_ACK = $0510;
SMSG_RESUME_COMMS = $0511;
CMSG_AUTH_CONTINUED_SESSION = $0512;
CMSG_DROP_NEW_CONNECTION = $0513;
не знаю как они в мангосе называются (вроде не так).

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Я верно понимаю:
верно.

Цитата:
Сообщение от Lordronn Посмотреть сообщение
как с помощью ключика расшифровываются эти данные
точно так же как и в сервере. обсолютно.


Последний раз редактировалось RomanRom2; 10.05.2011 в 21:50.
RomanRom2 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Lordronn (10.05.2011)
Старый 10.05.2011, 22:47   #8
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
...
понимаю. мой первый релиз снифера тоже был с "красивым" выводом в консоль, только тогда мы с мунчей "охренели" от того, сколько там всего ходит, оказывается. только я быстро понял, что это лаги всё, не нужно это. ошибки в проксе приводят к разрыву соединения и мои геймеры-сниферы ругались по этому поводу матом. да, прямо изо рта. переделал на сбор raw и потом спокойно конвертил в оффлайне.
^ this! Я тоже по этому поводу спорил с Konctantin регулярно.
LordJZ вне форума   Ответить с цитированием
Старый 10.05.2011, 23:46   #9
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

У меня верный сессион адрес или нет? А то читаю и получаю одни нули

Код:
0x00D03F14
Lordronn вне форума   Ответить с цитированием
Старый 11.05.2011, 08:24   #10
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

какая ОС ?
Йоха вне форума   Ответить с цитированием
Старый 11.05.2011, 09:10   #11
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Винда СП3. Я передвигаюсь к этому адресу и читаю 40 байт и получаю нули. Возможно надо еще что-то?

ПС: ключ сессии есть всегда в памяти или он генерируется лишь при приходе опр. пакета???
Lordronn вне форума   Ответить с цитированием
Старый 11.05.2011, 09:19   #12
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

какая ошибка при этом ?

дебаг привелегию установил ?

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

Последний раз редактировалось Йоха; 11.05.2011 в 09:25.
Йоха вне форума   Ответить с цитированием
Старый 11.05.2011, 09:47   #13
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Цитата:
какая ошибка при этом ?
никакой. Просто все 40 элементов байтового массива равен нулю

Цитата:
дебаг привелегию установил ?
сделал и с привелегией для сниффера - также нули

Цитата:
я читаю ключ из памяти как только приходит 3 пакет. К этому времени клиент уже должен быть готов расшифровывать заголовки, соответсвенно криптосистема инициализирована и готова к использованию.
Я пытался прочитать после запуска и в меню выбора персонажа - ничего. Сейчас попытался прочитать на выборе реалма(все они в дауне из-за проф. работ) - также
Lordronn вне форума   Ответить с цитированием
Старый 11.05.2011, 09:48   #14
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
никакой. Просто все 40 элементов байтового массива равен нулю
это весьма странно, точно ReadProcessMemory завершается успешно ?

Цитата:
Сообщение от MSDN
If the function succeeds, the return value is nonzero
If the function fails, the return value is 0 (zero)
Йоха вне форума   Ответить с цитированием
Старый 11.05.2011, 09:54   #15
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Это не оно?
http://filebeam.com/ab1cef2f12cfcd42...3ec24cd111.jpg
HuntsMan вне форума   Ответить с цитированием
Старый 11.05.2011, 10:01   #16
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Я использую портированую функцию для C#. Почерпнул отсюда

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 15 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.


Получилось прочитать!!!! Я читаю 40 байт с адреса
Код:
0x00D03F14
Прочитал в меню ввода логина и пароля. Теперь надо дождаться пока пройдут тех работы и сниффануть. Надеюсь все верно и RomanRom2 сможет расшифровать его
Lordronn вне форума   Ответить с цитированием
Старый 11.05.2011, 11:02   #17
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Я использую портированую функцию для C#. Почерпнул отсюда

*** скрытый текст ***

Получилось прочитать!!!! Я читаю 40 байт с адреса
Код:
0x00D03F14
Прочитал в меню ввода логина и пароля. Теперь надо дождаться пока пройдут тех работы и сниффануть. Надеюсь все верно и RomanRom2 сможет расшифровать его
var key = Memory.ReadBytes(Memory.ReadUInt(0x00D03F14) + 0x508, 40);
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Lordronn (11.05.2011)
Старый 18.05.2011, 15:49   #18
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Ну вот побегал чуток для теста. Вот рав, расшифруйте пожалуйста.
Вложения
Тип файла: rar 14007_2011-05-18_15-24-15-5211_3.0.rar (619.3 Кб, 9 просмотров)
Lordronn вне форума   Ответить с цитированием
Старый 18.05.2011, 17:40   #19
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

жаль что в снифе несколько сессий подряд. без знаний значений опкодов расшифровать будет невозможно.
RomanRom2 вне форума   Ответить с цитированием
Старый 18.05.2011, 20:34   #20
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

если я все правильно понимаю, каждая сессия заканчивается опкодом 0x404D направление: клиент-сервер (для билда 14007)
ну а открывается соответственно опкодом 0x4F57 направление сервер-клиент, хотя это не опкод, а первые два байта фразы "WORLD OF WARCRAFT CONNECTION - " ...

Последний раз редактировалось Йоха; 18.05.2011 в 20:51.
Йоха вне форума   Ответить с цитированием
Старый 18.05.2011, 23:55   #21
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
...
ну а открывается соответственно опкодом 0x4F57 направление сервер-клиент, хотя это не опкод, а первые два байта фразы "WORLD OF WARCRAFT CONNECTION - " ...
Лучше туда писать нули вместо опкода. Алсо, http://ru-mangos.ru/showthread.php?t=4240
LordJZ вне форума   Ответить с цитированием
Старый 19.05.2011, 02:37   #22
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
если я все правильно понимаю, каждая сессия заканчивается опкодом 0x404D направление: клиент-сервер (для билда 14007)
ну а открывается соответственно опкодом 0x4F57 направление сервер-клиент, хотя это не опкод, а первые два байта фразы "WORLD OF WARCRAFT CONNECTION - " ...
это сегодня. завтра поменяются опкоды (значения). послезавтра поменяются пакеты (порядок).
это всё build depended. нужно что бы так не было. не знаю, класть какой нибудь опкод FFFF к примеру, или нули. ну какой то маркер надо, если вам так принципиально все сессии класть в один файл.
RomanRom2 вне форума   Ответить с цитированием
Старый 19.05.2011, 08:33   #23
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
Лучше туда писать нули вместо опкода. Алсо, http://ru-mangos.ru/showthread.php?t=4240
это же raw трафик, туда ничего не пишется. Все так как пришло на сокет. В pkt файле там нули пишу

Добавлено через 2 минуты
Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
это сегодня. завтра поменяются опкоды (значения). послезавтра поменяются пакеты (порядок).
это всё build depended. нужно что бы так не было. не знаю, класть какой нибудь опкод FFFF к примеру, или нули. ну какой то маркер надо, если вам так принципиально все сессии класть в один файл.
я ж говорил, что в своем raw снифере вставлял в выходной файл пустые чанки - это был признак закрытия соединения. А новое соединение отлавливается легко по строке ip : port - socket handle(которая пишется в поле optional data у каждого чанка), если в текущей коллекции активных сокетов нет такой строки, то значит открылось новое соединение.

Вполне себе универсальное решение -)

Последний раз редактировалось Йоха; 19.05.2011 в 08:35.
Йоха вне форума   Ответить с цитированием
Старый 19.05.2011, 11:08   #24
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

я тут сконвертировал снифы классика из пкт2 в пкт3, вместо 12 гигов получилось 15. представляю, сколько твои снифы будут занимать места, если в оптДата КАЖДОГО чанка класть строку iport (12.34.56.78:1234 - по меньшей мере 16 байт. а там еще и socket handle какой то...). жесть это как минимум расточительство, как максимум - это неправильно, не по феншую. вы неправильно используете преднозначение поля оптДата.

пустой чанк - вот это правильно. но теперь нужно выяснить, что такое "пустой чанк". маркированный каким то образом, я так понимаю.

я все же настаиваю на использовании какого нибудь специализированного опкода, например "минус еденица" (FFFF т.е.), т.к. "ноль" по идее уже "занят" - NULL_ACTION.

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

prototype - своего рода metadata, описание полей/методов/свойств объекта, использующихся в протоколе. в нашем протоколе PKT 3.0 поле optData не может использоваться для работы этого самого протокола.
RomanRom2 вне форума   Ответить с цитированием
Старый 19.05.2011, 11:23   #25
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

А может просто в чанк raw 3.0 добавить новое поле connectionid, и соединения считать по нему?
HuntsMan вне форума   Ответить с цитированием
Старый 19.05.2011, 11:33   #26
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

зачем? формат менять уже нельзя.
можно еще к опкоду FFFF использовать длину чанка FFFF, означающую буквально следующее: "прочитано -1 байт из сокета", что почти соответствует действительности, когда сессия заканчивается
RomanRom2 вне форума   Ответить с цитированием
Старый 19.05.2011, 11:40   #27
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Йоха Посмотреть сообщение
это же raw трафик, туда ничего не пишется. Все так как пришло на сокет. В pkt файле там нули пишу
...
В таком случае я не понимаю о чем спор. Если в raw пишутся данные с нескольких соединений, то я не вижу способов расшифровать такой дамп без порядковых номеров соединений (1,2,3,4,...) для каждого пакета, даже если знать границы соединений. Ведь состояния ARC4 у всех соединений разные. Номер соединения в данный момент можно хранить только в optData, поэтому универсального конвертера из raw в не-raw формат существовать не может. Я заблуждаюсь?
LordJZ вне форума   Ответить с цитированием
Старый 19.05.2011, 11:50   #28
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

блин, там же несколько соединений ОДНОВРЕМЕННО ...
надо думать...

сорри, у меня просто свежи воспоминания 3.3.5, когда соединения были последовательными.
RomanRom2 вне форума   Ответить с цитированием
Старый 19.05.2011, 11:54   #29
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от LordJZ Посмотреть сообщение
В таком случае я не понимаю о чем спор. Если в raw пишутся данные с нескольких соединений, то я не вижу способов расшифровать такой дамп без порядковых номеров соединений (1,2,3,4,...) для каждого пакета, даже если знать границы соединений. Ведь состояния ARC4 у всех соединений разные. Номер соединения в данный момент можно хранить только в optData, поэтому универсального конвертера из raw в не-raw формат существовать не может. Я заблуждаюсь?
все верно, необходимо что бы каждый чанк имел признак по которому можно было бы определить его принадлежность к конкретному номеру соединения. "Чистый" raw трафик не расшифровывается.
Я использую строку.

По поводу строки в optional data. Во первых формат не накладывает ограничений на содержимое этого поля, и хранение там строки абсолютно легально. К тому же никто не мешает после конвертации в pkt убрать вообще эти данные, тем самым уменьшить размер получаемого файла.

Да и вообще по большому счету не вижу смысла делать сниф в рав формат. Если уж руки и мозг позволяют написать снифер до состояние raw, то там недолго прикрутить и расшифровку и получается уже полноценный снифер в pkt -)))

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

Последний раз редактировалось Йоха; 19.05.2011 в 12:04.
Йоха вне форума   Ответить с цитированием
Старый 19.05.2011, 12:04   #30
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

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

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

хотя с другой стороны, оптДата для raw по сути не имеет смысла... это для pkt имеет смысл что то там записывать. в данном случае для raw можно использовать и оптДата. но во мне какие то внутренние противоречия по этому варианту

важно только, что бы это было стандартизировано.

Последний раз редактировалось RomanRom2; 19.05.2011 в 12:06.
RomanRom2 вне форума   Ответить с цитированием
Старый 19.05.2011, 12:53   #31
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
зачем? формат менять уже нельзя.
Разработать формат 3.1 с учетом новых новшеств.
HuntsMan вне форума   Ответить с цитированием
Старый 26.05.2011, 18:19   #32
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Вот сделал под формат 3.1. Попробуйте пожалуйста.
Вложения
Тип файла: rar 14007_2011-05-26_17-58-46-6140_3.0.rar (468.7 Кб, 1 просмотров)
Lordronn вне форума   Ответить с цитированием
Старый 26.05.2011, 21:06   #33
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Вот сделал под формат 3.1. Попробуйте пожалуйста.
Формат 3.1 еще не принят, я думаю не стоит выкладывать дампы в 3.1 до его принятия за пределами этой темы: http://ru-mangos.ru/showthread.php?t=1852

P.S. У меня не открывается
LordJZ вне форума   Ответить с цитированием
Старый 26.05.2011, 21:28   #34
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Это рав снифф, я в сниффере формат файла перепутал(изначально хотел расшифрованный трафик писать, но решил отложить это, а изменить расширение забыл)
Lordronn вне форума   Ответить с цитированием
Старый 26.05.2011, 22:33   #35
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Это рав снифф, я в сниффере формат файла перепутал(изначально хотел расшифрованный трафик писать, но решил отложить это, а изменить расширение забыл)
У вас порядок полей в chunk header кривой какой-то, а в середине вообще DataLength < 0
LordJZ вне форума   Ответить с цитированием
Старый 26.05.2011, 22:52   #36
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

хм, пишу верно

Код:
            _writer.Write(packet.Direction == Direction.ToServer ? 'C' : 'S');
            _writer.Write("MSG".ToCharArray());
            _writer.Write(ConnectionId);
            _writer.Write(packet.TickCount);
            _writer.Write(1);
            _writer.Write(packet.Data.Length);
            _writer.Write((byte) 1);
            _writer.Write(packet.Data);
Lordronn вне форума   Ответить с цитированием
Старый 26.05.2011, 23:36   #37
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Поправил одну ошибочку в структуре + поправил запись коннект Ида
Вложения
Тип файла: rar 14007_2011-05-26_23-11-54-4696_3.1.rar (857.1 Кб, 5 просмотров)
Lordronn вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
редактируем базы данных - Dbscript dj--alex Tools 14 03.04.2017 10:17
опкод при сходе с транспорта brainreaver Опкоды 3 04.03.2011 18:40
Получение данных Карта->Зона Hantet WWW 9 11.09.2010 22:21
Подскажите опкод Йоха Опкоды 11 20.07.2010 23:29
каким образом можно получить более 60 000 хитов в форме медведя? tempura Флудильня 25 04.07.2010 15:11


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


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot