文章目录
- 目的
- 操作步骤overview
- 实操
- 生成SRTP key
- 发送端
- 创建srtp.sd文件
- 接收端
- 协议分析
- 为什么 Wireshark 没自动识别 RTP
- 协议解析转换
目的
Ubuntu 虚拟机 + FFmpeg + Wireshark 搭建 SRTP实验环境 抓包分析协议
操作步骤overview
- 准备一个test.MP4文件(传输与播放文件)
- 生成SRTP key(master key , master salt)
- 使用ffmpeg 传输 test.MP4
- 使用ffplay播放
- 使用wireshark分析协议
实操
生成SRTP key
SRTP key 由 master key + master salt 组成
FFmpeg 使用 base64(key + salt) AES_CM_128_HMAC_SHA1_80 key = 16 bytes salt = 14 bytes生成随机 key
openssl rand 30 | base64 EV0m0Og1CxQrP51u5OcyXU1UjGh24D3ckVfM7kuW //base64(master key| master salt )发送端
test.mp4 为本地准备的
ffmpeg \ -re \ -i test.mp4 \ -an \ -c:v copy \ -f rtp \ -srtp_out_suite AES_CM_128_HMAC_SHA1_80 \ -srtp_out_params sUKmF55ykkEckPY7rDIcQERL6zLDBS2CILexXUT+ \ srtp://127.0.0.1:5006创建srtp.sd文件
v=0 o=- 0 0 IN IP4 127.0.0.1 s=SRTP Test c=IN IP4 127.0.0.1 t=0 0 m=video 5006 RTP/AVP 96 a=rtpmap:96 H264/90000 a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:sUKmF55ykkEckPY7rDIcQERL6zLDBS2CILexXUT+接收端
ffplay \ -protocol_whitelist "file,udp,rtp,crypto" \ srtp.sdp协议分析
为什么 Wireshark 没自动识别 RTP
- Wireshark 默认只识别 UDP 协议,需要手动添加 RTP 协议
- 因为:
- RTP 本身跑在 UDP 上
- Wireshark 需要“猜”这个 UDP 到底是不是 RTP
- 所以:
- Wireshark 默认只识别 UDP 协议,需要手动添加 RTP 协议