先看家里IPTV的网络情形。
光猫上网是路由模式,LAN1口是上网口。
IPTV是桥接模式,绑定光猫的LAN2网口。
光猫也只有两个网口。
平时IPTV机顶盒直接网线连接到光猫LAN2口利用,通过HMDI连接电视。

IPTV机顶盒主页

再说抓包剖析工具。
抓包利用OpenWrt的路由器,一个WAN口,三个LAN口。
为了通过路由器抓取,路由器利用两根网线连接光猫。
路由器WAN口连接光猫LAN1上网口,利用路由器LAN2口连接光猫LAN2 IPTV桥接绑定口。
路由器的LAN3口利用网线连接IPTV机顶盒。
由于IPTV机顶盒须要连接到光猫LAN2口,在路由器上创建br-iptv网桥桥接LAN2和LAN3口。

jspframeset应用Wireshark及路由器长途抓包剖析联通IPTV直播回看及点播源 Python

路由器设备列表

为了在家庭网络中测试访问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路由规则

涉及内容比较多,感兴趣的朋友也可以翻翻笔者其它的干系文章。