使用 Scapy 嗅探数据包
Scapy 是一个用Python编写的强大且通用的数据包操作工具。使用 scapy,用户将能够发送、嗅探、剖析和伪造网络数据包。 Scapy 还能够将嗅探到的数据包存储在 pcap 文件中。使用 scapy,我们将能够轻松处理跟踪路由、探测、扫描、单元测试和网络发现等任务。所有这些特性使 scapy 对基于网络的攻击非常有用。
如前所述,scapy 执行范围广泛的网络任务,其中一项任务是数据包嗅探。数据包嗅探是捕获流经计算机网络的所有数据包的过程。嗅探到的数据包会泄露很多信息,比如用户访问了什么网站、用户看到了什么内容、用户下载了什么以及几乎所有内容。捕获的数据包通常会存储起来以备将来分析。
在本文中,我们将学习如何使用 scapy 嗅探数据包并将嗅探到的数据包存储在 pcap 文件中。
要在 scapy 上工作,我们需要在我们的计算机上安装 scapy。
sudo apt-get install python3-scapy
现在我们已经安装了scapy ,在终端中输入“ scapy ”打开 scapy shell。
使用 scapy 嗅探数据包:
要嗅探数据包,请使用sniff()函数。 sniff()函数返回有关已嗅探的所有数据包的信息。
capture = sniff()
要查看数据包响应的摘要,请使用summary()。
capture.summary()
sniff()函数无限期地侦听,直到用户中断。
为了限制要捕获的数据包数量,sniff() 允许使用计数参数。通过为计数指定一个值,抓包将被限制为指定的数量。
capture = sniff(count=5)
您还可以在使用filter参数嗅探时过滤数据包。它使用伯克利数据包过滤器 (BPF) 语法。
以下命令将仅捕获 TCP 数据包:
sniff(filter="tcp", count=5)
同样,您可以使用BPF语法根据源/目标 IP 地址、端口号、协议等过滤任何数据包。
当 scapy 嗅探数据包时,它通常会从您的所有网络接口中嗅探。但是,我们可以使用iface参数明确提及我们想要嗅探的接口。 iface 可以是一个元素或一个元素列表。
sniff(iface="eth0", count=5)
sniff()函数有另一个有趣的参数prn ,它允许您传递一个函数,该函数在嗅探每个数据包时执行。这允许我们对嗅探的每个数据包执行一些自定义操作。
sniff(prn=lambda x:x.summary(), count=5)
Scapy 还允许我们将嗅探到的数据包存储在pcap文件中。运行以下命令会将嗅探到的数据包写入 pcap:
wrpcap("", capture)
其中 capture 是嗅探数据包的列表。
可以使用 Wireshark、tcpdump、WinDump、Packet Square 等分析存储的 pcap 文件。
使用 Wireshark 打开 GfG.pcap:
我们还可以通过运行以下命令从 pcap 文件中离线嗅探数据包:
sniff(offline="")