De Kaisastiähla Geschrieben 4. März 2010 Geschrieben 4. März 2010 #include <stdio.h> #include <windows.h> int main(int argc, char **argv) { //Definitionen und Deklarationen int temp; int begin; int end; int sd; int loop; WSADATA firstsock; char hostname[100]; struct sockaddr_in HOST_ADDR; // Input printf("Enter ip to scan :\t"); gets(hostname); if(!(isdigit(hostname[0]))) exit(EXIT_FAILURE); printf("Enter starting port :\t"); scanf("%d" , &begin); printf("Enter ending port :\t"); scanf("%d" , &end); system("cls"); //Initialisiere winsock if (WSAStartup(MAKEWORD(2,0),&firstsock) != 0) { fprintf(stderr,"WSAStartup() failed!"); exit(EXIT_FAILURE); } //Host definieren HOST_ADDR.sin_family = AF_INET; HOST_ADDR.sin_addr.s_addr = inet_addr(hostname); // Alle Daten Ausgeben und mainloop starten printf("Hostname:\t%s\t%d\n" "Startport:\t%d\n" "Endport:\t%d\n\n", hostname, HOST_ADDR.sin_addr.s_addr, begin, end); // Schleife um die einzelnen Ports abzufragen for(loop = begin; loop <= end; loop++) { HOST_ADDR.sin_port = htons(loop); //Socket öffnen sd = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP); if (sd == -1) printf("Socket could not be created.\n"); //Versuche mit Port zu verbinden temp = connect(sd , (struct sockaddr *)&HOST_ADDR , sizeof HOST_ADDR); if (temp == -1) printf("Port %d is closed.\n", loop); else printf("Port %d is open\n", loop); //Socket schließen temp = closesocket(sd); if (temp == -1) printf("Socket %s:%d could not be closed properly.\n",hostname, loop); } //Beende winsock WSACleanup(); printf("Portscan has finished\n"); system("pause"); return EXIT_SUCCESS; } Pro Port braucht er eine halbe Sekunde.:upps Was meint ihr wie kann ich den beschleunigen? Grüße
Klotzkopp Geschrieben 4. März 2010 Geschrieben 4. März 2010 Du könntest nonblocking sockets benutzen. Siehe WSAEventSelect.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden