-3

PHP で記述された UDP スプーファーに取り組んでおり、これらのパケットを偽造する方法を知りたいと思っていました。どんな助けでも大歓迎です。ありがとうございました!

4

2 に答える 2

0

次の関数は、PHP でポート番号を持つソケットを作成します。なりすましの内容によっては、「メッセージ」を変更する必要があります。以下の例では平文ですが、多くの場合、アプリケーションはこれをバイナリ情報の形式で送信します。これは、なりすましのために事前に設計する必要があります。

function sendUDP($host, $msg, $timeout = 1) {
/* ICMP ping packet with a pre-calculated checksum */
$socket  = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));

socket_connect($socket, $host, 8000); //Set up to send to port 8000, change to any port

socket_send($socket, $msg, strLen($msg), 0);

$buf = "";
$from = "";
$port = 0; 

@socket_recvfrom($socket , $buf , 24 , 0 , $from , $port );
socket_close($socket); 

return $buf;
}
于 2013-09-16T17:15:22.250 に答える
0

それらのコードを読んでください:server.php

<?php

//error_reporting( E_ALL );
set_time_limit( 0 );
ob_implicit_flush();
$socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
if ( $socket === false ) {
    echo "socket_create() failed:reason:" . socket_strerror( socket_last_error() ) . "\n";
}
$ok = socket_bind( $socket, '202.85.218.133', 11109 );
if ( $ok === false ) {
    echo "socket_bind() failed:reason:" . socket_strerror( socket_last_error( $socket ) );
}
while ( true ) {
    $from = "";
    $port = 0;
    socket_recvfrom( $socket, $buf,1024, 0, $from, $port );
    echo $buf;
    usleep( 1000 );
}
?>

client.php

<?php
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$msg = 'hello';
$len = strlen($msg);
socket_sendto($sock, $msg, $len, 0, '202.85.218.133', 11109);
socket_close($sock);
?>
于 2013-09-16T17:17:54.333 に答える