Вкратце:
Код:
procedure TSnifferThread.ParcePacket(const PacketSize: Word);
var
IPHeader: TIPHeader;
ICMPHeader: TICMPHeader;
TCPHeader: TTCPHeader;
ci: Integer;
PacketType:String;
Addr:TInAddr;
begin
Inc(MainForm.TotalPacketCount);
// Кол-во пакетов
Move(Packet[0], IPHeader, IPHeaderSize);
// Определяем тип пакета
case IPHeader.iph_protocol of
IPPROTO_ICMP: // ICMP
begin
Move(Packet[IPHeaderSize], ICMPHeader, ICMPHeaderSize);
end;
IPPROTO_TCP: // TCP
begin
Move(Packet[IPHeaderSize], TCPHeader, TCPHeaderSize);
end;
else
PacketType := 'Unsupported (0x' + IntToHex(IPHeader.iph_protocol, 2) + ')';
end;
// Фильтр по IP
Addr.S_addr := IPHeader.iph_src;
if inet_ntoa(Addr)=MainForm.RemHost.Text then begin
HexData:='';
for ci:=1 to PacketSize do HexData:=HexData+' | '+IntToHex(Packet[ci], 2);
HexData:=HexData+#13+#10;
MainForm.HexMemo.Lines.Add(HexData);
IntData:='';
for ci:=1 to PacketSize do IntData:=IntData+' | '+IntToStr(Packet[ci]);
IntData:=IntData+#13+#10;
MainForm.IntMemo.Lines.Add(IntData);
Synchronize(ShowPacket);
end;
^^^^это все прием пакета
Вопрос в следущем: нужно как я понимаю пакет отправить на Дэкрипт по xor'у чтобы видеть реальную структуру пакета (если что попровляйте), по xor'у я знаю следущее: чтобы расшифровать нужен Ключ-длина пакета которая указывается в начале пакета, т.е. первые 2 байта типа A0 00(если что поправьте), также нужна некая константа шифрования, из исходников к l2phx из Newxor'a вижу следущее: константа для интерлюдии=15, для других хроник=7, нужна константа для Gracia Final для руоффа(это суть вопроса).
Попутные вопросы: на расшифровку надо отправлять пакет без первых 2 байт или полностью?
ЗЫ: Если константа шифрования=7 то сорри, я сейчас на работе и проверить немогу
ЗЗЫ: На поиск не отправлять, ибо я в сетевом програмировании, тем более АПИшном пробую себя впервые, так что даже если ответы есть на мои вопросы, то я их непонял скорее всего, или просто незаметил тему )
ЗЗЗЫ: Так же хотелось бы на основе данной темки сделать фак(когда я сам разберусь), как писать снифер+расшифровщик+простейший анализатор пакетов... для самого низкого уровня подготовки программиста
Жду ответов, коментов, и здоровой критики где можно сделать лучше, быстрее, менее ресурсотребовательным мой код, с указанием где именно исправить, или хотя бы какой функцией/алгоритмом заменить! :-)
Скачать файл
Добавлено через 3 часа 53 минуты
Добавил дешифровку по XOR'у в модуль XORUnit.pas на основе Coding.pas из l2phx'а, проблемы с параметрами и возможно с инизализацией Объекта класса декодирования
Скачать файл