首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送带有scapy的RTP数据包,并在帽中查看它

发送带有scapy的RTP数据包,并在帽中查看它
EN

Stack Overflow用户
提问于 2020-11-24 16:49:37
回答 2查看 231关注 0票数 1

我有以下代码来在cap中编写一个RTP包:

代码语言:javascript
复制
client = "192.168.10.1"
server = "192.168.10.5"
client_port = 5061
server_port = 5060


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

pkt= Ether()/IP(src=client, dst=server)/UDP(sport=client_port, dport=server_port)/RTP(**rtp)

wrpcap("rtp_pkt.pcap",pkt)

问题是我在wireshark中将数据包视为UDP,而不是RTP。我可以在SIP结构中看到它,所以我不知道问题出在哪里,

EN

回答 2

Stack Overflow用户

发布于 2020-11-25 07:03:17

简而言之,Wireshark向您显示UDP,因为没有SIP/SDP数据包。这些数据包发起连接会话,然后Wireshark可以跟随流并将UDP解码为RTP。在SDP中你可以找到主要信息:发件人,收件人,媒体类型等(RFC 4566 SDPRFC3621 SIP)。因此,即使你构建了理想的RTP数据包,没有会话初始化,Wireshark也会始终将其解码为UDP。

编辑:顺便说一句,使用中的bind_layers( UDP,RTP,dport=*)来绑定UDP数据包和RTP,可能会有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2022-01-21 17:37:53

您可以使用-d option告诉Wireshark将端口号解码为特定协议。例如,要将上述数据包解码为RTP,请使用:

代码语言:javascript
复制
wireshark -d udp.port==5060,rtp rtp_pkt.pcap

但是,如果您要创建一个RTP数据包,您应该尽量避免使用众所周知的部件号,如5060 (它通常映射到SIP协议-这就是Wireshark尝试解码它的原因)。

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

https://stackoverflow.com/questions/64983044

复制
相关文章

相似问题

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