![]() |
Nutzdaten eines IP-Paketes
Ich bastele gerade an einem kleinen IP-Sniffer herum. Die Pakete fange ich richtig ab, also TTL, Paketgröße, Quell-Adresse sind richtig.
Nun will ich die Nutzdaten auslesen, und da haperts. So sieht mein IP-Paket aus:
Delphi-Quellcode:
Und so les ich die Pakete:
type
ip_hdr = packed record ip_verlen: u_char; //Version(4) und Länge(4) ip_tos: u_char; //TOS(8) ip_totallength: u_short; //Gesamtgröße(16) ip_id: u_short; //Identifikation(16) ip_offset: u_short; //Flags(3) und Fragment-Offset(13) ip_ttl: u_char; //Time-to-live(8) ip_protocol: u_char; //Protokoll(8) ip_checksum: u_short; //Header-Prüfsumme(16) ip_srcaddr: u_int; //Herkunftsadresse(32) ip_destaddr: u_int; //Zieladresse(32) end; TIPHdr = ip_hdr;
Delphi-Quellcode:
In buf kommen meine Daten. An der markierten Stelle versuche ich, an den String zu kommen. Nur klappt das anscheinend nicht. Kann mir einer helfen?
procedure GetPackets; stdcall;
var recBytes: Integer; buf: Array[0..999] of Byte; sDisplay: string; IPHdr: TIPHdr; Inaddr: TInAddr; packData: String; dataSize: Integer; p:Pointer; begin while true do begin recBytes := recv(S, buf, Length(buf), 0); if recBytes > 0 then begin CopyMemory(@IPHdr, @buf, Sizeof(IPHdr)); InAddr.S_addr := IPHdr.ip_srcaddr; dataSize := recBytes - Sizeof(IPHdr); //hier versuche ich an den String zu kommen p := Pointer(Integer(@buf) + Sizeof(IPHdr)); packData := String(p); SetLength(packData, recBytes - Sizeof(IPHdr)); sDisplay := Format('%d Bytes erhalten: from %s with TTL %d. %d Bytes Nutzdaten %s:',[recBytes,inet_ntoa(InAddr),IPHdr.ip_ttl,dataSize,packData]); Form1.Listbox1.Items.Add(sDisplay); inc(recvPackets); recvBytes := recvBytes + recBytes; Form1.Statusbar1.Panels[0].Text := Format('%d Bytes in %d Paketen erhalten',[recvBytes,recvPackets]); end; end; end; |
Kann mir keiner helfen?
|
Niemand .. :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz