使用Scapy在UDP上解码RTP

使用Scapy在UDP上解码RTP,scapy,rtp,Scapy,Rtp,如何使用Scapy 2.3.2在UDP上解码(和操作)RTP 我有一个名为rtp.pcap的捕获文件,其中包含到224.0.1.11:5016的rtp音频流。启用RTP over UDP协议时,Wireshark会正确解码流(默认为关闭)。然而,我想做自动数据包操作,所以我想用Scapy解码它 目前,尽管存在RTP层,但Scapy不识别RTP: >>> from scapy.all import RTP # shows that RTP layer is installed i

如何使用Scapy 2.3.2在UDP上解码(和操作)RTP

我有一个名为rtp.pcap的捕获文件,其中包含到224.0.1.11:5016的rtp音频流。启用RTP over UDP协议时,Wireshark会正确解码流(默认为关闭)。然而,我想做自动数据包操作,所以我想用Scapy解码它

目前,尽管存在RTP层,但Scapy不识别RTP:

>>> from scapy.all import RTP # shows that RTP layer is installed in my version
>>> pkts = sniff(offline="rtp.pcap", filter="udp dst port 5016")
>>> pkts[0].show()
[...]
###[ UDP ]###
    sport= 5004
    dport= 5016
    len= 196 <-- thats an audio pkt
[...]
###[ Raw ]###
       load= ...
[...]
scapy.all import RTP的
>>显示RTP层安装在我的版本中
>>>pkts=sniff(offline=“rtp.pcap”,filter=“udp dst端口5016”)
>>>pkts[0]。show()
[...]
###[UDP]###
运动=5004
dport=5016

len=196以下代码强制将UDP有效负载解释为RTP:

from scapy.all import RTP
for pkt in pkts:
    if pkt["UDP"].dport==5016: # Make sure its actually RTP
        pkt["UDP"].payload = RTP(pkt["Raw"].load)

如何获得十六进制转储?我还想在提取有效负载之前将UDP数据包解码为RTP?怎么做?我们案例中的RTP端口是动态决定的。FTR更干净的东西应该是
bind\u层(UDP、RTP、dport=5016)