我一直在寻找一种方法将802.11数据包从.cap文件转换为数组.到目前为止,我发现:
Scapy:这是一个很好的,文档可用,但太慢,当我尝试打开一个大小> 40 Mb的文件,我只是一直挂着,直到它消耗我所有的Ram(所有16演出),此时我的电脑只是块,我必须重新启动它
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
Run Code Online (Sandbox Code Playgroud)
注意:当我启动带有10兆字节输入的程序时(例如)大约需要20秒左右,但它确实有效,我想知道为什么会这样,为什么它与pyshark如此不同以及它是什么类型的计算在做什么?