家里的联通宽带一直送IPTV,但是IPTV的盒子用起来实在是麻烦,一直想通过其他方式,再家里的电视、电脑、手机等设备上随时观看IPTV的内容,毕竟联通的IPTV可比那些电视直播的App靠谱多了。
0x001 抓包尝试
家里的IPTV盒子是创维的,很久以前就是通过抓包IPTV盒子启动获取的播放列表的方式来整理频道清单,刚好家里有一个TP-LINK的TL-SG2005交换机,可以直接端口镜像抓包,所以这个方法也比较简单,将IPTV盒子连接到被镜像端口,镜像端口接电脑网线,通过WireShark,就能轻松的抓到一组播放列表。
启动抓包工具,开启IPTV盒子,直到进去IPTV并进入直播即可停止抓包,过滤http,找到/EPG/interEpg/channellist/batch
,右键追踪流:HTTP流,可以查看这次请求的全部数据,如果有乱码,可以调整编码为UTF-8
可以看到,我们抓取了156个频道,包含了频道信息和播放地址,igmp的地址是组播的,我们后面会讲到怎么使用,如果是目前可以直接使用channelurl
的|
后的地址,也可以使用时移地址timeshifturl
。
通过上面方法抓包的地址可以再一定时间内随时观看IPTV的内容,期间不用保证IPTV盒子开机,相互也没有影响,但是这个地址的持续可用时间不固定,我试过最长用了一周的。需要定期重新抓包,对于我来说这个的意义真心不大。
看到地址信息里面还有组播地址,就在考虑是不是我可以使用组播的地址来观看,那么我抓取一次的地址就能长期使用了。
0x002 还原IPTV的默认连接方式
家里安装宽带的时候,因为电视墙下没有预留网线接口,安装IPTV时安装小哥是通过IPTV接入家里wifi的方式直接使用的,当时告诉我可以正常使用,但是会占用家里的正常宽带。
经过多方尝试和重置,发现通过这种方式接入的IPTV盒子能正常使用,而且我破解了联通送的光猫后,通过更换光猫为华为MA5671的过程中发现,光猫中IPTV的端口,配置IPoE和PPPoE对IPTV盒子都没有影响,通过盒子直接连接光猫的IPTV绑定网口,并重置IPTV盒子后发现,默认的接入方式变为了IPoE,了解到IPoE的工作模式,感觉有戏,不过我的主路由是爱快,爱快并不支持IPoE的拨号方式,所以即使我配置了多Wan也不能正常接入。
0x003 抓包基础数据
后来再网上找资料发现很多人分享的都是只要接入光猫IPTV端口就能DHCP分配的教程,与广东联通的IPoE都不一样,但是我发现OpenWrt的路由支持作为DHCP客户端接入的时候,配置option参数,那么回到抓包上来,我们需要抓取IPTV接入时候的拨号参数,通过我的抓包和组包实验,广东联通只需要抓取Option60
、Option12
、Option55
,并修改mac地址为IPTV盒子的mac地址。
通过右键:显示分组字节,可以查看该项数据,乱码可以过切换显示原始数据查看。
0x004 配置OpenWrt
将获取的几个数据暂存起来,我们通过再OpenWrt里面新建一个IPTV的接口,来配置相关的参数,这个接口的协议是DHCP客户端。
请求时发送的主机名就是我们刚才抓包的Option12
的数据;
再高级设置中,Vendor Class配置我们提取的Option60
的数据,注意抓取数据的时候,这里是选中红框内的数据查看,否则会包含长度信息;重设MAC地址填入我们的IPTV盒子的MAC地址。
以上配置后,我们还有Option55
的数据还没有地方配置,就需要ssh连接到OpenWrt里面,修改/etc/config/network
,找到我们的IPTV接口,来配置参数。
通过option sendopts
,可以发送各种数据,0x37
就是我们的Option55
。这里网上有很多教程说Option60
也参考这种方式发送,但是实测这么配置并不会发送,通过抓包查看Option60
的数据长度不对,有说通过修改/lib/netifd/proto/dhcp.sh
里面的${vendorid:+-V “$vendorid”} \
改为-V '' \
的方式,但是我实测,这种模式在我的设备上不生效,所以如果大家尝试的话,可以参考我的配置,并在/lib/netifd/proto/dhcp.sh
里面修改${vendorid:+-V “$vendorid”} \
改为${vendorid:+-V '' "-x 0x3c:$vendorid"} \
。
`
0x005 配置爱快路由器
通过以上方式,OpenWrt就配置完了,如果你是独立的OpenWrt,那么目前应该就能正常获取到和IPTV盒子一样的IP地址了,但是我的OpenWrt是在爱快里面开的虚拟机,所以实际上是通过在虚拟机配置两张网卡,其中一张是爱快里面的某个wan口,对应的物理接线是光猫的IPTV口,这样我们可以不同OpenWrt的udpxy,而是使用爱快的udpxy,即可把组播转为http协议的播放地址,当然爱快的对应wan口要设置为静态IP(和盒子获取的IP一样,网关也设置一样,线路检测选择ping+网关,网关地址把百度修改为网关地址,mac改写为盒子的MAC地址)。
爱快里面的虚拟机配置网卡:
0x006配置udpxy
配置爱快的udpxy服务,信号源选择我们的对应接口即可。
通过访问udpxy配置的端口http://爱快ip:端口/status
可以查看状态。
然后我们就可以通过抓包获取的组播地址,参考如下格式来播放了:http://爱快ip:端口/rtp/239.xxx.xxx.xxx:xxxx
,用vlc打开网络流试试吧。这里路径里面的rtp改为udp也一样,整理出播放列表,在家里的很多设备就能直接播放了。
0x007整理播放列表
这里放上我抓包的广东联通的组播地址,大家自行修改你的路由器地址和端口后另存为.m3u格式文件即可使用。
1 | #EXTM3U |
如果有其他问题,可以联系我TG:https://t.me/cat521