使用Python检测ARP扫描并获取攻击者源IP的技术实现问询
检测ARP扫描行为并定位攻击者IP的实现方案
想要检测网络里的ARP扫描并揪出攻击者IP?通过统计异常数量的ARP请求包就可以做到——毕竟ARP扫描本质就是向广播MAC地址发送大量请求,以此探测网段内的存活主机。下面是一个基于pyshark库的可行实现,附详细逻辑说明:
实现代码
import pyshark # 读取目标pcap文件,过滤ARP请求+广播目标MAC的数据包,仅加载摘要信息提升效率 cap = pyshark.FileCapture('arpscan.pcap', display_filter='arp.opcode==1 && arp.dst.hw_mac==00:00:00:00:00:00', only_summaries=True) count = 0 for pkt in cap: count += 1 # 当ARP请求数超过阈值时,判定存在扫描行为 if count > 10: print("\nSomeone is scanning your network!\n") print("To find the attacker's IP, check the 'Tell' section in the packet summary.")
代码逻辑拆解
- 精准过滤扫描特征包:
arp.opcode==1锁定ARP请求包(opcode=2为响应包),arp.dst.hw_mac==00:00:00:00:00:00筛选目标MAC为广播地址的数据包——这是ARP扫描的核心特征,攻击者靠广播请求覆盖整个网段。 - 轻量化处理:
only_summaries=True让pyshark只加载数据包的摘要信息,不用解析完整包结构,既省内存又提速。 - 阈值可灵活调整:这里设的阈值是10,你可以根据自己网络的正常ARP请求频率修改这个数值,比如办公网络可以适当调高,避免误报。
- 攻击者IP定位:数据包摘要里的「Tell」字段会显示发送ARP请求的源IP,这就是攻击者的地址啦。
内容的提问来源于stack exchange,提问作者goldy mata
相关产品推荐
相关产品推荐

