使用 Scapy 读取 20 GB 文件

时间:2021-01-27 12:32:45

标签: python networking wireshark scapy pcap

  1. 我有一个 20GB 大小的 Pcap 文件。我想用 Scapy 分析它。每当我想使用 Scapy 阅读它时,我的笔记本电脑就会挂起。无论如何,是否可以分块读取此文件(一次几 MB),然后将它们保存在小的 pcaps 文件中。 (请注意,我只有一台机器。没有大数据系统解决这个问题)
  2. 如何使用 python Scapy 从这些 pcap 文件中获取会话数据。有多个标志、ips 和端口。如何从每个会话中获取数据并将其存储在单独的 pcap 文件中。

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您安装了 Wireshark(对于 Windows 和 macOS,从用于 Linux、*BSD 和其他未命名为“macOS”的 UN*X 的软件包安装 download from the main Wireshark site),它带有一个程序名为 editcap 的工具可以将一个捕获文件拆分为多个较小的捕获文件。

请注意,默认情况下,它写入的是 pcapng 文件,而不是 pcap 文件,因此如果 Scapy 使用自己的代码读取文件,而不是使用 libpcap(较新版本的 libpcap 可以读取一些 pcapng 文件),您可能必须将 -F pcap 指定为 editcap 的标志才能使其写入 pcap 文件。

(还要注意,pcap 文件不是文本文件,因此您不能“逐行”读取它们 - pcap 文件中没有“行”这样的东西。它们'阅读起来并不简单,因此如果可能,您最好使用 editcap,而不是编写自己的程序来读取 pcap 文件。

如果您确实编写自己的程序来读取 pcap 文件,那么您最好使用 libpcap 来读取它,而不是尝试自己解析 pcap 文件格式。如果您使用 Python 编写它,请参阅例如 pcapy。)

答案 1 :(得分:0)

我可以提供一些一般性建议。

This website 描述了 PCAP 文件的格式。根据该网站,格式如下:

Global Header | Header1 | Data1 | Header2 | Data2 | ... | HeaderN | DataN

他的页面解释了如何读取全局标题,并使用 openseek 函数您可以从文件中读取 N 个字节,无论是从头开始还是从更远的某个点开始。然后,您可以将这个 20GB 的文件分解为一些较小的文件,文件的大小取决于您的可用内存。