09
2025
04
17:20:16

php扫描同路由下的设备

前文

今天试试用xfping扫下局域网下的设备。

获取子网下所有ip

function getRandIpInRange($cidr){
    [$subnet, $mask] = explode('/', $cidr);
    $ret = [];
    $l = pow(2, 32 - $mask) - 1;
    $subnet = ip2long($subnet);    for ($i = 1; $i < $l; $i = $i + 1) {
        $ip = long2ip(bcadd($subnet, $i));
        $ret[] = substr($ip, 0, strrpos($ip, '.')).'.'.$i;
    }    return $ret;
}//demo$ip_list = getRandIpInRange('192.168.1.1/24');

获取设备名

这里修改了xfing formet 函数

$host_list = [];function formet($ip, $ret){    global $host_list;
    ...// 全丢包的不要
   if($loss==100){        return '';
    }// 获取设备名
    $host_name = isset($host_list[$ip])?$host_list[$ip]:($host_list[$ip]=gethostbyaddr($ip));    return sprintf('ip=%s name=%s send=%d recive=%d loss=%.2f%%  min=%.2fms max=%.2fms avg=%.2fms ', $ip,$host_name, $sc, $rc, $loss, $min,
        $max, $avg);
}

结果

php subnetScan.php
ret
ip=192.168.2.240 name=192.168.2.240 send=2 recive=2 loss=0.00%  min=2.29ms max=5.26ms avg=3.78ms
ip=192.168.2.215 name=host.docker.internal send=2 recive=2 loss=0.00%  min=0.19ms max=0.24ms avg=0.21ms
ip=192.168.2.13 name=BL-c0-74-68.lan send=2 recive=2 loss=0.00%  min=88.79ms max=95.27ms avg=92.03ms
ip=192.168.2.50 name=192.168.2.50 send=2 recive=2 loss=0.00%  min=2.99ms max=3.43ms avg=3.21ms
ip=192.168.2.1 name=RT-AC3100-C45B.lan send=2 recive=2 loss=0.00%  min=2.30ms max=2.58ms avg=2.44ms
ip=192.168.2.78 name=TL-IPC42A-4.lan send=2 recive=2 loss=0.00%  min=7.90ms max=8.11ms avg=8.00ms
ip=192.168.2.205 name=MI5-xiaomishouji.lan send=2 recive=1 loss=50.00%  min=43.75ms max=43.75ms avg=43.75ms
total time_ms 8042.7348613739
total cnt 6

和实际情况一致的。

问题

  1. 苹果手机如果息屏,不响应回包。

  2. 查设备名有时候很慢

酒店检测摄像头?

其实我觉得可能没什么卵用,禁用ping就把这种扫描器搞定了。




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/10289.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: