用Python将原始Netflow数据解码为人类可读的文本
我设法收集一些原始的Netflow数据,并使用scapy将我的数据包解码为Netflow版本9。但是,我被卡住了,无法继续将字段值转换为人类可读的文本。下面的代码是我如何使用scapy查看数据的:用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
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版本集成了此功能:-)