使用Scapy读取20gb文件

2024-05-16 00:39:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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

多谢各位


Tags: 文件数据端口ip机器标志pcapmb
2条回答

如果您已经安装了Wiresharkdownload from the main Wireshark sitefor Windows和macOS,从Linux、*BSD和其他未命名为“macOS”的UN*XE包安装),那么它附带了一个名为editcap的程序,除其他外,该程序可以将捕获文件拆分为多个较小的捕获文件

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

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

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

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

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

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

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

相关问题 更多 >