前言
解决家里弱电箱到客厅电视只有一条线,在原有情况下无法做到 IPTV 和互联网在同一线路上通过,和其它设备观看IPTV问题,不用每次看IPTV须打开电视,可以多设备同时在线。 此教程为抓取自家宽带的IPTV为教程,非网络公开的各运营商IPTV源地址,(如果是公开的也就没有必要出这篇教程了,直接下载下来就能看了)。同时在线观看设备数量取决于你的IPTV带宽。可以在你的局域网内使用无线网络观看。也可以在外面看IPTV,需要有公网IP支持,或者内网穿透。
条件&工具
- 网络 宽带有IPTV业务,即有机顶盒。猫可以改桥接,机顶盒没有复杂的DHCP Option、AB面认证。
- 设备 OpenWrt路由器(需要有UDPXY和组播代理这两个插件),或者爱快路由系统,一台普通无线路由。
- 工具 Wireshark抓包软件、notepad++。
光猫设置
打开猫,通过管员密码进入设置,参照以下设置,取消掉原来的IPTV绑定端口,把网络和IPTV通过VLAN绑定到一个接口上,(即实现了单线利用)。网上很多教程说要两个网管交换机进行单线复用,当时对这个原理完全没有概念,所以没有立即冲动买交换机。
爱快系统
首先设置接口,添加两个外网接口,一个用于网络,一个用于IPTV。
网络接口设置。
VLAN_ID对应光猫网络设置值1。
IPTV接口设置。
VLAN_ID对应光猫网络设置值2。MAC要填写机顶盒的MAC地址。如果正确等一会将会看到IPTV的IP。
设置DHCP。
设置机顶盒为静态DHCP分配。终端MAC设置为机顶盒MAC地址。
如果以后还需要使用机顶盒就设置IGMP。上联选择你的IPTV接口,下联就选择LAN。
设置端口分流。
然后就是局域网内其它设备观看IPTV设置UDPXY转发。端口设置未被占用的即可。UDPXY转发就是把组播数据UDP转换为HTTP单播。
打开路由器IP:10000/status,即可看到UDPXY状态。
抓包
经过以上设置网络已经成功配置好,接下来就开始抓包。看了网上的教程有的需要带有镜像的交换机,有的需要买抓包硬件,或者自制……还有一个就是很多教程提到的OpenWrt有交换机这个插件,但是找了很久也没有看到有这个功能的固件,网上关于这个交换机插件的知识特别少,一个也没搞,偶然发现爱快有这功能抱着试试的态度成功了,为我省了一大笔银子。
找到爱快的抓包功能 。抓包前先关闭机顶盒。抓包接口选择IPTV接口,抓包数据选择最大80000。然后选择”开始抓包“,然后再打开机顶盒,快速多看几个不同的直播台。然后选择停止抓包,然后下载抓包文件。
然后使用Wireshark分析抓包结果,提取直播源。在过滤器栏输入输入以下命令。
http.request.uri contains "frameset_builder.jsp"
右键第一个请求,追踪流 – HTTP 流。
再弹出的新窗口中查找。
igmp://
单击链接,主窗口就会自动定位到该请求。
单击展开该请求的完整内容,查看里面的内容是不是含有 igmp://
之类的重要数据。
右键 Line-based text data 导出分组字节流,随便取个名字保存到你能找到的地方。
用 notepad++ 打开,查看是否显示正常,前几行都是一片空白,往后滑一点就能看到了。
数据整理
开始整理之前,建议保存好原始文件。查找目标。
.*ChannelName="(.*)",UserChannelID="(.*)",ChannelURL="igmp://(.*)",TimeShift=.*
替换为以下内容,这里借用的是别人的图。前面写你的路由器地址加上udpxy监听的端口。
#EXTINF:-1, \1\r\nhttp://192.168.10.1:10000/udp/\3
将整理后的数据文档首行写入以下内容,复制到新文档,并修改扩展名为m3u。
#EXTM3U
然后使用ptoplayer等播器播放该m3u文件即可。也可以把该文件放到手机上使用IPTV播放软件播放。或者把他放在服务器里让程序读取该文件地址播放。
OpenWrt
首先设置网络接口。
在传输协议里选择“PPPOE”,也就是拔号上网。因为OpenWrt默认把eht1为网络接口,所以要添加的物理接口为eth1,因为VLAN的存在,在光猫里设置过网络绑定的vlanID值为1,所以要在最后面的自定义接口里自定义接口,名称为“eth1.1”,并使用该接口。
然后是设置IPTV接口。传输协议选择DHCP。
光猫里设置过网络绑定的VLANID值为2,所以要在最后面的自定义接口里自定义接口,名称为“eth1.2”,并使用该接口。
网络和IPTV接口状态。
然后设置UDPXY。
端口设置为一个未被使用的即可。源IP/接口为设置过的IPTV自定义接口“eth1.2”。
然后在网络-防火墙-通信规则里添加一条规则。
最后输入路由器IP:10000/status,即可看到UDPXY状态。
然后使用保存好的M3U文件播放即可。
外网观看
需要有公网IP或者内网穿透。
只需要把路由器的IP换成你的域名即可。