Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 将UDP数据包解码到Netflow_Python_Scapy_Netflow - Fatal编程技术网

Python 将UDP数据包解码到Netflow

Python 将UDP数据包解码到Netflow,python,scapy,netflow,Python,Scapy,Netflow,我遇到了Wiresharkdecode as功能,在该功能中,我可以将UDP数据包解码为CFLOW,以获取我的Netflow数据 是否可以编写一个脚本来解码UDP数据包并获取Netflow数据 目前我正在尝试使用python3 scapy。在那里我嗅到了空气 接口并仅检索UDP数据包。我现在被卡住了,因为我不知道 我下一步该做什么 注意:我的重点是Netflow版本9 下面是我的代码: from scapy.all import * ## Create a Packet Counter cou

我遇到了Wireshark
decode as
功能,在该功能中,我可以将UDP数据包解码为
CFLOW
,以获取我的Netflow数据

是否可以编写一个脚本来解码UDP数据包并获取Netflow数据

目前我正在尝试使用python3 scapy。在那里我嗅到了空气 接口并仅检索UDP数据包。我现在被卡住了,因为我不知道 我下一步该做什么

注意:我的重点是Netflow版本9

下面是我的代码:

from scapy.all import *

## Create a Packet Counter
counter = 0
INTERFACE = "<interface_name>"

## Define our Custom Action function
def custom_action(pkts):
    for packet in pkts:
        if (packet.haslayer(UDP)):
             # do something , what should i do?

if __name__ == "__main__":
    ## Setup sniff, filtering for IP traffic
    sniff(iface=INTERFACE, prn = custom_action, store=0)
从scapy.all导入*
##创建数据包计数器
计数器=0
INTERFACE=“”
##定义我们的自定义操作函数
def自定义行动(pkts):
对于pkts中的数据包:
如果(数据包层(UDP)):
#做点什么,我该怎么办?
如果名称=“\uuuuu main\uuuuuuuu”:
##设置嗅探,过滤IP流量
嗅探(iface=接口,prn=自定义操作,存储=0)

供参考,您可以在pkt中使用
层,而不是“旧的”
pkt.haslayer(层)
。这将适用于(适用于Python 3)

prn
回调接受数据包,而不是数据包列表或生成器

如果要使用
NetflowHeader()
解析任何UDP数据包,可以执行以下操作:

def custom_action(pkt):
    if UDP in pkt:
        pkt[UDP].payload = NetflowHeader(raw(pkt[UDP].payload))

pkts = sniff(iface=INTERFACE, prn=custom_action)
但是,在Scapy中,最接近Wireshark“解码为”功能的方法是简单地覆盖
UDP
.payload\u guess
属性:

UDP.payload_guess = [({}, NetflowHeader)] 
pkts = sniff(iface=INTERFACE)

我在哪里可以获得
NetflowHeader()
以及它的用途?p、 我对斯卡皮来说是个新手。谢谢
NetflowHeader()
是将数据解码为Netflow所需的Scapy层。从获取最新版本。谢谢!我设法使NetflowHeader()工作。当我阅读scapy的netflowv9文档时。这是否意味着当我想将UDP数据包解码为Netflow v9时,我只需将其改为:
pkt[UDP].payload=NetflowHeaderV9(原始(pkt[UDP].payload))
?它将返回原始Netflow v9对象。是吗?不是。当
NetflowHeader
将版本解码为9时,您将看到
NetflowHeaderV9
层。NetflowHeader应以版本号开头。