【问题标题】:Reading 20 GB file Using Scapy使用 Scapy 读取 20 GB 文件
【发布时间】:2021-01-30 13:21:41
【问题描述】:
  1. 我有一个 Pcap 文件,其大小为 20GB。我想用 Scapy 分析它。每当我想使用 Scapy 阅读时,我的笔记本电脑都会挂起。无论如何要以块的形式读取此文件(一次几 MB),然后将它们保存在小的 pcaps 文件中。 (请注意,我只有一台机器。没有大数据系统来解决这个问题)
  2. 如何使用 python Scapy 从这些 pcap 文件中获取 会话数据。有多个标志、ips 和端口。如何从每个会话中获取数据并存储在单独的 pcap 文件中。

谢谢。

【问题讨论】:

    标签: python networking wireshark scapy pcap


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 谢谢。这有助于打开文件并逐行读取。
      猜你喜欢
      • 2015-04-24
      • 2017-08-15
      • 2021-03-14
      • 2020-06-16
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多