首页 > 解决方案 > 使用 Scapy 读取 20 GB 文件

问题描述

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

谢谢你。

标签: pythonnetworkingwiresharkscapypcap

解决方案


如果您安装了Wireshark(从 Windows 和 macOS的 Wireshark 主站点下载,从 Linux、*BSD 和其他未命名为“macOS”的 UN*Xes 的软件包安装),它附带一个名为editcap的程序,它可以其他事情,将捕获文件拆分为多个较小的捕获文件。

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

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

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


推荐阅读