Scapy网络包构造与嗅探
Scapy网络包构造与嗅探
Scapy 简介
Scapy 是一个强大的网络包处理工具,可以构造、发送、嗅探和解析网络数据包。它是网络安全研究和协议分析的利器。
基本用法
from scapy.all import *
# 构造 ICMP 包
pkt = IP(dst="target_ip") / ICMP()
reply = sr1(pkt, timeout=2)
if reply:
print(f"Host is alive: {reply.src}")ARP 扫描
ans, _ = srp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(pdst="192.168.1.0/24"), timeout=3)
for _, rcv in ans:
print(f"{rcv.psrc} - {rcv.hwsrc}")SYN 端口扫描
pkt = IP(dst="target") / TCP(dport=80, flags="S")
ans = sr1(pkt, timeout=2)
if ans and ans[TCP].flags == "SA":
print("Port 80 is open")数据包嗅探
sniff(filter="tcp port 80", count=10, prn=lambda x: x.summary())总结
Scapy 提供了从底层构造网络包的能力,是理解网络协议和开发安全工具的必备库。