[C++] Socketprogrammierung

[Moepi]1

Lt. Commander
Registriert
Jan. 2002
Beiträge
1.233
Das folgende Proggie soll die angebene IP scannen und verscuhen, TCP Verbindungen zu allen WellKnown Ports aufzubauen - also so ne Art Miniportscanner. Dummerweise funktionierts nicht. Egal was ich scanne (127.0.0.1) oder andere PCs im LAN, er bringt NICHTS. :(
Wo liegt mein Fehler??

Code:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>


int main()
{
        int socket_number;
        int length;
        struct sockaddr_in addressinfo;
        int result;
        int port;


        for(port=1;port<1024;port++)
        {
                socket_number = socket(AF_INET, SOCK_STREAM, 0);

                addressinfo.sin_family = AF_INET;
                addressinfo.sin_addr.s_addr = inet_addr("172.16.0.1");
                addressinfo.sin_port = port;
                length = sizeof(addressinfo);
                result = connect(socket_number, (struct sockaddr*)&addressinfo, length);
                if(result != -1)
                {
                        printf("\nTCP %i",port);
                }
                close(socket_number);
        }
        printf("\n\n");
}
 
Check zuerstmal alle Return-Codes und werte errno entsprechend aus. Das sollte dich hoffentlich weiterbringen. (sehe zumindest im fix-drüberfliegen keine offensichtlichen Fehler)
 
result = -1 und perror sagt in allen Fällen "Connection refused"

Kann ja wohl an nem XP Rechner ohne FW net sein!
 
Hab ich auch schon alles probiert, selber Fehler. Daten verlassen aber mein Notebook, also sprich die Connection Requests gehen zum Ziel und das Ziel antwortet auch. Verbindung kommt trotzdem keine zustande.

/edit:
Ein Sniffer hat was Interessantes ergeben: Wenn ich mit dem Proggie Port 80 scannen will, macht er in Wirklichkeit ne Anfrage auf Port 20480 - nur versteh ich ehrlich gesagt net warum...

/edit2:
Wie war das mit Little Endian und Big Endian wovor mich mein Prof gestern noch gewarnt hatte? addressinfo.sin_port = htons(port); und schon gehts!
 
Zuletzt bearbeitet:
Ich hoffe mal du weißt dass Portscans illegal sind. So weit ich weiß sogar dann wenn man sie an seinem eigenen System testet :D

Über Sniffer muss ich ja wohl auch nichts mehr sagen ;)
 
daemon777 schrieb:
Ich hoffe mal du weißt dass Portscans illegal sind. So weit ich weiß sogar dann wenn man sie an seinem eigenen System testet :D

Über Sniffer muss ich ja wohl auch nichts mehr sagen ;)


Weder Portscanner noch Sniffer sind illegal - nur der böswillige Einsatz. Andernfalls würde sich jeder Netzadmin dieser Welt permanent strafbar machen :D
 
Zurück
Oben