UDP端口扫描仪通过使用套接字php


UDP port scanner by using socket php

好吧,使用套接字对TCP端口扫描仪进行编码很容易,但我不知道为什么UDP 很难做到这一点

我只想检查一个特定的UDP端口(比如端口500)是否打开。

这是我的代码:

$ip = '103.12.9.209';
$port = '500';
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$result = socket_connect($socket, $ip, $port);
if ($result)
{
    echo "Port is on";
}
else
{
    echo "Port is off";
}
socket_close($socket);

问题是它总是返回true(端口打开),即使它关闭

问题出在哪里?你知道吗?

谢谢。

您需要向有问题的端口发送一个空UDP帧,并检查ICMP响应。如果您得到ICMP类型2,代码3(无法访问端口),则端口关闭。如果您收到其他代码,如type3、代码1,2,9,10或13),端口将被过滤。如果您收到数据或至少没有收到ICMP响应,则可以假设端口是打开的,但如果没有ICMP响应,就不能确定端口是否打开。