Thema: FreePascal Packet-Sniffer

Einzelnen Beitrag anzeigen

thomasschaf
(Gast)

n/a Beiträge
 
#1

Packet-Sniffer

  Alt 20. Nov 2011, 16:15
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

Geändert von thomasschaf (20. Nov 2011 um 17:20 Uhr)
  Mit Zitat antworten Zitat