RST senden

Gibt es in C eine Moeglichkeit NUR ein RST zu versenden ?
(kein C++, kein visual C..C unter linux..)
Also quasi close() einen Teil seiner Arbeit abzuenhmen...

Sinnreich waere es -wie gesagt- nur das RST zu senden ohne ueberhaupt erst eine verbindung herstellen zu muessen.

mfg
:wq!
 
Klar gibts diese. Du benötigst dafür Raw-Sockets. Wichtig dabei ist das du die Checksummen richtig berechnest ansonsten wirft tcpdump fehlermeldungen aus und das Packet kommt nicht richtig beim Ziel an.Ich schreibe zur Zeit einen Portscanner für linux der fin-(schickt ein leeres Packet weg in dem nur das fin-flag gesetzt ist) , xmas-(alle flags sind gesetzt), syn-(nur das syn-flag), null-("leeres" Packet, kein flag ist gesetzt)connect-, icmp- und ackscans ermöglicht. Alle Scanfunktionen sind bereits fertig. Ich hab diesen zwar in C++ geschrieben aber es sollte doch als beispiel gut genug sein. Wenn du willst kannst du die Sourcen haben(oder zumindes die funktionen die dir weiterhelfen können).
 
SYN, FIN ist ja auch kein Problem...
aber wie genau sollte das mit dem RST gehen ?

wieso die cheksumme ?!

ich kann lediglich durch die LINGER flags optionen vorbereiten die close() beeinflussen..aber wie genau ich ein einzelnes packet mit RST sende bleibt mir ein Raetsel..vielleicht hast Du ein konkretes Beispiel ?

btw. Dein code wuerde mich mal interessieren :)

:wq!
 
Über ein Raw Socket und der Option IP_HDRINCL kannst Du Dir jedes mögliche Datagram, das Dir gerade einfällt, zusammenbauen. Leider darf ein Raw Socket nur root anlegen. Wobei dies bei Deinem zu verschickenden RST das kleinere Problem sein dürfte. Viel haariger dürfte wohl das Ermitteln der korrekten Sequence Number sein. Aber wofür das eigentlich alles?
 
Zurück
Oben