前文
今天试试用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
和实际情况一致的。
问题
苹果手机如果息屏,不响应回包。
查设备名有时候很慢
酒店检测摄像头?
其实我觉得可能没什么卵用,禁用ping就把这种扫描器搞定了。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/10289.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~