Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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 Scapy向数据包添加了一个新协议,但我在控制器或Wireshark上没有看到该字段_Python_Scapy_Sdn_Mininet_Openflow - Fatal编程技术网

Python Scapy向数据包添加了一个新协议,但我在控制器或Wireshark上没有看到该字段

Python Scapy向数据包添加了一个新协议,但我在控制器或Wireshark上没有看到该字段,python,scapy,sdn,mininet,openflow,Python,Scapy,Sdn,Mininet,Openflow,我正试图通过Scapy向pkt添加一个元数据字段。我使用mininet作为平台来启动我的网络模拟 from scapy.all import * from datetime import datetime class Metadata(Packet): name = "Metadata" fields_desc = [ XByteField("metadata", 1) ] def generatePackets(): if

我正试图通过Scapy向pkt添加一个元数据字段。我使用mininet作为平台来启动我的网络模拟

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

def generatePackets():
      if len(sys.argv) != 4:
        print "Usage: arping2tex <net>\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()
从scapy.all导入*
从日期时间导入日期时间
类元数据(数据包):
name=“元数据”
字段描述=[XByteField(“元数据”,1)]
def generatePackages():
如果len(sys.argv)!=4:
打印“用法:arping2tex\n例如:arping2text 192.168.1.0/24”
系统出口(1)
src=sys.argv[1]
dst=sys.argv[2]
x=int(sys.argv[3])
ip=ip(src=src,dst=dst)
元数据=元数据(元数据=200)
udp=udp(运动=2235,端口=5546)#,
data=datetime.utcnow().strftime(“%Y-%m-%d%H:%m:%S.%f”)[:-3]
pkt=(ip/udp/元数据/数据)
打印pkt.show()
发送(pkt,计数=x)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
生成包()
当我发送pkt时,我可以看到发送者(xterm)上的元数据字段

但是,我在控制器、Wireshark或目标主机上看不到元数据字段。


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

您的元数据在另一边。 你可以在接收端的有效载荷上看到它

您发送了: 元数据:c8/raw:“日期” 您收到: 原始:c8“日期”

现在让我们深入了解一下发生了什么。 您的接收器接收到一个包含一些数据的UDP帧。由于没有注册任何协议,它无法知道前2个字节是metedata,然后假定它是正常有效负载的一部分

您只需在发送之前重新发送该命令即可确认: pkt.show2() 而不是跑步 pkt.show()


区别在于show2()在打印之前重新生成并重新解码数据包,而show()只打印数据包。然后你会看到你发送了接收者得到的信息。

不确定你想做什么,但是scapy有一个openflow层,你可能想使用它,谢谢你的回答。事实上,我尝试向数据包添加一个新字段,以便在openflow switch表中匹配它。但是,什么也没发生。你能指导我吗?我能做什么?我应该学什么?