Scapy网络包构造与嗅探

约 2 分钟读完

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 提供了从底层构造网络包的能力,是理解网络协议和开发安全工具的必备库。

← Web日志分析实战 Requests库与HTTP请求 →