基于Linux的Python ARP攻击检测软件
基于Linux的Python ARP攻击检测软件
本软件是一款运行于Linux系统,使用Python语言编写的ARP攻击检测工具,旨在帮助用户实时监测网络中的ARP攻击行为,并提供相应的安全防护措施。
软件功能
本软件主要实现以下功能:
- 数据包捕获与过滤: 捕获网络中的数据包,并过滤出ARP协议数据包,为后续分析提供基础数据。
- ARP攻击检测:
- 检测同一IP地址对应多个MAC地址的情况,识别ARP欺骗攻击。
- 检测不同IP地址对应相同MAC地址的情况,识别ARP欺骗攻击。
- 检测同一IP或MAC地址发送大量ARP数据包的情况,识别ARP泛洪攻击。
- 可视化界面: 采用Tkinter库构建用户友好的图形界面,方便用户进行操作和查看结果。
- 用户登录注册: 用户需要注册账号并登录后才能使用软件的各项功能,保障软件的安全性。
- 局域网主机扫描: 扫描局域网内的活动主机,并获取其IP地址和MAC地址信息。
- 攻击信息记录: 将检测到的攻击信息详细记录到日志文件中,方便用户进行溯源分析。
软件实现
主要技术
- Python: 编程语言,用于实现软件的各项功能逻辑。
- Scapy: 强大的网络数据包处理库,用于数据包的捕获、分析和构造。
- Tkinter: Python内置的GUI库,用于构建软件的可视化界面。
检测规则
- 应答报文检测: 若同一IP地址对应多个不同的MAC地址,则判定为可能遭受ARP攻击。
- 请求报文检测: 若存在不同IP地址对应同一个MAC地址,且请求报文不合法,则判定为可能遭受ARP攻击。
- 数据包数量检测: 若检测到同一IP地址或MAC地址发送大量ARP数据包,则判定为可能遭受ARP攻击。
- 综合判定: 当满足以上两种或两种以上规则时,则判定为遭受ARP攻击,否则判定为未遭受攻击。
代码示例 (部分)
# ... 其他代码 ...
# 判断是否遭受ARP攻击
def is_arp_attack():
# ... 获取本机IP、MAC地址以及网关IP、MAC地址 ...
arp_mac_dict = {} # 存储IP地址与MAC地址的对应关系
arp_ip_dict = {} # 存储IP地址与ARP包数量的对应关系
def arp_monitor_callback(packet): # 数据包处理回调函数
# ... 判断ARP包类型、合法性,更新arp_mac_dict和arp_ip_dict ...
sniff(prn=arp_monitor_callback, filter='arp', store=0, timeout=60) # 监听ARP数据包
attack_flag = False # 攻击标志,初始值为False
attack_info = '' # 攻击信息
# ... 根据检测规则判断是否遭受攻击,并更新attack_flag和attack_info ...
if attack_flag:
messagebox.showwarning('ARP攻击检测', '检测到ARP攻击\n' + attack_info)
else:
messagebox.showinfo('ARP攻击检测', '未检测到ARP攻击')
# ... 其他代码 ...
使用说明
- 下载软件源码,并在Linux系统中安装Python3环境以及Scapy、Tkinter库。
- 运行
python main.py命令启动软件。 - 注册账号并登录,进入软件主界面。
- 点击'开始攻击检测'按钮开始进行ARP攻击检测。
- 点击'扫描局域网主机'按钮扫描局域网内的活动主机。
- 点击'停止攻击检测'按钮停止ARP攻击检测。
注意事项
- 本软件仅供学习和研究使用,请勿用于非法用途。
- 使用本软件前请确保您拥有相应的网络权限。
- 本软件的检测结果仅供参考,不构成任何安全建议。
原文地址: https://www.cveoy.top/t/topic/jplq 著作权归作者所有。请勿转载和采集!