通过Scapy向数据包中添加新协议,但是我看不到控制器或Wireshark上的字段


狗头军师
2025-03-11 10:45:16 (13天前)

我正在尝试通过Scapy将元数据字段添加到pkt。我使用mininet作为启动网络仿真的平台。


  1. from scapy.all import *
    from datetime import datetime
    class Metadata(Packet):
    name = Metadata
    fieldsdesc = [ XByteField(“metadata”, 1) ]

    def generatePackets():
    if len(sys.argv) != 4:
    print Usage: arping2tex \n eg: arping2text 192.168.1.0/24
    sys.exit(1)
    src= sys.argv[1]
    dst= sys.argv[2]
    x = int(sys.argv[3])
    ip=IP(src= src, dst= dst)
    metadata = Metadata(metadata = 200)
    udp=UDP(sport= 2235, dport=5546)#,
    data = datetime.utcnow().strftime(‘%Y-%m-%d %H:%M:%S.%f’)[:-3]
    pkt = (ip/udp/metadata/data)
    print pkt.show()
    send(pkt, count = x)

    if name == _main
    ‘:
    generatePackets()

当我发送PKT时,我可以在发送者(xterm)Xterm上看到带有新字段的发送者的元数据 字段

但是,我在控制器,Wireshark或目标主机上看不到元数据字段。 Xterm用于没有新字段的接收器

请,我需要一个解释,或者我做错了什么。

2 条回复
  1. 1# v-star*위위 | 2020-08-17 16-02

    您的元数据位于另一侧。您可以在接收方的有效载荷上看到它

    您发送的:元数据:c8 /原始的:“一个日期”您收到的数据:原始的:c8“一个日期”

    现在让我们来看看发生了什么。您的接收器会收到带有一些数据的UDP帧。由于尚未注册任何协议,因此它无法知道前2个字节是否已被满足,因此假定它是常规有效负载的一部分。

    您可以通过在发送之前重新打包该命令来确认这一点:pkt.show2()而不是运行pkt.show()

    区别在于show2()在打印之前重建并重新解码了数据包,而show()仅打印了数据包。然后,您将看到发送了接收方收到的内容。

登录 后才能参与评论