我一直在寻找一种方法将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如此不同以及它是什么类型的计算在做什么?
您可以修补名为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
Run Code Online (Sandbox Code Playgroud)
至
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
Run Code Online (Sandbox Code Playgroud)
学分归于:http: //comments.gmane.org/gmane.comp.security.scapy.general/4462
但链接现在已经死了
| 归档时间: |
|
| 查看次数: |
9515 次 |
| 最近记录: |