Python ARP 欺骗攻击检测与日志记录

本文将介绍如何使用Python代码检测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')
                        break  # 检测到攻击,跳出循环
            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

代码优化

  1. 检测并记录攻击源: 代码中已经使用了ARP欺骗攻击检测的方法,如果检测到ARP响应包的源MAC地址与该IP地址对应的MAC地址不同,就说明存在伪造源MAC地址的情况,即可能存在ARP欺骗攻击。此时,使用messagebox弹窗提示用户,并将检测结果记录在detection_log.txt文件中。

  2. 被攻击时依然显示未遭到攻击: 代码中,如果未检测到攻击源,就会弹出提示信息“未检测到攻击源!”。这个提示信息会在每个IP地址的检测过程中都弹出,因此如果有多个IP地址被检测,就会出现多个提示信息。为了避免这种情况,将提示信息放在for循环外面,只在所有IP地址检测完成后弹出一次。

  3. 只输出一次信息便退出: 在代码中,如果检测到攻击源或者伪造源MAC地址,就会立即返回,不再检测其他IP地址。因此,如果想要只输出一次信息便退出,将return语句放在for循环外面,只在所有IP地址检测完成后返回。同时,在检测到攻击源或者伪造源MAC地址时,可以使用break语句跳出当前循环,继续执行下一个IP地址的检测。

总结

本文介绍了使用Python代码实现ARP欺骗攻击检测的原理和方法,并提供了代码示例和优化建议,帮助您有效地检测和记录ARP攻击事件,并防止重复提示信息。

Python ARP 欺骗攻击检测与日志记录

原文地址: https://www.cveoy.top/t/topic/jokq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录