Python ARP 攻击检测代码:记录伪造源攻击地址
以下是使用 Python 和 Scapy 库检测 ARP 攻击并记录攻击源信息的代码示例,其中包含对伪造源攻击的识别和日志记录功能。
def detect_attack():
with open('clients.txt', 'r') as f:
clients = f.readlines()
for client in clients:
ip = client.split()[0]
mac = get_mac(ip)
sniff_filter = 'arp and src host ' + ip
sniff_timeout = 10
sniff_count = 0
sniff_packets = sniff(filter=sniff_filter, timeout=sniff_timeout)
for packet in sniff_packets:
sniff_count += 1
if packet.haslayer(ARP) and packet[ARP].op == 2: # 判断是否为ARP响应包
src_mac = packet[ARP].hwsrc # 获取源MAC地址
dst_mac = packet[ARP].hwdst # 获取目标MAC地址
if src_mac != get_mac(ip) and src_mac != '00:00:00:00:00:00': # 判断是否存在伪造源MAC地址的情况
messagebox.showwarning('警告',
'检测到伪造源攻击!攻击源IP地址为' + ip + ',MAC地址为' + mac + ',伪造源MAC地址为' + src_mac + '!')
# 将攻击源信息写入日志文件
with open('detection_log.txt', 'a') as f:
f.write('警告' + '检测到伪造源攻击!攻击源IP地址为' + ip + ',MAC地址为' + mac + ',伪造源MAC地址为' + src_mac + '!\n')
return
if sniff_count > 100:
messagebox.showwarning('警告', '检测到攻击源IP地址为' + ip + ',MAC地址为' + mac + '!')
with open('detection_log.txt', 'a') as f:
f.write('警告' + '检测到攻击源IP地址为' + ip + ',MAC地址为' + mac + '!\n')
else:
messagebox.showinfo('提示', '未检测到攻击源!')
with open('detection_log.txt', 'a') as f:
f.write('提示' + '未检测到攻击源!\n')
return
这段代码中,在 if src_mac != get_mac(ip) and src_mac != '00:00:00:00:00:00': 这个条件语句中,我们检测到伪造源攻击后,会将攻击源的 IP 地址、MAC 地址和伪造源 MAC 地址写入名为 detection_log.txt 的日志文件中。
代码说明:
-
读取目标主机信息:代码首先从
clients.txt文件中读取目标主机的 IP 地址信息,这些信息可以是需要监控的网络中的所有主机 IP 地址。 -
使用 Scapy 库嗅探 ARP 包:代码使用 Scapy 库的
sniff函数来嗅探网络中的 ARP 包。嗅探条件是arp and src host+ 目标主机 IP 地址,这样可以只捕获目标主机的 ARP 包。 -
判断 ARP 包类型:代码检测 ARP 包的类型,如果是 ARP 响应包,则继续分析包内容。
-
检测伪造源 MAC 地址:代码比较 ARP 包中的源 MAC 地址和目标主机真实的 MAC 地址,如果两者不一致,并且源 MAC 地址不是默认的
00:00:00:00:00:00,则判断为伪造源攻击。 -
记录攻击源信息:代码会将攻击源的 IP 地址、MAC 地址和伪造源 MAC 地址记录到日志文件中。
这段代码能够有效地检测 ARP 攻击,并记录攻击源的详细信息,帮助安全分析人员进行攻击追踪和溯源。
注意:
- 代码中需要先安装 Scapy 库,可以使用
pip install scapy命令安装。 - 代码中的
get_mac(ip)函数需要根据实际情况进行定义,用来获取目标主机的真实 MAC 地址。 - 为了更有效地检测攻击,建议使用更长的嗅探时间和更强的安全策略。
- 为了避免代码被恶意利用,建议在使用代码前仔细阅读并理解代码逻辑,并确保代码运行环境的安全。
原文地址: https://www.cveoy.top/t/topic/jojO 著作权归作者所有。请勿转载和采集!