Python ARP 攻击检测软件:实时监控与分析网络安全
这是一个基于 Python 的 ARP 攻击检测软件,它使用 Scapy 库来捕获和分析网络流量,并通过图形用户界面提供直观的检测结果。该软件主要包含以下功能:
- 用户注册与登录: 用户需要注册并登录才能使用该软件,以确保系统安全性。
- 功能界面: 登录成功后,用户将进入功能界面,可以选择“开始攻击检测”或“扫描局域网主机活动”。
- 攻击检测:
- 软件会实时监控网络流量,并分析 ARP 包,以识别可能存在的 ARP 攻击。
- 软件提供了多种攻击检测规则,例如:
- 检测是否出现同一 IP 地址对应不同的 MAC 地址,
- 检测是否出现不同 IP 地址对应同一个 MAC 地址,
- 检测是否存在同一 IP 或 MAC 地址发出大量数据包。
- 软件将分析结果输出到界面上的文本框中,并记录到日志文件中。
- 扫描局域网主机活动: 软件可以扫描局域网内的活动主机,并输出其 IP 地址和 MAC 地址信息。
检测规则:
- 检测应答报文时,判断是否出现同一 IP 地址对应不同的 MAC 地址;是则可能遭受 ARP 攻击。
- 检测请求报文时,判断是否合法且是否出现不同 IP 地址对应同一个 MAC 地址;是则可能遭受 ARP 攻击。
- 检测 ARP 请求或响应包,检测是否存在同一 IP 或同一 MAC 地址发出大量数据包;是则可能遭受 ARP 攻击,不是则未遭受 ARP 攻击。
输出结果:
如果同时满足两种或以上的攻击规则,则输出“遭受 ARP 攻击”。 如果不满足任何攻击规则,则输出“未遭受 ARP 攻击”。 所有信息将被保存到日志文件中。
代码示例:
import os
import sys
import time
import tkinter as tk
from tkinter import messagebox
from scapy.all import *
from threading import Thread
# 全局变量
users = {}
log = []
ar_resp_packets = {}
ar_req_packets = {}
active_hosts = {}
# GUI 界面
class GUI:
def __init__(self, root):
self.root = root
self.root.title('ARP 攻击检测软件')
self.root.geometry('600x500')
# ... 界面元素定义...
# 用户注册
def register(self):
username = self.username_entry.get()
password = self.password_entry.get()
if username in users:
messagebox.showerror('错误', '该用户已注册')
else:
users[username] = password
messagebox.showinfo('提示', '注册成功')
# 用户登录
def login(self):
# ... 登录逻辑...
# ... 其他界面事件处理函数 ...
# 主函数
if __name__ == '__main__':
# 读取用户信息
if os.path.exists('users.txt'):
with open('users.txt', 'r') as f:
for line in f:
line = line.strip()
if line:
username, password = line.split(':')
users[username] = password
# GUI 界面
root = tk.Tk()
app = GUI(root)
root.protocol('WM_DELETE_WINDOW', app.exit)
root.mainloop()
# 保存用户信息
with open('users.txt', 'w') as f:
for username, password in users.items():
f.write(username + ':' + password + '
')
注意事项:
- 该代码示例仅供参考,实际应用中可能需要根据具体需求进行调整。
- 使用 Scapy 库需要管理员权限。
- 使用该软件进行网络流量分析时,请确保遵守相关法律法规。
- 建议将日志文件保存到安全的目录,并定期备份。
更多信息:
- ARP 攻击原理: https://en.wikipedia.org/wiki/ARP_spoofing
- Scapy 库: https://scapy.net/
原文地址: https://www.cveoy.top/t/topic/jpyf 著作权归作者所有。请勿转载和采集!