ZhekaNerush
Новичок
PHP и сокеты(протокол ICMP). Пинг.
Столкнулся с проблемой реализации пинга на пхп.
В итоге пакеты не шлются. Так мне говорит фаервол (Bytes sent: 0 bytes).
Что не так???
-~{}~ 07.06.06 10:46:
Win, Apache 1.3.33 + PHP 5.1.4
Столкнулся с проблемой реализации пинга на пхп.
PHP:
//проверка контрольной суммы
function icmpChecksum($data)
{
if (strlen($data)%2)
$data .= "\x00";
$bit = unpack('n*', $data);
$sum = array_sum($bit);
while ($sum >> 16)
$sum = ($sum >> 16) + ($sum & 0xffff);
return pack('n*', ~$sum);
}
// Формируем пакет
$type= "\x08";
$code= "\x00";
$checksum= "\x00\x00";
$identifier = "\x00\x00";
$seqNumber = "\x00\x00";
$data= "Scarface";
$package = $type.$code.$checksum.$identifier.$seqNumber.$data;
$checksum = icmpChecksum($package);
$package = $type.$code.$checksum.$identifier.$seqNumber.$data;
//создаём сокет (ICMP)
$socket = socket_create(AF_INET, SOCK_RAW, 1);
//коннектимся
socket_connect($socket, "10.2.150.225", null);
//отправляем что-то
while(true){
socket_send($socket, $package, strLen($package), 0);
}
Что не так???
-~{}~ 07.06.06 10:46:
Win, Apache 1.3.33 + PHP 5.1.4