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 Zitieren
Klotzkopp Geschrieben 4. März 2010 Geschrieben 4. März 2010 Du könntest nonblocking sockets benutzen. Siehe WSAEventSelect. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.