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

Decode raw Netflow Data to human readable text in Python

我设法收集了一些原始 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 版本支持 on-the-flow netflow v9 解析(使用 GitHub 主版本)。

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

原文post:

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

您需要收集 netflowV9 数据包列表,然后调用 netflowv9_defragment(thelist)

https://github.com/secdev/scapy/blob/master/scapy/layers/netflow.py#L11

这仅意味着您不能将 prn 与 NetflowV9

一起使用