先看家里IPTV的网络情形。光猫上网是路由模式,LAN1口是上网口。IPTV是桥接模式,绑定光猫的LAN2网口。光猫也只有两个网口。平时IPTV机顶盒直接网线连接到光猫LAN2口利用,通过HMDI连接电视。
IPTV机顶盒主页
再说抓包剖析工具。抓包利用OpenWrt的路由器,一个WAN口,三个LAN口。为了通过路由器抓取,路由器利用两根网线连接光猫。路由器WAN口连接光猫LAN1上网口,利用路由器LAN2口连接光猫LAN2 IPTV桥接绑定口。路由器的LAN3口利用网线连接IPTV机顶盒。由于IPTV机顶盒须要连接到光猫LAN2口,在路由器上创建br-iptv网桥桥接LAN2和LAN3口。
路由器设备列表
为了在家庭网络中测试访问IPTV资源,在路由也创建IPTV接口。路由接口见下图。
路由器接口列表
在路由器上安装配置组播转单播的Udpxy做事,方便下面做些实际播放测试。
Udpxy配置
在路由器上安装tcpdump作为实际抓包工具。抓包剖析工具依旧利用Wireshark。利用ssh远程抓取办法。把稳要抓取的远程接口利用前面创建的IPTV网桥br-iptv。
Wireshark SSH Remote Capture
环境准备好后,启动Wireshark SSH remote capture抓包,开启IPTV机顶盒,先抓取启动过程。直至IPTV启动完成进入直播画面或者首页。
IPTV机顶盒启动
在启动过程中,每每IPTV机顶盒会向后台要求频道列表信息。先重点看能不能有频道列表信息。先容两种方法,一是IPTV机顶盒与后台的交互一样平常是通过HTTP协议进行,可以重点重一下启动过程中的HTTP交互。可以想象,先会有认证交互,然后才后会要求信息。
IPTV机顶盒启动HTTP交互
从上面的HTTP交互过程中可以看出前面的 .../Action=Login, getencrypttoken.jsp, auth.jsp, fucportalauth.jsp, frameset_judger.jsp等要求,从名字上就能预测是认证授权的交互,从后台获取用户令牌(UserToken)等。往下的内容就该重点关注了,比较幸运,下面的/iptvepg/function/frameset_builder.jsp便是要找的信息了。鼠标右键点击对应要求连续追踪它的HTTP Stream
追踪HTTP Stream
从追踪信息中可以找到频道列表信息。
HTTP追踪信息
一个例子的频道信息如下。个中ChannelName给出了频道名称(CCTV1高清),ChannelURL便是频道直播地址(igmp://239.253.248.77:8000),可以看出电视直播用的是组播办法。
jsSetConfig('Channel','ChannelID="ch00000000000000001128",ChannelName="CCTV1高清",UserChannelID="1",ChannelURL="igmp://239.253.248.77:8000",TimeShift="1",ChannelSDP="igmp://239.253.248.77:8000|rtsp://124.132.240.33:554/live/ch12122514263996485740.sdp?playtype=1&boid=001&clienttype=1&time=20240211145822+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=xxxxxxxxxxxx&mediaid=ch12122514263996485740&ctype=5&TSTVTimeLife=10800&authid=0&UserLiveType=1&stbid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&nodelevel=3&terminalflag=1&profilecode=&AuthInfo=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&bitrate=8&distype=0&usersessionid=xxxxxxxxxx",TimeShiftURL="rtsp://124.132.240.33:554/live/ch12122514263996485740.sdp?playtype=1&boid=001&clienttype=1&time=20240211145822+08&life=172800&ifpricereqsnd=1&vcdnid=001&userid=xxxxxxxxxxxx&mediaid=ch12122514263996485740&ctype=5&TSTVTimeLife=10800&authid=0&UserLiveType=1&stbid=xxxxxxxxxxxxxxxxxxxxxxxxxxx&nodelevel=3&terminalflag=1&profilecode=&AuthInfo=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&bitrate=8&distype=0&usersessionid=xxxxxxxxxxx",ChannelLogURL="",PositionX="1",PositionY="1",BeginTime="0",Interval="-1",Lasting="0",ChannelType="2",ChannelPurchased="",LocalTimeShift="0",UserTeamChannelID="1",TimeShiftLength="10800",telecomcode="00000001000000050000000000000152",FCCEnable="1",FCCFunction="1",ChannelFCCIP="124.132.240.66",ChannelFCCPort="15970"');
利用这个组播地址,利用路由器上的转单播做事,在电脑上打开单播地址(http://192.168.124.1:4022/rtp/239.253.248.77:8000)用播放器试一下,是CCTV1。
电脑VLC播放器
把全体频道信息拷贝出来,在文本编辑器中利用正则表达式,或者就手工编辑一下,天生m3u或者txt直播列表文件,IPTV的直播源就弄好了。在电脑用播放器打开试一下,没问题!
电脑上PotPlayer打开天生播放列表
另一种在Wireshark中查看频道信息的方法便是利用关键字搜索。比如搜索igmp://,如下图。也能很快定位到对要求频道信息列表的要求。同方法一追踪对应的HTTP流,获取频道列表信息即可。
WireShark追踪
采取搜索办法的关键是选择得当的关键字。这里是用的igmp://,但有些地方的IPTV并不是用的igmp组播,须要利用其它得当的关键词。
下面看一下回看,打开一个回看频道试一下。同时抓一下包。
IPTV回看节目选择
IPTV电视回看
从之前的频道列表信息中,可以看到回看利用的是rtsp协议。因此在Wireshark抓包中重点看rtsp协议包即可。
回看RTSP协议交互
从中可以看到,默认利用的是基于认证的rtsp地址,经由几次跳转,末了利用的rtsp地址实在并不须要认证,地址格式如下:
rtsp://119.180.21.48:1554/iptv/Tvod/iptv/001/001/ch12122514263996485740.rsc?tvdr=20240210043000GMT-20240210055100GMT
可以看到回看地址是利用tvdr参数定义回看韶光段,把稳利用的是GMT标准韶光,不是北京韶光。用电脑播放器打开看一下,回看节目精确。
利用VLC回看IPTV电视节目
可以把有兴趣的回看频道连续都抓取出来。编辑m3u播放列表文件把回看信息加进去。下面是一个频道的例子。
#EXTM3U x-tvg-url="http://epg.51zmt.top:8000/e.xml.gz" catchup-correction="8"#EXTINF:-1 tvg-id="CCTV1" tvg-name="CCTV1" group-title="央视-高清" catchup="default" catchup-source="rtsp://119.180.21.48:1554/iptv/Tvod/iptv/001/001/ch12122514263996485740.rsc?tvdr={utc:YmdHMS}GMT-{utcend:YmdHMS}GMT",CCTV-1 综合http://192.168.124.1:4022/rtp/239.253.248.77:8000
这样就可以在支持回看IPTV电视直播运用(比如Kodi)激活回看。更详细的利用解释可以参考笔者的其它干系文章。末了再一下点播,现在IPTV也有不少点播节目。利用IPTV打开一个电影点播,同时抓一下包。
IPTV点播
同样重点看rtsp协议包就可以了。和前面的回看类似,开始利用认证rtstp地址,末了会跳转到一个不须要认证的rtsp地址上。格式如下:
rtsp://119.180.21.45:1554/iptv/vod/iptv/001/001/894/00000050280003431558.mpg
在电脑上打开地址看一下,没问题,电影可以完全播放。
利用VLC播放IPTV点播节目
末了解释一下,在家庭网络中不雅观看IPTV回看和点播节目,须要走IPTV连接路由,由于运营商IPTV的地址大都会屏蔽互联网的访问。须要在路由器下定义静态路由规则,IPTV地址段通过IPTV连接路由。把稳不同运营商须要配置的路由规则不同,须要根据运营商的实际地址配置。
路由IPTV路由规则
涉及内容比较多,感兴趣的朋友也可以翻翻笔者其它的干系文章。