Windows Portscanner C++
-
Belli schrieb:
Zitat:
On a blocking socket, the return value indicates success or failure of the connection attempt....und das kann mehrere Sekunden dauern bis die Funktion returned (bei blocking sockets)
@luggas: Bau dir mal noch mehr Ausgaben rein, aka "Verbinden mit %Port%", "Port geschlossen: %Port%" und warte mal ne Weile.
connect() kann ziemlich lange brauchen um festzustellen dass da nix reagiert...
-
also ich hab jetzt diesen code hier und er sagt immer fehlgeschlagen
#include <QtCore/QCoreApplication> #include <iostream> #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <winsock2.h> #include <string> #include <unistd.h> #include <conio.h> using namespace std; int main() { WSADATA wsa; if (WSAStartup(MAKEWORD(2, 0), &wsa)) { printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError()); return EXIT_FAILURE; } string ip; cout << "IP Adresse:"; cin >> ip; int i; int j; cout << "Von Port: "; cin >> j; cout << "Bis Port: "; cin >> i; struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.s_addr = inet_addr(ip.c_str()); for (int port = j ; port<=i; ++port ) { int s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); addr.sin_port = htons(port); if(!connect(s, reinterpret_cast<sockaddr*>(&addr), sizeof(addr))) cout << "Verbindung an Port " << port << " erfolgreich" << endl; else cout << "Verbindung an Port " << port << " fehlgeschlagen" << endl; closesocket(s); } getch(); WSACleanup (); return 0; }ich hab grad mal meine linux v-box gescannt und da war einer erfolgreich
aber warum geht das bei windows nicht?
-
Welche Ports scannst du denn?

(Bin mir gerade nicht mehr ganz sicher aber ich glaube nicht dass man bei jedem Schleifendurchlauf einen neuen socket erstellen muss.)
-
Wie schlecht manche Leute doch meinen Code kopieren.
-
ja sry ich will das alles irgendwie verstehn und deswegen nehm ich deinen code
ich scann von 1 bis 100 alles aber es schlägt alles fehl
-
Von 1-100 aber welche IP? Sollten die Ports denn überhaupt offen sein?
-
na ich scann mich selbst^^ zu test zwecken als in meinem netzwerk "192.168.178.22"
-
Hast du denn überhaupt Programme offen die auf Port 1-100 lauschen?
-
Genau das ist die Frage - wo nichts lauscht da sollte auch kein Port ansprechbar sein! Am besten du startest einfach einen simplen Server: (ungetestet - wenn da was nicht geht frag einfach kurz
)int main() { int sock, acc_sock; struct sockaddr_in addr; int addr_size; WSADATA wsadata; if (WSAStartup(MAKEWORD(2,2), &wsadata) != 0) printf("WSAStartup() failed with error: %i.\n", WSAGetLastError()); while (1) { sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == INVALID_SOCKET) printf("socket() failed with %i.\n", WSAGetLastError()); memset(&addr, 0, sizeof(addr)); addr.sin_addr.s_addr = INADDR_ANY; addr.sin_family = AF_INET; addr.sin_port = 2500; addr_size = sizeof(addr); if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR) printf("bind() failed with %i.\n", WSAGetLastError()); if (listen(sock, 3) == SOCKET_ERROR) printf("listen() failed with %i.\n", WSAGetLastError()); if (accept(sock, (struct sockaddr*)&addr, &addr_size) == INVALID_SOCKET) printf("accept() failed with %i.\n", WSAGetLastError()); printf("client connected<!>\n"); closesocket(sock); } WSACleanup(); return 0; }
-
mit WSAIoctl, habe ich doch da hingeschrieben. giyf
-
ok ich hab jetzt mal probiert den server selbst zu programmieren
ich wollt mal fragen ob das so geht
#include <QtCore/QCoreApplication> #include <windows.h> #include <winsock2.h> #include <unistd.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <conio.h> using namespace std; int main() { WSAData wsa; if(WSAStartup(MAKEWORD(2,2),&wsa)!=0) { printf("WSAStartup() failed with error: %i.\n", WSAGetLastError()); return 1; } cout << "Bitte Warten!"; while (1) { int s = socket(AF_INET,SOCK_STREAM,0); int addr_size; struct sockaddr_in addr; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_family = AF_INET; addr.sin_port = 21; addr_size = sizeof(addr); if (bind(s,(struct sockaddr*)&addr,sizeof(addr))==-1) { perror("bind() failed"); return 2; } if (listen(s,3)==-1) { perror("listen() failed"); return 3; } if (accept(s,(struct sockaddr*) &addr, &addr_size)==-1) { perror("accept() failed"); return 4; } printf("client connected<!>\n"); getch(); closesocket(s); } WSACleanup(); return 0; }ach ja und der compiler sagt mir bei dem code das bei accept was nicht stimmt
