Ru-MaNGOS

Вернуться   Ru-MaNGOS > Дополнения > Tools

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

Tools Обсуждение программ для MaNGOS

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.07.2010, 21:43   #1
alien
Ученый
 
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
alien На верном пути
По умолчанию [разработка]Wow Packet Parser

Вот решил заняться разработкой утилитки для парсинга снифов.
Видел что существуют такие и даже какое то время пользовался WoWPacketViewer(я его тут выкладывал недавно)
Но все что я видел оно довольно неудобно.
И вот взялся за написание.
Пока проект в стадии активного написания. Во вложение набросок интерфейса(там где список пакетов планируется таблица в которой будет номер пакета, а также разный цвет фона в зависимости от направления)

Основная фишка парсера в том чтобы добавить поддержку разбора нового пакета не нужно перекомпилировать полностью приложение. Разбор осуществляет Скрипт на Lua
Вот пример скрипта разбора CMSG_AUTH_SESSION
Код:
ClientBuild=Packet:ReadInt32()
unk=Packet:ReadInt32()
acc=Packet:ReadString()
function GetClientBuild()
	return "Client: "..ClientBuild.."\n";
end

function Tmpe()
	Packet:DeCompress();
	local addon_count=Packet:ReadInt32();
	local addonTable={};
	for i=1,addon_count do
		local addonName = Packet:ReadString();
			local enabled = Packet:ReadByte();
			local crc = Packet:ReadUInt32();
			local unk4 = Packet:ReadUInt32();
		table.insert(addonTable,{["name"]=addonName,["value"]={{["name"]="Enabled",value=enabled},{["name"]="Crc",value=crc},{["name"]="Unk4",value=unk4}}});
		end
	return {{["name"]="Addon Count",value=addon_count},{["name"]="Addons",value=addonTable}};
end

function GetTextResult()
	return GetClientBuild().."unk0: "..unk.."\nAccount: "..acc;
end

testtableret={
{["name"]="Client",value=ClientBuild},
{["name"]="Unk",value=unk},
{["name"]="Account",value=acc},
{["name"]="Unk2",value=Packet:ReadInt32()},
{["name"]="Client Seed",value=Packet:ReadInt32()},
{["name"]="Unk3",value=Packet:ReadInt64()},
{["name"]="Digest",value=Packet:HexPrint(Packet:ReadBytes(20))},
{["name"]="Decompressed",value=Tmpe()},
{["name"]="Unk5",value=Packet:ReadUInt32()},

}
Да скрипт пока выглядит не очень эстетично но это еще из-за того что не решил еще полностью как лучше будет сделать.
В общем проект лично для меня носит обучающий характер. В написании используется Qt+luabind
Если есть желающие присоединится милости прошу(скорее всего как только будет что не стыдно показать в качестве сорцов проект будет опенсорс)
Миниатюры
Нажмите на изображение для увеличения
Название: packview.JPG
Просмотров: 1271
Размер:	119.3 Кб
ID:	535  
alien вне форума   Ответить с цитированием
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Parser 4.x.x ANTOMA Tools 3 10.12.2010 18:15
MaNGOS баг-трекер (разработка) KiriX WWW 34 26.10.2010 12:45
wdb-parser Konctantin Tools 0 23.08.2010 11:14
[git] Командная разработка Hantet Новичкам 3 06.07.2010 09:01
Глобальный FAQ (разработка) Konctantin Новичкам 6 14.03.2010 10:46


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


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