常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法

以下方法均是基于Wireshark

HTTP流提取

基于HTTP的播放有两种,一种是HLS,另一种是则是普通的HTTP播放。
HTTP流播放通过GET请求。
1、对于HLS来说,先过滤对应的请求对象(m3u8列表)
在这里插入图片描述
follow该请求,根据HLS协议,继续查找,直到ts请求
在这里插入图片描述
过滤ts请求,将ts保存下来。
注意根据ts分片序号,做好文件命名。如有需要,可以在linux上通过cat命令,将分片拼接为一段完整的流。
在这里插入图片描述
2、对于普通HTTP流,直接过滤请求对象(ts),保留下来即可,保存方法和上面一样。

组播流提取

组播基于UDP,如果是RTP封装类型,需要解析为RTP再保存,如果是无RTP封装,则直接follow保存即可。
1、 RTP封装
首先过滤出对应的UDP流出来,IP地址可以通过日志获取。如果网络包有加入组播的过程,过滤igmp也可获取IP地址及端口
在这里插入图片描述
在这里插入图片描述
follow该UDP流,选中一包,右键DecodeAs…选择RTP
在这里插入图片描述
选择电话–>RTP–>流分析
在这里插入图片描述
选择save–>保存raw数据,将后缀改为.ts
在这里插入图片描述
2、 UDP裸流
UDP裸流提取方法和上面类似,仅是不需要解码为RTP,follow完UDP流后,直接保存即可。

RTSP流提取

RTSP流的提取与组播流提取过程类似,但目前基RTSP载流方式为TCP的情况,还没有有效的流提取方法,待以后完善(可能需要再借助其他工具)。

RTSP UDP载流方式
分为RTP分支及UDP裸流的情况,流的保存和组播流保存方法一样,主要是流IP及端口的获取。
过滤出RTSP流,可以直接过滤rtsp,但因为rtsp端口如果不是554的情况,wireshark无法自动识别,所以最好过滤tcp contains “PLAY”

在这里插入图片描述
根据日志的IP请求,follow对应的流,确认是否为RTSP。
查看setup流程,流的IP和端口可以从前端回复的Transport:字段获取,注意:如果PLAY命令回复的RTP-Info: 字段与setup阶段的不一样,那么要以RTP-Info:为准(一般不会)。

在这里插入图片描述
一般只要顺着PLAY命令后的包,就能找到流,如下图。后面的提取方式,则和组播流一样。
在这里插入图片描述

发布了58 篇原创文章 · 获赞 46 · 访问量 16万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章