from scapy.all import * import re def packet_callback(packet): # 过滤MySQL流量 if packet.haslayer(TCP) and packet.haslayer(Raw) and packet[TCP].dport == 3306: # 解码MySQL协议 payload = str(packet[TCP].payload, 'utf-8', errors='ignore') if re.search(r'(\bUNION\b|\bSELECT\b.*\bFROM\b)', payload, re.IGNORECASE): # 检测到SQL注入攻击 print('[!] SQL Injection detected from {}:{}'.format(packet[IP].src, packet[TCP].sport)) # 开始抓包 sniff(filter='tcp port 3306', prn=packet_callback)代码中没有引用TCP和IP
时间: 2023-12-26 16:06:22 浏览: 177
cannot import name 'NPCAP_PATH' 问题的scapy替换文件
5星 · 资源好评率100%
这是因为 Scapy 库中的 Packet 类已经自动解析了 TCP 和 IP 层,可以在 packet[TCP] 和 packet[IP] 中直接访问它们的字段。因此,我们可以直接使用 packet.haslayer(TCP) 和 packet.haslayer(IP) 来检查是否存在 TCP 和 IP 层。同时,payload 字段也可以通过 packet[TCP].payload 直接访问。
阅读全文