PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Half-Open-Portscanner


Maverik944
26.06.2004, 23:05
Hi!

Ich habe versucht in C unter Linux einen Portscanner zu schreiben. Dazu nutze ich Raw-Sockets. Der Ablauf eines Scans sollte so aussehen:

Mein_PC------(SYN)------>Host
Mein_PC<---(SYN+ACK)----Host
Mein_PC------(FIN)------->Host

Doch so bald ich das SYN+ACK-Paket erhalten habe, schickt Mein_PC ein RST-Paket.

Nun wollte ich fragen wie ich es schaffe das mein Kernel auf das empfangene Paket nicht mit einem RST antwortet.

Kann es sein das man da die funktion setsockopt() mit einem bestimmten Arugment braucht???

Hier mein Quellcode:
http://www.maverik944.privat.t-online.de/src/scan.h
http://www.maverik944.privat.t-online.de/src/half_open_scan.c

Wär cool wenn jemand ne Idee hätt ;-)!

mfg Maverik944


SkydiverBS
06.07.2004, 16:27
Hallo Maverik!

Ich habe auch gerade im Studium mit Sockets unter C programmiert, allerdings nur mit SOCK_STREAM und SOCK_DGRAM. Hab noch nichts mit Raw-Sockets gemacht.

Trotzdem meine ich deinen Fehler erkannt zu haben :) ! Du benutzt ja die sendto()-Funktion um ein Packet zu schicken und ich denke du musst die equivalente Funktion recvfrom() benutzen, um ein Packet zu empfangen, sonst funkt dir der Kernel dazwischen (wie du geschrieben hast).

Probier es einfach mal aus!

Und noch ein Tipp: Header-Dateien (.h) sind eigentlich nicht zur Implementierung von Funktionen gedacht wie du es machst, sondern dienen lediglich der Prototypen-Definition. Als Beispiel für eine "scan.h"-Datei:

unsigned short tcp_check(struct tcphdr *th, unsigned short len, unsigned long saddr, unsigned long daddr);
int read_answer(int *sock);
int send_fin(int *socket, struct tcphdr *tcp, struct iphdr *ip, struct sockaddr_in *to);


Gruss,
Philip

Maverik944
15.07.2004, 09:36
Hi!

Danke erstmal für die Antwort!

Das mit dem recvfrom() hat auch nicht funktioniert, werde den code noch hochladen.

Es könnte jedoch sein das es am dem source-port liegt, weil ich an meinem linux-rechner samba laufen habe, vielleicht blockt der samba-server ja das syn/ack-paket ab. Werde den code ändern, falls es geklappt hat, posten.


mfg Maverik944

focus
20.07.2004, 11:24
in on muss 1 stehen, momentan ist es bei dir undefiniert..
beispiele zu dem thema raw sockets findest du u.a. in den sourcen von nmap
gruss
michael