Hey,
Ich bin grade dabei mich ein bisschen mit dem Programmieren unter Linux auseinanderzusetzen.. und wollte deshalb einen einfachen Portscanner basteln.
Das klappte dann auch sehr gut beim testen ob ein einzelner Port offen ist.. wenn ich jetzt das ganze aber in ner for-schleife durchlaufen lassen möchte von z.b Port 0 bis 500 macht der nur das ganze einmal und dann stoppt er einfach die for-schleife. Weiß jemand woran das liegt?..
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include<arpa/inet.h> //inet_addr
int main(int argc, char *argv[])
{
int p = 0; //Port Variable - Zum Portscannen
for(int x=0;x<500;x++)
{
//create a socket
int s = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in portscanner;
//create socket configuration
portscanner.sin_addr.s_addr = inet_addr(argv[1]);
portscanner.sin_family = AF_INET;
portscanner.sin_port = htons(p);
//try to connect to port
int PortOpen = connect(s, (struct sockaddr *)&portscanner, sizeof(portscanner));
if(PortOpen == -1)
{
printf("Port %d geschlossen!\n", p);
}else{
printf("Port %d offen!\n", p);
}
close(s);
p++;
}
return 0;
}
Wenn ich das ganze auf meine eigene IP (127.0.0.1) laufen lasse funktioniert es einwandfrei.. nur nicht wenn ich z.b google als Ziel nehme.
grüße