SaTaN
Erfahrenes Mitglied
Hallo ihr da draussen,
ich code gerade ein Portscanner aus Neugier.
In meinem Intranet funktioniert er sehr gut.
Das Problem ist wenn ich einen anderen scanne ins Internet rein
dauert das sehr sehr sehr lange.
Keine Angst ich scanne ein Freund der weis bescheid.
Nicht das Ihr mich jetzt hier zur Schnecke macht.
Es gibt 65535 Ports die ich gerne durchscannen würde.
Habe da verschiedene varianten getestet.
Hier erstmal mein code :
1.Variante
dauert im Intranet ca. 14,5 sec
im Internet unendlich
2.Variante
Die leider nicht funktioniert.
Über ein 2 Dimensionales array()
3. Variante die leider auch bei mir nicht funktioniert
Über ein einfaches array
Könnte mir jemand da weiter helfen?
Besteht die Möglichkeit die 1. Variante etwas zu tunen, also zu optimieren ?
Warum funktioniert es nicht mit 2. und 3. Variante ?
Schafft das array nicht soviele Zahlen aufzunehmen ?
Als Bonus würde ich gerne wissen gibt es in PHP eine Möglichkeit herauszufinden welcher Dienst hinter dem Port steckt ?
Um dann so eine Ausgabe zu machen :
Port 80 offen http / Webserver
Vielen Dank
euer SaTaN
ich code gerade ein Portscanner aus Neugier.
In meinem Intranet funktioniert er sehr gut.
Das Problem ist wenn ich einen anderen scanne ins Internet rein
dauert das sehr sehr sehr lange.
Keine Angst ich scanne ein Freund der weis bescheid.
Nicht das Ihr mich jetzt hier zur Schnecke macht.
Es gibt 65535 Ports die ich gerne durchscannen würde.
Habe da verschiedene varianten getestet.
Hier erstmal mein code :
1.Variante
dauert im Intranet ca. 14,5 sec
im Internet unendlich
PHP:
$ip = "192.168.0.2";
for($i=1; $i <= 65535; $i++) {
$port = array($i);
for ($k=0; $k<count($port); $k++) {
$ports = $port[$k];
$giu = fsockopen($ip, $ports, &$errno, &$errstr, 1);
if(!$giu) {
//echo "Port ", $ports, " geschlossen<br>\n";
} else {
echo "Port ", $ports, " offen<br>\n";
fclose($giu);
} //if !$giu
} //for schleife $k
} //for schleife $i
2.Variante
Die leider nicht funktioniert.
Über ein 2 Dimensionales array()
PHP:
$ip = "192.168.0.2";
// Das array ist aus platzgründen gekürzt
$port = array(
"0" => array(1,2,3,4,....,1024),
"1" => array(1025,....,2048),
"2" => array(2049,....,3072),
....
....
"63" => array(64511,....,65535));
for ($k=0; $k<count($port); $k++) {
$ports = $port[$k];
$giu = fsockopen($ip, $ports, &$errno, &$errstr, 1);
if(!$giu) {
//echo "Port ", $ports, " geschlossen<br>\n";
} else {
echo "Port ", $ports, " offen<br>\n";
fclose($giu);
} //if !$giu
} //for schleife $k
3. Variante die leider auch bei mir nicht funktioniert
Über ein einfaches array
PHP:
$ip = "192.168.0.2";
// Das array ist aus platzgründen gekürzt
$port = array(0,1,2,3,4,....,65535),
for ($k=0; $k<count($port); $k++) {
$ports = $port[$k];
$giu = fsockopen($ip, $ports, &$errno, &$errstr, 1);
if(!$giu) {
//echo "Port ", $ports, " geschlossen<br>\n";
} else {
echo "Port ", $ports, " offen<br>\n";
fclose($giu);
} //if !$giu
} //for schleife $k
Könnte mir jemand da weiter helfen?
Besteht die Möglichkeit die 1. Variante etwas zu tunen, also zu optimieren ?
Warum funktioniert es nicht mit 2. und 3. Variante ?
Schafft das array nicht soviele Zahlen aufzunehmen ?
Als Bonus würde ich gerne wissen gibt es in PHP eine Möglichkeit herauszufinden welcher Dienst hinter dem Port steckt ?
Um dann so eine Ausgabe zu machen :
Port 80 offen http / Webserver
Vielen Dank
euer SaTaN