苏州移动IPTV抓包
前言
本文记录的是我尝试抓包苏州移动IPTV的过程,苏州移动的IPTV使用的是“魔百盒”,通过打开里面自带的APP来看电视。
然而我怎么可能满足于用移动送的盒子来看电视呢,遂萌生抓取IPTV信号源,实现任意设备看电脑的想法。功夫不负有心人,简单操作就抓到了直播源,可以愉快看电视啦~
移动IPTV的特点
严格来说因为移动没有拿到IPTV,移动是没有IPTV的;但用移动的盒子又能看电视直播,这是怎么做到的呢?移动实际用到的是OTT的技术,简单来说相对电信的IPTV来说,移动的IPTV有两三分钟的延迟,这个先不说。
移动IPTV的另一大特点是,相对电信IPTV来说与光猫的联系不紧密。移动的安装人员直接把光猫的网线安装插在盒子上,然后盒子设置拨号连接,就能看直播了。这不禁让我怀疑移动IPTV是不是没有用到IP组播技术,也没有IPTV的专用带宽。抱着试一试的态度,我在盒子里设置无线连接到我的路由器(用的移动宽带),然后进入直播页面,也能正常观看直播,这充分验证了我的猜想,可能移动的IPTV就是打开一个链接开始获取视频流,事实上也是这样子。
抓包IPTV
抓包设置
所谓抓包,就是截取到所有进出盒子的网络信息,并进行分析。想要截取所有进出盒子的信息,那么只需要控制住盒子的网络连接就好了,我这里使用的方法是用电脑发射WiFi热点,让盒子连接,而电脑连接的是移动宽带,这样盒子就“透明地”连着移动宽带,而所有进出盒子的信息都由电脑监控着。
这里使用Wireshark来抓包,打开Wireshark选择监听无线网卡,然后就能看到Wireshark开始记录所有经过这个无线网卡的包了。
抓取CCTV-1
接下来操作盒子,进入盒子的直播页面,播放CCTV-1,等待播放一段时间后停止,退出直播。
接下来在Wireshark界面点击“停止捕获分组”即停止抓包,这样就形成了一段抓包记录,如下图所示。
下面来分析这些包,首先假设一点,APP从服务器获取节目信息应该是走的HTTP协议,并且服务器返回的内容应该是如text/html
、text/plain
、application/json
或application/xml
等格式的,而对于直播的url,应该有明显的如CCTV-1这样的关键字。所以我们过滤这些包,只看HTTP协议的,然后从下往上(从后往前)看找刚才说的那些内容。
一路找很快就找到了一个关键的包,如下图所示。
这个包的请求URL是http://183.207.248.71:80/cntv/live1/cctv-1/cctv-1?OTTUserToken=18888888888-54:c5:7a:ff:ff:bd&UserName=18888888888&MAC=54:c5:7a:12:ff:ff&accountinfo=OQCfiws8s4rpK7p%2FpMYP7u3NcGkZ%2BPvcu0HL1FYZ2CMkD5P1V1CLuL3rJBGte5HT4tqh%2FKCzyh9D34F2p7CKG%2BDzScjwfag6dmWbgyaPG6zOUhiYz7Ph%FVNlh5c0pAoQfNLvTXl3D%3A20180422215140%2C18888888888%2C183.208.37.166%2C20180422215140%2Ccctv-1%2CCE5E68A939177D834D31D83150D%2C%2C0%2C1%2C-1%2C%2C2%2C2413000012%C-3%2C2%2CEND&GuardEncType=2
,直接复制粘贴到浏览器中发现直接就是下载了一个文件index.m3u
,.m3u
文件是常用的直播文件了,把这个URL用播放器打开看看,果然开始直播CCTV-1了,如下图所示。
然后来分析刚才这个URL,我们直接把URL中附带的参数全删掉,就留http://183.207.248.71:80/cntv/live1/cctv-1/cctv-1
,用播放器打开试试,竟然还是能开始看CCTV-1直播~看来移动并没有对这个URL的访问鉴权,应该至少是所有开通了IPTV的苏州移动用户都能打开这个URL看CCTV-1直播。
这样就抓出了CCTV-1的直播源,并且成功在电脑上看IPTV直播了,是不是很简单?
抓取所有频道
接下来想想如何抓取其他频道,首先试试直接把上面的URL改成CCTV-2,就是http://183.207.248.71:80/cntv/live1/cctv-2/cctv-2
,播放器打开,能看CCTV-2直播了!如下图所示。
但这样一个一个试显然不是办法,我们得把频道列表找出来。继续到Wireshark里面找,很快就找到了,如下图所示。
直接在浏览器中访问这个URL,发现返回的是JSON格式的内容,一共包含102个频道信息,每个频道信息包括其图标(channelIcon)、名字(channelName)和ID(uuid),如下图所示。
对比这里的信息,猜测之前那个CCTV-1的直播URL是http://183.207.248.71:80/cntv/live1/channelName/uuid
,为了验证这一猜测,我们拿CCTV-5+作为例子,构造URLhttp://183.207.248.71:80/cntv/live1/CCTV5+/hdcctv05plus
,在播放器中打开,开始直播CCTV-5+了!如下图所示。
那么这所有的102个频道都可以用http://183.207.248.71:80/cntv/live1/channelName/uuid
这样的URL结构得到直播地址了。
设置在其他设备上播放IPTV
待续
You made your point pretty well.!
你好,能不能搞到EPG地址呢?或者把包给我,我自己找
请教一下上海的移动,可以使用同样得方法得到地址吗?或者苏州这边的地址是否能够给一份?感谢楼主!
这个有没有回放功能
http://183.207.248.71:80/cntv/live1/四川卫视/sichuanstv
我发现这个电视并不能播放。还有其他好几个也是同样情况。我觉得是不是他们的IP还有其他的,能否帮忙再抓一下这些个是不是http://183.207.248.71:80/
我自己试着抓包瞎搞了下,正确的原来是这个:
http://183.207.248.71:80/cntv/live1/四川卫视/SCWS
http://looktvepg.jsa.bcs.ottcn.com:8080/ysten-lvoms-epg/epg/getNewPrograms.shtml?actionType=OpenNew&deviceGroupId=1697&districtCode=320500&templateId=02523
节目源可获取到,但不知IP地址。
{"catgTotalLength":89,"content":[{"catgId":171570791,"catgName":"天气预报","channelName":"CCTV-1","isVip":0,"isShowSmallLogo":"false","smallLogo":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/TV/HD-8000k-1080P-cctv1/CCTV-1JSXB.png","orderType":"","img":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/TV/beijingstv/tianqiyubao.jpg","lastUpdate":0,"updateTime":1570534320,"actionUrl":"","actionType":"","contentType":"","contentId":"","coverImgUrl":"","vPosterAddr":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/TV/HD-8000k-1080P-cctv1/hhyut.jpg","programes":[{"programId":171570791,"programName":"天气预报","programUrl":"http://XXX.XXX.XXX.XXX:80/cntv/ysten-business/live/HD-8000k-1080P-cctv1/1.m3u8","startTime":1570534320,"endTime":1570534860,"urlType":"play","mediaType":"live","seriesNum":"","smallimg":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/TV/beijingstv/tianqiyubao.jpg","uuid":"HD-8000k-1080P-cctv1","defaultResolution":"超清","backPlayUrl":"","resolution":[{"uuid":"G_CCTV-1-MD","name":"极清","url":"http://XXX.XXX.XXX.XXX:80/jsyd/ysten-business/live/G_CCTV-1-MD/1.m3u8","channelAlias":"J005282cp0001_multiple|0002112cp0029_multiple|0002112cp0030_multiple|0002112cp0031_multiple","timeShiftRule":"jscp","corner":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/Corner/rtyuio22.png","isVip":1,"trialTip":"","compareImgUrl":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/comparison/jiqingpindaoduibitu.jpg"},{"uuid":"HD-8000k-1080P-cctv1","name":"超清","url":"http://XXX.XXX.XXX.XXX:80/cntv/ysten-business/live/HD-8000k-1080P-cctv1/1.m3u8","channelAlias":"","timeShiftRule":"jscp","isVip":0,"trialTip":"","compareImgUrl":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/comparison/chaoqingpindaoduibitu.jpg"},{"uuid":"cctv-1","name":"标清","url":"http://XXX.XXX.XXX.XXX:80/cntv/ysten-business/live/cctv-1/1.m3u8","channelAlias":"","timeShiftRule":"jscp","isVip":0}],"compareImgUrl":"http://images.center.bcs.ottcn.com:8080/images/ysten/images/ysten/comparison/chaoqingpindaoduibitu.jpg"}],"isSupportThumb
唉,刚刚试了下已经不能了,是苏州移动加了什么验证么。。。。难受
大哥,通用地址格式(http://183.207.248.71:80/cntv/live1/channelName/uuid)中的channelName可以随便写,只要是半角字就行了,比如写成http://183.207.248.71:80/cntv/live1/hardcore or pussy/cctv-2也行
浙江移动用户使用有时候缓冲卡顿,不知道如何该提取浙江的源呢
0 ——0
但是手头并无移动的盒子
思路很棒,不过河北电信卡顿严重,最近有机会抓本地源希望也没有鉴权。
顺便写了个生成m3u8的小工具,希望对大家有所帮助 https://github.com/KyonLi/ottcn2m3u8
我也移动,可以看,请问有什么优秀的看直播软件配合直播源用吗?
抱歉回复晚了,我用的是potplayer感觉挺好的
能不能把苏州iptv的源发给我,江苏盐城能用,我的qq:285183993.多谢楼主了。
可以参考下面回复的链接哟~
楼主太厉害了。能分享一下频道list么?.
在楼主的启发下,昨天光猫改成桥接,好像随便路由器的哪个口都能用盒子看。
下面之前的回复里有贴列表哟,还请查看~
感谢楼主分享,能否提供完整的频道列表,除了CCTV外,其它的实在不好猜测uuid和chnnalname
太感谢了,看到评论了,已经获取到了list,谢谢
我去,四川的连接也可以直接播放,
学习了。
同苏州移动,试了下楼主抓到的地址,可以直接播放器观看,
后续用其他设备看楼主可以试试沙发管家+HDP直播,可以直接把url导入到HDP变成频道直接播放
另向楼主求下移动的这些频道URL连接(家里移动网但没开IPTV`),谢谢
忘了在文章里面贴链接了,你可以试试访问http://looktvepg.jsa.bcs.ottcn.com:8080/ysten-lvoms-epg/epg/getChannelIndexs.shtml?deviceGroupId=1697看能不能拿到那个json文件,或者我把那个文件内容贴到Gist上了,详见https://gist.github.com/zhantong/440495d3c3c9b2de3579e914c4977c3b
感谢楼主,链接可以直接用~
楼主博学多才,佩服。
好思路