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

以下方法均是基于Wireshark

HTTP流提取

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

组播流提取

组播基于UDP,如果是RTP封装类型,需要解析为RTP再保存,如果是无RTP封装,则直接follow保存即可。
1、 RTP封装
首先过滤出对应的UDP流出来,IP地址可以通过日志获取。如果网络包有加入组播的过程,过滤igmp也可获取IP地址及端口
常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第4张图片
常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第5张图片
follow该UDP流,选中一包,右键DecodeAs…选择RTP
常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第6张图片
选择电话–>RTP–>流分析
常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第7张图片
选择save–>保存raw数据,将后缀改为.ts
常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第8张图片
2、 UDP裸流
UDP裸流提取方法和上面类似,仅是不需要解码为RTP,follow完UDP流后,直接保存即可。

RTSP流提取

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

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

常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第9张图片
根据日志的IP请求,follow对应的流,确认是否为RTSP。
查看setup流程,流的IP和端口可以从前端回复的Transport:字段获取,注意:如果PLAY命令回复的RTP-Info: 字段与setup阶段的不一样,那么要以RTP-Info:为准(一般不会)。

常用流媒体协议(HLS/HTTP/RTP组播/RTSP)提取流的方法_第10张图片
一般只要顺着PLAY命令后的包,就能找到流,如下图。后面的提取方式,则和组播流一样。
在这里插入图片描述

你可能感兴趣的:(流媒体)