<!DOCTYPE html>
底层网络嗅探
UDP主机发现工具:
原理,发送UDP数据包到一个端口,如果接受到一个ICMP响应,说明这个主机是开启的。
注意脚本中的host的IP设置。用管理员运行命令提示符,捕获并输出一个数据包
试一试将IP设置为 非本机。结果出错如下图。
只能嗅探一个数据包显然用处不大,下面添加一些功能,来捕获更多数据包,并解码它的内容。
运行该脚本。
在linux下,运行该脚本。
解码ICMP(互联网控制报文协议):ICMP的内容差异有时非常大,但是每个信息都包含的三个元素,类型,代码,校验和。类型和代码,告诉接受主机,到达的是什么类型的ICMP消息。
为了我们扫描器的目的,我们寻找类型和代码值等于3的数据包。这是目的地不可达的ICMP类型,代码值为3代表端口不可达。
就像上面的IP结构一样,设置ICMP结构
接下来再上面的脚本,添加一个netaddr功能,做主机发现扫描的时候就可以覆盖整个子网。
https://code.google.com/archive/p/netaddr/downloads,下载第三方库netaddr
netaddr-0.7.4.win32.exe 双击运行安装。
然后运行该脚本。

用nmap测试一下,nmap -sS ip
结果显示该ip seems down,怎么回事
再用nmap -sS -Pn ip
结果显示ip的所有端口都被过滤,怪不得第一次扫不出。看了脚本scanner.py准确率还不错。