SYN-Flag senden
-
Ach so....das ist schade...
K, danke.
-
Hallo,
ein SYN ist Bestandteil des TCP Three Way Handshake.
Der source Host sendet ein SYN sowie seine Sequenz Nummer, worauf der target Host
ein SYN ACK mit der um eins erhöhten Sequenz Nummer des source Host sowie
seine eigene Sequenznummer sendet.
Nun erfolgt noch ein ACK vom source Host und die Verbindung besteht.Was soll es für einen Sinn machen, nur ein SYN zu senden und sonst nichts weiter?
Ich denke mal um dieses zu erreichen, musst du direkt den Sende-Buffer
des Ethernet-Controllers beschreiben und dann dafür sorgen das der Frame
gesendet wird.Dann musst du aber die completen MAC/ IP/ TCP Header selbst erstellen.
Um mal zu gucken was dabei so abgeht, würde ich mal das Prog packetyzer downloaden.
-
hermes schrieb:
Was soll es für einen Sinn machen, nur ein SYN zu senden und sonst nichts weiter?
Das nutzen böse Leute halt aus um Angriffe auf einen Rechner zu starten indem sie etliche Verbindungsanfragen mit gefälschter Absenderadresse verschicken. Diese nimmt der Rechner bis zum Akzeptieren der Verbindung oder Timeout in seinen Verbindungspuffer auf, der unter Umständen volllaufen könnte.
Ich denke mal um dieses zu erreichen, musst du direkt den Sende-Buffer
des Ethernet-Controllers beschreiben und dann dafür sorgen das der Frame
gesendet wird.Das SYN-Flag ist Bestandteil des TCP-Headers. Man muss nicht so tief vordringen, das lässt sich, wie schon angedeutet mit Raw Sockets erreichen, bei denen man sich alles inklusive Paketheader selbst zusammenstellen kann. Allerdings ist die Programmierwilligkeit des Threaderstellers ja auf 1-4 Zeilen beschränkt
-
Aja,
Das nutzen böse Leute halt aus um Angriffe auf einen Rechner zu starten indem sie etliche Verbindungsanfragen mit gefälschter Absenderadresse verschicken. Diese nimmt der Rechner bis zum Akzeptieren der Verbindung oder Timeout in seinen Verbindungspuffer auf, der unter Umständen volllaufen könnte.
so etwas hatte ich mir schon gedacht....
Das mit den Raw Sockets ist interssant, ich bastle gerade mit einem Microcontroller sowie Stand Alone Ethernet Controller einen TCP IP
Stack.Möchte dem Lan-Knoten nun via Lan eine IP sowie andere Parameter verpassen.
Nur die MAC Adresse ist bekannt, da wäre ein Raw Socket doch genau das richtige.Wo gibt es dazu Infos?
-
hermes schrieb:
Das mit den Raw Sockets ist interssant, ich bastle gerade mit einem Microcontroller sowie Stand Alone Ethernet Controller einen TCP IP
Stack.Möchte dem Lan-Knoten nun via Lan eine IP sowie andere Parameter verpassen.
Nur die MAC Adresse ist bekannt, da wäre ein Raw Socket doch genau das richtige.Wo gibt es dazu Infos?
öh, du hast doch praktisch Raw Sockets, wenn du den TCP/IP-Stack selbst schreibst.
Aber was du suchst hört sich nach DHCP an.
-
öh, du hast doch praktisch Raw Sockets, wenn du den TCP/IP-Stack selbst schreibst.
Ich habe mir den TCP/IP Stack auf dem Microcontroller Board selber programmiert.
Als Ethernet Controller benutze ich den RTL8019AS von Realtek.In der Controller-Software ist Testweise eine IP zugewiesen, dieses soll allerdings eine Windows Software übernehmen. (kein DHCP, wird später noch implementiert)
Ein Client auf einem Lan Rechner kann den Server(Controller Board) kontaktieren und Daten austauschen.
ARP sowie PING laufen ebenfalls.
Ich stell mir das so vor, ich benutze ein eigenes Protokoll um dem Knoten
seine IP sowie andere Parameter zu senden. Dazu muss im MAC Header nur
die richtige target Mac auftauchen.Beispiel:
eigenes Protokoll im MAC Header: target Mac, source Mac, Protocoll z.B. 0x0999, dieses Protocoll versteht nur mein Controller.Den ganze Frame absenden und schon habe ich dem Knoten eine IP sowie andere Parameter zugewiesen.
Also kurz gesagt, ich möchte die Möglichkeit haben unter Windows eigene
Protocolle zu senden.Ich müsste ein Array mit Mac-Header sowie Daten füllen und Windows
sagen, sende das ganze als Frame auf den Bus.Mit einem Client oder Server Socket unter Borland läuft das natürlich nicht.
Ist dies geschehen, kann ich mit einem Client Socket via TCP/IP den Server
(mein Controller Board) kontaktieren und Daten austauschen.Übrigens zu Raw Sockets finde ich im Windows SDK mal wieder
das übliche blah blah, will sagen es dauert lange bis man das Richtige findet.
-
Hallo hermes,
Ich habe mir den TCP/IP Stack auf dem Microcontroller Board selber programmiert.
Als Ethernet Controller benutze ich den RTL8019AS von Realtek.Falls du noch Anregungen für deinen TCP/IP Stack suchst, schau dir mal den
"uIP Embedded TCP/IP Stack" an: http://www.sics.se/~adam/uip/Ich habe ihn für ein "RS232<->TCP-Socket"-Projekt auf einem Atmel AVR (8-bit µC) mit einer RTL8019 ISA-Bus Netzwerkkarte und einem 32kByte SRAM benutzt.
Möchte dem Lan-Knoten nun via Lan eine IP sowie andere Parameter verpassen.
Nur die MAC Adresse ist bekannt, da wäre ein Raw Socket doch genau das richtige.Mit dem Programm Packetyzer kannst du auch "nackte" Frames zusammenbauen und verschicken. Ist zwar nicht so komfortabel, aber es geht...
Aber es existiert für Windows auch die "WinPcap"-Bibliothek, mit welcher du "nackte" Frames empfangen und senden kannst: http://www.winpcap.org/
Ich habe die Bibliothek aber auch nocht nicht benutzt. (Packetyzer benutzt sie...)
Gruß
Fiffi
-
Achso, dann sind RawSockets das was du suchst. Nur kannst du afaik unter Windows nicht auf alle OSI-Schichten zugreifen.
-
Hallo fiffi,
Ich habe ihn für ein "RS232<->TCP-Socket"-Projekt auf einem Atmel AVR (8-bit µC) mit einer RTL8019 ISA-Bus Netzwerkkarte und einem 32kByte SRAM benutzt.
Hast du auch ab und zu die Probleme, das sich beim RTL8019AS der Hardwareinterrupt nicht mehr zurücksetzten lässt?
Ich lasse einen int beim dem Host Controler vom RTL8019AS auslösen.
Ich lese den RTL8019AS RXBuffer aus, analysiere ihn, antworte und
lösche den INT des RTL8019AS, indem ich an die richtige Bit-Position
im ISR(des RTL8019AS) eine 1 schreibe.Nur ab und zu wird der interrupt des RTL8019AS nicht zurückgesetzt(nie mehr ), egal wie oft ich eine 1 an die entsprechende bitposition im ISR schreibe, was zur Folge hat, das mein Host Controler keine InteruptRequest's mehr bekommt.
.....
-
Hallo hermes,
Hast du auch ab und zu die Probleme, das sich beim RTL8019AS der
Hardwareinterrupt nicht mehr zurücksetzten lässt?Ich habe den RTL8019 nur im polling betrieben. Aber wenn der Puffer im RTL8019 überläuft, braucht er eine spezielle Reset-Routine.
Schau dir mal den RTL8019-Teil des Ethernut 1.3 Projektes an.
Gruß
Fiffi