Python 将有效负载类型为的scapy RTP数据包写入pcap时出错

Python 将有效负载类型为的scapy RTP数据包写入pcap时出错,python,scapy,Python,Scapy,当我用下面的代码在scapy中创建一个RTP数据包时,我得到一个错误:“TypeError:clone_with()为关键字参数'payload'获取了多个值” 但移除有效载荷是可行的 rtp = { "sequence": 1, "timestamp": 1, "marker": 1 } pkt = Ether()/IP()/UDP(sport=12345,dport=12346)/RTP(**rtp) pktdump.write(p

当我用下面的代码在scapy中创建一个RTP数据包时,我得到一个错误:“TypeError:clone_with()为关键字参数'payload'获取了多个值”

但移除有效载荷是可行的

rtp = { 
        "sequence": 1,
        "timestamp": 1,
        "marker": 1
    }

pkt = Ether()/IP()/UDP(sport=12345,dport=12346)/RTP(**rtp)
pktdump.write(pkt)
全部输出为

Traceback (most recent call last):
  File "test.py", line 23, in <module>
    pktdump.write(pkt)
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/utils.py", line 657, in write
    for p in pkt:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 666, in loop
    pkt = self.clone_with(payload=payl, **done2)
TypeError: clone_with() got multiple values for keyword argument 'payload'
回溯(最近一次呼叫最后一次):
文件“test.py”,第23行,在
pktdump.write(pkt)
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/utils.py”,第657行,以书面形式
对于pkt中的p:
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第661行,循环中
对于有效载荷中的有效载荷:
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第661行,循环中
对于有效载荷中的有效载荷:
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第661行,循环中
对于有效载荷中的有效载荷:
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第654行,循环中
对于循环中的x(todo[:],完成):
文件“/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site packages/scapy/packet.py”,第666行,循环中
pkt=self.clone_与(有效负载=payl,**done2)
TypeError:clone_with()为关键字参数“payload”获取了多个值
我做错了什么。。。?有解决办法吗?错误在第666行。。。嗯


谢谢

更改中建议的行通过将字段名称从
payload
更改为
payload\u type

解决了scapy的此问题:
Traceback (most recent call last):
  File "test.py", line 23, in <module>
    pktdump.write(pkt)
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/utils.py", line 657, in write
    for p in pkt:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 661, in loop
    for payl in payloads:
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 654, in loop
    for x in loop(todo[:], done):
  File "/home/eisamar/devel/rtp2pcap/local/lib/python2.7/site-packages/scapy/packet.py", line 666, in loop
    pkt = self.clone_with(payload=payl, **done2)
TypeError: clone_with() got multiple values for keyword argument 'payload'