Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python将原始Netflow数据解码为人类可读的文本_Python_Scapy_Netflow - Fatal编程技术网

用Python将原始Netflow数据解码为人类可读的文本

用Python将原始Netflow数据解码为人类可读的文本,python,scapy,netflow,Python,Scapy,Netflow,我设法收集一些原始的Netflow数据,并使用scapy将我的数据包解码为Netflow版本9。但是,我被卡住了,无法继续将字段值转换为人类可读的文本。下面的代码是我如何使用scapy查看数据的: from scapy.all import * def handle(self, ip, data): logging.info('Receiving Data from %s with %s bytes of data.' % (ip, len(data))) a = N

我设法收集一些原始的Netflow数据,并使用scapy将我的数据包解码为Netflow版本9。但是,我被卡住了,无法继续将字段值转换为人类可读的文本。下面的代码是我如何使用scapy查看数据的:

from scapy.all import *

def handle(self, ip, data):     
    logging.info('Receiving Data from %s with %s bytes of data.' % (ip, len(data)))
    a = NetflowHeader(raw(data))
    a.show()
这是我得到的输出:


更新:较新的Scapy版本支持流上netflow v9解析(使用GitHub主版本)。

# Live / on-the-flow / other: use NetflowSession
>>> sniff(session=NetflowSession, prn=[...])
原创帖子:

Netflow v9是一种糟糕的格式,因为每个数据包都需要解析一些以前的数据包。Scapy不支持这个功能,但是它提供了一个可以在数据包列表中调用的函数

您需要收集netflowV9数据包列表,然后调用
netflowV9\u碎片整理(列表)


这只意味着你不能将
prn
与NetflowV9一起使用,我明白了,我理解这个函数可以做什么,我得到了我想要的结果,但还有一个问题。那就是我真的需要在流媒体中运行此作业。也就是说,我想我必须使用
prn
。有没有一种方法可以让我把每一条记录都转换成可读的文本,而不把它们放在列表中?在当前的scapy中,没有内置的方法可以做到这一点。我们有一些创建“会话”的计划,但没有发布日期(我们真的没有时间去做)…问题是有些数据包包含如何创建其他数据包的“计划”。为了能够解剖它们,我们需要同时拥有所有这些。
netflowv9_碎片整理是一个临时功能(如netflow.py文件中所述:“此API随时可能更改”)@z.yea FTR我已更新了答案。较新的Scapy版本集成了此功能:-)