将UDP数据包解码为Netflow

时间:2017-12-05 03:56:21

标签: python scapy netflow

我遇到了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)

1 个答案:

答案 0 :(得分:1)

仅供参考,您可以使用layer in pkt而不是&#34; old&#34; pkt.haslayer(layer)。这适用于development version of Scapy(适用于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)

但最接近Wireshark&#34;解码为&#34; Scapy中的功能只是覆盖UDP的{​​{1}}属性:

.payload_guess