2015-10-12 2 views
1

При создании пакета RTP в scapy со следующим кодом, я получаю сообщение об ошибке: «TypeError: clone_with() есть несколько значений для ключевого слова аргумент" полезной нагрузки»Ошибка записи scapy RTP пакетов с типом полезной нагрузки для PCAP

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) 

с удалением полезной нагрузки.

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' 

Что я делаю не так ...? Есть ли обходной путь? Ошибка в строке 666 ... hmm ...

Спасибо!

+0

Обнаружена эта проблема с scapy: https://bitbucket.org/secdev/scapy/issues/5077/rtp-packet-has-a-paylaod-field-which – bytesinflight

ответ

Смежные вопросы