Python 如何使用 scapy 发送 gtp 数据包。我尝试转换现有的 gtp 消息十六进制流,但无法正确创建它

Python how to send a gtp packet using scapy. I tried converting the existing hex stream of gtp message but not able to create it properly

Python 如何使用 scapy 发送 gtp 数据包。我尝试转换现有的 gtp 消息十六进制流,但无法正确创建它。 有一些链接,但上面没有答案。 scapy not parsing GTP layers

刚刚试过的快速示例, 第一个十六进制流如下

000c29dad1de000c29e3c64d08004500007c00004000401167bbc0a828b3c0a828b2086808680068bf6432ff00580000000128db0000450000540000400040015ea5ca0b289ec0a828b20800bee70000287b0411204bf43d0d0008090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637

进入scapy交互模式,将上面的十六进制流赋值给一个变量,

a = '000c29dad1de000c29e3c64d08004500007c00004000401167bbc0a828b3c0a828b2086808680068bf6432ff00580000000128db0000450000540000400040015ea5ca0b289ec0a828b20800bee70000287b0411204bf43d0d0008090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637'
b = a.decode('hex')
B = Ether(b)
B.show()
###[ Ethernet ]###
  dst= 00:0c:29:da:d1:de
  src= 00:0c:29:e3:c6:4d
  type= 0x800
###[ IP ]###
     version= 4L
     ihl= 5L
     tos= 0x0
     len= 124
     id= 0
     flags= DF
     frag= 0L
     ttl= 64
     proto= udp
     chksum= 0x67bb
     src= 192.168.40.179
     dst= 192.168.40.178
     \options\
###[ UDP ]###
        sport= 2152
        dport= 2152
        len= 104
        chksum= 0xbf64
###[ Raw ]###
           load= '2\xff\x00X\x00\x00\x00\x01(\xdb\x00\x00E\x00\x00T\x00\x00@\x00@\x01^\xa5\xca\x0b(\x9e\xc0\xa8(\xb2\x08\x00\xbe\xe7\x00\x00({\x04\x11 K\xf4=\r\x00\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./01234567'

这里scapy没有解剖显示GPRS,但是我们还是可以发送出去的,即windows nc

send(B, iface='Intel(R) Dual Band Wireless-N 7260')

所以从接口发出的数据包,wireshark显示为