使用 Scapy 通过 UDP 解码 RTP
Decode RTP over UDP with Scapy
如何使用 Scapy 2.3.2 解码(和操作)UDP 上的 RTP?
我有一个名为 rtp.pcap 的捕获文件,其中包含到 224.0.1.11:5016 的 RTP 音频流。当您启用 RTP over UDP 协议(默认关闭)时,Wireshark 会正确解码流。但是,我想做自动数据包操作,所以我想用 Scapy 解码它。
目前Scapy不识别RTP,虽然有一个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= ...
[...]
以下代码强制将 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)
如何使用 Scapy 2.3.2 解码(和操作)UDP 上的 RTP?
我有一个名为 rtp.pcap 的捕获文件,其中包含到 224.0.1.11:5016 的 RTP 音频流。当您启用 RTP over UDP 协议(默认关闭)时,Wireshark 会正确解码流。但是,我想做自动数据包操作,所以我想用 Scapy 解码它。
目前Scapy不识别RTP,虽然有一个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= ...
[...]
以下代码强制将 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)