📜  使用 Scapy 嗅探数据包

📅  最后修改于: 2022-05-13 01:57:27.907000             🧑  作者: Mango

使用 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:

在 Wireshark 中分析 scapy 嗅探的数据包

我们还可以通过运行以下命令从 pcap 文件中离线嗅探数据包:

sniff(offline="")