移动魔百盒抓包记:不折腾路由器也能全屋设备观看电视直播,从抓包到整理m3u8
上篇文章分享了电信IPTV实现任意设备观看电视直播的自由,有网友询问移动IPTV能不能这么玩,刚好我父母家用的是移动机顶盒,我拿来研究了两天,分享一下经验。

这不春节将至、更何况今年还有四年一届的世界杯,是时候未雨绸缪了,今天就折腾一下湖北移动魔百盒。
▲ 先打开电视确认一下机顶盒能正常工作,本来准备用老方法单线复用组播转单播的,突然发现机顶盒是直接插在路由器上的,我并没有设置光猫,这有点奇怪?!
研究了一下,发现移动是OTT盒子,走的互联网流量,不是IPTV,我有个大胆的想法。。。
▲ 我把移动魔百盒M301H打包带回家,插上移动宽带,嘿嘿可以直接观看,换了电信宽带后发现不能观看,果然如此,OTT盒子认证信息在机顶盒里,只要是移动网络(起码本市可以)就能观看。
那么走互联网流量肯定是http的单播流量,这个OTT盒子抓包试一下能不能愉快的玩耍。
抓包
抓包采用 Wireshark 进行。具体方法为:小主机电脑使用WiFi接入移动网络,让魔百盒用网线连接小主机的网口,再使用 Wireshark 抓包相应的网卡。
▲ 抓包网络设置不负责,只要你有一个小主机或者笔记本,支持WiFi以及有线网络,即可抓包。
▲ 设置WiFi共享网络给接入机顶盒的以太网,Wireshark监听以太网流量,这样流入机顶盒的流量都能抓到
▲ 开始抓包后,在魔百盒上打开节目点播,然后保存文件,打开并分析,搜索框里输入:“http”,按下CTRL+F打开搜索详情,选择分组详情、字符串,一开始查找Channel、epg等关键词,都没有找到节目列表。
▲ 搜索m3u找到一些http的单播源,经过测试把这个单播地址放入播放器可以播放
又重新抓包了好几次,换节目进入节目列表菜单,总之折腾了几个小时死活找不到节目列表,想要通过某个接口拿到播放列表看来不行了。
操作:既然找不到静态的列表文件,我们就抓取动态的 “播放请求”。
方法:在 Wireshark 设置过滤器 http.request.method == "GET" && http.request.uri contains "index.m3u8"。
人工按下遥控器,从 001 频道一路换台到 100+频道。机顶盒每播放一个台,就会向服务器发送一条包含完整鉴权信息的请求。
▲ 最后导出抓包数据的 CSV,让AI编写 Python 脚本提取出这 100+条真实有效的链接。
▲ 把整理好的m3u8播放文件导入IPTV播放器里,成功实现摆脱机顶盒的限制,观看电视直播。
这个方案的优势是:画质无损(直接拉取运营商源流),没有机顶盒的广告,换台速度非常快。
劣势是:“URL路径”参与了加密,不知道AuthInfo多久过期、并且每个节目的AuthInfo不同,目前已经过了2天还能播放。
CCTV-1 的路径是 /111.../CCTV1/index.m3u8,生成的 AuthInfo 是 Signature_A。
CCTV-2 的路径是 /111.../CCTV2/index.m3u8,生成的 AuthInfo 是 Signature_B。

总结
中国移动大部分地区没有IPTV拍照,很多都是OTT互联网盒子,优点是单播拿到http地址就能播放,缺点是有2分钟延迟,平时看节目无所谓,看世界杯这种比赛还是有影响的。

