gpt4 book ai didi

python - 如何读取除Pyshark之​​外比Scapy的rdpcap()更快的.cap文件?

转载 作者:行者123 更新时间:2023-12-01 22:49:21 26 4
gpt4 key购买 nike

我一直在寻找一种将 802.11 数据包从 .cap 文件获取到数组中的方法。到目前为止我发现:

  • 斯卡比:这很好,有可用的文档,但太慢了,当我尝试打开一个大小 > 40 Mb 的文件时,我会一直坚持下去,直到它耗尽我所有的 RAM(全部 16 GB),此时我的电脑就这样了阻塞,我必须重新启动它

  • Pyshark:没有Scapy的任何问题,但是文档太少,我找不到处理和获取802.11数据包属性的方法

所以我在想也许有更好的解决方案,或者也许有人确实有 pyshark 的经验?

from scapy.all import *
import pyshark
from collections import defaultdict
import sys
import math
import numpy as np
counter=0
Stats = np.zeros((14))
filename='cap.cap'

a = rdpcap(filename)
print len(a)
for p in a:
pkt = p.payload
#Management packets
if p.haslayer(Dot11) and p.type == 0:
ipcounter = ipcounter +1
Stats[p.subtype] = Stats[p.subtype] + 1

print Stats

注意:当我使用 10 MB 输入(例如)启动程序时,大约需要 20 秒左右,但它确实有效,我想知道为什么会这样,为什么它与 pyshark 如此不同以及是什么样的它在做什么计算?

最佳答案

您可以修补名为 utils.py 的 scapy 文件,这样它就不会将所有内容加载到内存中

更改:

def read_all(self,count=-1):
"""return a list of all packets in the pcap file
"""
res=[]
while count != 0:
count -= 1
p = self.read_packet()
if p is None:
break
res.append(p)
return res

def read_all(self,count=-1):
"""return an iterable of all packets in the pcap file
"""
while count != 0:
count -= 1
p = self.read_packet()
if p is None:
break
yield p
return

功劳归于: http://comments.gmane.org/gmane.comp.security.scapy.general/4462

但是链接现在失效了

关于python - 如何读取除Pyshark之​​外比Scapy的rdpcap()更快的.cap文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com