Hallo,
ich versuche, einen Packet-Sniffer zu bauen.
Dabei benutze ich
diese Vorlage.
Habe mir dazu eine Form gebastelt, "On-Events" zugewiesen und versucht zu kompilieren.
Der erste Fehler tritt auf:
unit1.pas(213,14) Error: Identifier not found "pipheader2"
Ich hoffte, dies sei ein Tippfehler vom Autor und habe alle
pipheader2 durch
pipheader ersetzt.
Folgendes hat sich erledigt:
Dann kommt aber eine Fehlermeldung, mit der ich nicht viel anfangen kann und mich aufhält:
unit1.pas(214,16) Error: Illegal qualifier
Das bezieht sich auf:
if pipheader.Protocol = 6 then ...
Damit ist (so glaube ich) gemeint, dass der Compiler mit dem ".Protocol" nicht anzufangen weiß, da sich dort auch der Cursor hinsetzt.
Es ist ja pipheader vom Typ TIPHeaderPtr.
Der wurde ja am Anfang definiert (siehe Quelle):
Delphi-Quellcode:
TIPHeaderPtr = ^TIPHeader;
TIPHeader = packed record
VerLen: byte;
TOS: byte;
TotalLen: word;
Identifer: word;
FragOffsets: word;
TTL: byte;
Protocol: byte; // Da ist auch "Protocol"
CheckSum: word;
SourceIp: DWORD;
DestIp: DWORD;
Options: DWORD;
end;
...
Es ist auch (siehe Kommentar) Protocol als Eigenschaft/Property(?) definiert, es wird aber nicht darauf zugegriffen.
Was soll ich tun ?
Es sind vielleicht Einstellungen im Compiler zu machen ?
UPDATE
Nun habe ich folgendes ausprobiert, was mir geholfen hat, sodass das Projekt compiliert!
Delphi-Quellcode:
//{$mode objfpc}{$H+}
{$mode delphi}{$H+}
Nun gibts einen Fehler hier:
Delphi-Quellcode:
Result := bind(RawSocket, sa, sizeof(sa));
if Result = SOCKET_ERROR
then
raise Exception.Create('
bind failed');
Habe die
Exception mittels "on e:Except..." abgefangen:
Exception : bind failed
Was soll ich nun tun ?
(Habe das Projekt mal angehängt.)
Vielen Dank
THOMAS