Entwickler-Ecke

Internet / Netzwerk - Packetsniffer


Listing - So 31.12.06 15:34
Titel: Packetsniffer
Hi leute,
ich habe vor einen Kleinen Packetsniffer zu schreiben der das DNS Protokoll überwacht
(also wenn da eine Anfrage gesendet oder Empfangen wird)
Ich wollte euch jetzt fragen wie ich das am besten anstelle, in C++ habe
ich das immer mit WinPCap gemacht und ich könnte es auch wieder tun nur ich möchte
das gleiche mal mit Delphi machen :-)
Gibt es da eine gute Komponente?
Geht sowas mit Indy?

Danke schonmal für eure Antworten.

Frohes neues Jahr @ all


Listing - So 31.12.06 17:53
Titel: Re: Packetsniffer
Ich versuche grad ein Packet in einer MessageBox auszugeben doch es ist einfach
nicht auszuhalten, Delphi aktzeptiert die Konvertierung nicht:

Delphi-Quelltext
1:
myDNS[(Length(myDNS)+1)] := pPkt[myCounter];                    


Delphi-Quelltext
1:
[Pascal Fehler] MainUnit.pas(141): E2010 Inkompatible Typen: 'Char' und 'Byte'                    

:-/

Er soll doch einfach die Bytes an den Platz des Strings schreiben, die ergeben schon valide Buchstaben...
Kann ich das iergendwie konvertieren?


hansa - So 31.12.06 20:26

Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird. Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen: Für Dich ist allerdings nur StrToInt oder IntToStr relevant. -> Hilfe


Listing - Mo 01.01.07 01:58

user profile iconhansa hat folgendes geschrieben:
Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird. Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen: Für Dich ist allerdings nur StrToInt oder IntToStr relevant. -> Hilfe

Wert im Packet z.B: 4D (4D = 77 = M) mache ich nun IntToStr kriege ich einen String wo 77 drin steht, das will ich nicht...
ich brauche hier kein IntToStr :/


Martok - Mo 01.01.07 02:05

user profile iconListing hat folgendes geschrieben:

Wert im Packet z.B: 4D (4D = 77 = M) mache ich nun IntToStr kriege ich einen String wo 77 drin steht, das will ich nicht...
ich brauche hier kein IntToStr :/

Dann brauchst du Chr(). Die wandelt eine Zahl in die ASCII-Entsprechung um.


jaenicke - Mo 01.01.07 02:16

user profile iconhansa hat folgendes geschrieben:
Du musst auch die Typen beachten ! Du versuchst einen Buchstaben als Zahl darzustellen. Geht das so in C ? :hair: Dann erkläre mal welche Zahl ohne Konvertierung bei einem Ä geliefert wird.
Ja, du kannst in C/C++ direkt einen Buchstaben zu einem Byte-Wert casten... Das ist so wie Ord, du schreibst einfach (int) DeinChar, bzw. umgekehrt (char) DeinByteWert... ;-)

user profile iconhansa hat folgendes geschrieben:
Sollte da automatisch ein Ascii-Wert oder so rauskommen, das wäre ein weiterer Grund mit altertümlichen C+Co. nichts zu machen. :mrgreen:
Das ist in C++ und Java genauso :mrgreen:

Und das ist doch auch nur sinnvoll so. Denn an der Speicherstelle steht eben der Ascii-Wert. Warum sollte man also nicht auch einfach sagen können: Ok, diese Speicherstelle interpretiere ich jetzt direkt als Zahl :?: :gruebel:


hansa - Mo 01.01.07 03:46

Zuerst mal : Prost Neujahr. :beer:

Aber das, was der macht ist so etwas : if 'Ä' = 123 then

Deshalb meine unbeantwortete Zwischenfrage. Rest wurde schon gesagt.