常用流媒體協議(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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章