Hallo,
es geht mir um folgendes.
Ich bin gerade dabei ein kleines Script zu schreiben, bei dem man die IP Adresse
eines PCs / Servers angibt und dann getestet werden soll ob der Erreichbar ist und welche Ports offen sind.
Portscan etc alles schon recht gut realisiert, jedoch läuft der Ping derzeit als TCP Ping auf Port 80 was natürlich Nonsens ist da nicht jeder Rechner 80 offen hat / nutzt.
Sprich ich möchte es per ICMP realisieren.
Im Forum hier habe ich folgendes Script gefunden:
Jedoch weis ehrlich gesagt nicht so wirklich wie ich damit umgehen soll ^^°
Habe es mir schon ein wenig umgeschrieben als Funktion sodass nicht "locahost" angepingt wird sondern natürlich die übergebene IP.
Jedoch weis ich nicht wie ich diese Funktion dann "auswerten" kann.
Das Result bleibt immer NULL ^^
Könnte mir da jem. mal kurz auf die Sprünge helfen?
Bin noch Recht neu bei PHP hoffe allerdings hier Hilfe zu bekommen *g* =]
Vielen Dank im voraus.
Smoki
es geht mir um folgendes.
Ich bin gerade dabei ein kleines Script zu schreiben, bei dem man die IP Adresse
eines PCs / Servers angibt und dann getestet werden soll ob der Erreichbar ist und welche Ports offen sind.
Portscan etc alles schon recht gut realisiert, jedoch läuft der Ping derzeit als TCP Ping auf Port 80 was natürlich Nonsens ist da nicht jeder Rechner 80 offen hat / nutzt.
Sprich ich möchte es per ICMP realisieren.
Im Forum hier habe ich folgendes Script gefunden:
PHP:
<?php
function calcchecksum($packet)
{
if (strlen($packet)%2!=0)
{
$packet.="\x00";
}
$wordrow=unpack("n*",$packet);
$checksum=array_sum($wordrow);
while ($checksum>>16)
{
$checksum=($checksum>>16)+($checksum&0xffff);
}
$packedsum=pack("n",~$checksum);
return $packedsum;
}
function incsequenceno($sequenceno)
{
if (ord($sequenceno{1})==255)
{
return chr(ord($sequenceno{0})+1)."\x00";
}
else
{
return $sequenceno{0}.chr(ord($sequenceno{1})+1);
}
}
$socket=socket_create(AF_INET,SOCK_RAW,1);
socket_connect($socket,"localhost",NULL);
$type="\x08";
$code="\x00";
$identifier="\x00\x00";
$sequenceno="\x00\x00";
for ($x=0;$x<4;$x++)
{
$data="";
for ($y=0;$y<7;$y++)
{
$data.=chr(rand(0,255));
}
$data.="\x00\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37";
$checksum="\x00\x00";
$sequenceno=incsequenceno($sequenceno);
$checksum=calcchecksum($type.$code.$checksum.$identifier.$sequenceno.$data);
$packet=$type.$code.$checksum.$identifier.$sequenceno.$data;
socket_write($socket,$packet);
}
socket_close($socket);
?>
Jedoch weis ehrlich gesagt nicht so wirklich wie ich damit umgehen soll ^^°
Habe es mir schon ein wenig umgeschrieben als Funktion sodass nicht "locahost" angepingt wird sondern natürlich die übergebene IP.
Jedoch weis ich nicht wie ich diese Funktion dann "auswerten" kann.
Das Result bleibt immer NULL ^^
Könnte mir da jem. mal kurz auf die Sprünge helfen?
Bin noch Recht neu bei PHP hoffe allerdings hier Hilfe zu bekommen *g* =]
Vielen Dank im voraus.
Smoki