首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将有效负载类型为的scapy RTP数据包写入pcap时出错

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

Stack Overflow用户
提问于 2015-10-13 03:09:49
回答 1查看 1K关注 0票数 1

当我使用以下代码在scapy中创建一个RTP包时,我得到一个错误:"TypeError: clone_with()为关键字参数‘payload’获得了多个值“

代码语言:javascript
复制
from scapy.all import IP, UDP, RTP, Ether
from scapy.utils import PcapWriter

pktdump = PcapWriter("banana.pcap", append=False, sync=True)

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

pkt = Ether()/IP()/UDP(sport=12345,dport=12346)/RTP(**rtp)
pktdump.write(pkt)

但是移除有效负载是可行的。

代码语言:javascript
复制
rtp = { 
        "sequence": 1,
        "timestamp": 1,
        "marker": 1
    }

pkt = Ether()/IP()/UDP(sport=12345,dport=12346)/RTP(**rtp)
pktdump.write(pkt)

完整的输出是

代码语言:javascript
复制
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'

我做错了什么?有解决办法吗?错误在第666行...嗯..。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-10-13 03:18:03

通过将字段名称从payload更改为payload_type,更改https://bitbucket.org/secdev/scapy/pull-requests/110/changed-rtp-field-name-from-payload-to中建议的行可以解决此问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33088484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档