Создание пакетов IP-уровня в PHP? - PullRequest
2 голосов
/ 25 октября 2011

Мне интересно, возможно ли создавать пакеты сетевого уровня (т.е. определять мои собственные заголовки IP) с помощью PHP?Похоже, что socket_create с SOCK_RAW позволяет определять только содержимое IP-пакета, а не сами заголовки.

Заранее спасибо за ваши ответы!

1 Ответ

0 голосов
/ 26 октября 2011

Мне удалось успешно создать сокет, используя SOCK_RAW в Mac OS X, при условии, что я запускал сценарий от имени пользователя root.

Пример, который я использовал, был взят из ping Джина Чарльза Мамманы.inc.php

Я создал оболочку ping.php и выполнил: sudo ping.php www.google.com.

Вот моя оболочка ping.php:

<?php

$default_timeout = 15;

require("ping.inc.php");

if (count($argv) < 2) usage();

$timeout = count($argv) >= 3 ? intval($argv[2]) : $default_timeout;
$host = $argv[1];

$result = ping($host, $timeout);
if ($result < 0) {
    echo "Error: " . $g_icmp_error . "\n";
} else {
    echo "$result ms\n";
}

function usage() {
    global $argv;
    echo "Usage: {$argv[0]} <host> [timeout]\n";
    die();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...