我设法收集一些原始的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=[...])
原帖:
Netflow v9格式较差,因为每个数据包都需要解析一些以前的数据包。 Scapy不支持移动中的此功能,但它提供了一个可在数据包列表上调用的函数。
您需要收集netflowV9数据包列表,然后调用netflowv9_defragment(thelist)
见https://github.com/secdev/scapy/blob/master/scapy/layers/netflow.py#L11
这只意味着您不能将prn
与NetflowV9一起使用