При создании пакета 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 ...
Спасибо!
Обнаружена эта проблема с scapy: https://bitbucket.org/secdev/scapy/issues/5077/rtp-packet-has-a-paylaod-field-which – bytesinflight