Python实现ARP检测防护软件设计模块包含能够获取局域网活动主机的MAC地址、IP地址能够检测防护ARP攻击行为并记录保存能够显示出ARP攻击源的MAC地址、IP地址。
以下是一个基本的Python实现ARP检测防护软件的设计:
- 导入必要的模块
import os
import sys
import time
import socket
import struct
import binascii
import threading
from scapy.all import *
- 定义全局变量
# 存储局域网活动主机的MAC地址和IP地址
active_hosts = {}
# 存储ARP攻击行为的记录
arp_attacks = []
- 定义获取MAC地址的函数
def get_mac_address(ip_address):
try:
# 发送ARP请求获取MAC地址
ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip_address), timeout=2, verbose=False)
for snd, rcv in ans:
return rcv.sprintf("%Ether.src%")
except:
pass
return None
- 定义获取IP地址的函数
def get_ip_address():
# 获取本机IP地址
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
ip_address = s.getsockname()[0]
s.close()
return ip_address
- 定义检测ARP攻击行为的函数
def detect_arp_attack(pkt):
# 判断是否为ARP请求或响应包
if ARP in pkt and (pkt[ARP].op == 1 or pkt[ARP].op == 2):
# 获取源MAC地址和源IP地址
src_mac = pkt[ARP].hwsrc
src_ip = pkt[ARP].psrc
# 判断是否为已知主机
if src_mac in active_hosts and active_hosts[src_mac] == src_ip:
return
# 记录ARP攻击行为
arp_attacks.append((src_mac, src_ip))
- 定义获取局域网活动主机的函数
def get_active_hosts():
global active_hosts
# 获取本机IP地址和子网掩码
ip_address = get_ip_address()
netmask = socket.inet_ntoa(struct.pack('I', socket.htonl(0xffffffff ^ (1 << 32 - socket.ntohl(struct.unpack("I", socket.inet_aton(socket.gethostbyname(socket.gethostname())))[0]).bit_length()))))
# 发送ARP请求获取局域网活动主机的MAC地址和IP地址
ans, unans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=netmask), timeout=2, verbose=False)
for snd, rcv in ans:
active_hosts[rcv.sprintf("%Ether.src%")] = rcv.sprintf("%ARP.psrc%")
- 定义显示ARP攻击源的函数
def show_arp_attacks():
global arp_attacks
# 去重
arp_attacks = list(set(arp_attacks))
# 显示ARP攻击源的MAC地址和IP地址
print("ARP attacks:")
for attack in arp_attacks:
print("MAC address: " + attack[0] + ", IP address: " + attack[1])
- 定义主函数
if __name__ == "__main__":
# 获取局域网活动主机
get_active_hosts()
# 监听ARP请求和响应包
sniff(prn=detect_arp_attack, filter="arp", store=0)
# 显示ARP攻击源
show_arp_attacks()
以上是一个简单的Python实现ARP检测防护软件的设计,可以根据实际需求进行修改和完善
原文地址: https://www.cveoy.top/t/topic/ffxK 著作权归作者所有。请勿转载和采集!