参考视频:B站-韩风Talk-探索运营商的隐藏宽带线路,玩一下不过分!
参考文章:广东联通IPTV抓包和IPoE认证模拟(爱快和OpenWrt)
广东移动的IPTV线路是需要使用专门的DHCP+验证机顶盒来实现播放的,并且默认和Internet拨号是用vlan分开的,Internet拨号是vlan48,IPTV是vlan41,在这个基础上,我们可以利用vlan分离组播,是其变成单播视频了解:B站-科技宅小明-【硬核】干掉IPTV,随时随地看电视,超清无开机广告!于是在家里研究了两天,终于把IPTV去盒子化搞定了,并且实现了原IPTV盒子正常播放,因为家里的老人还需要使用IPTV看直播的
一、准备工作
1、配置交换机镜像IPTV流量
因为家里有一个华为的网管交换机,可以利用交换机的端口进行功能来抓包,如果没有的看镜像的交换机也可以使用两个网口桥接来抓包也是可以的,再不济去淘宝买一个有线抓包器也是可以的,将IPTV插到监听5口,电脑插到镜像7口,打开wireshark进行抓包
2、配置vlan标签
将这三个网口配置成同一个vlan标签,广东移动iptv的vlan标签是41
二、IPTV抓包
1、抓取IPTV的信息
将IPTV开机,等待电视正常播放直播时就可以停止抓包了
2、获取IPTV机顶盒信息
先在wireshark协议过滤出dhcp流量,找到DHCP Request,点开其中一个,分别记下IPTV的mac地址、主机名、认证信息,其中Option 12为主机名、Option 60为认证信息。由于Option 60的认证信息是加密的,因此我们无法直接复制,但是我们可以导出其16进制,对Vendor class identifier右键,复制为16进制流就可以导出了。在这里提一下,这个认证信息每次IPTV盒子发出来的都是不一样的,但是我们可以利用其中的一次认证信息作为登入凭证,这里就用到了重放攻击,在没有时间戳校验的服务器是可以生效的,显然广东移动这边是可以的。
现在我们就有了IPTV盒子的三样信息:主机名、mac地址、认证信息,有了这三样我们就可以去模拟伪装IPTV来骗取服务器获取组播数据流了
三、openwrt配置
1、添加IPTV网口
新建一个接口,名称叫iptv,协议改为dhcp,请求DHCP的主机名添刚刚抓包获取的主机名
在右边高级设置那里请求 DHCP 时要发送的供应商类别填写抓包获取到的认证信息
之后保存并应用
2、修改网口配置信息
(1)、修改vendorid
形式
这时候还需要用ssh进到openwrt后台,编辑/lib/netifd/proto/dhcp.sh
文件,从下往上找,找到{vendorid:+-V "$vendorid"} \
,将其修改为{vendorid:+-V "" "-x 0x3c:$vendorid"} \
,这里的意思就是将填入的vendorid
识别为16进制数据,因为我们刚才填入的就是认证信息就是16进制流的形式,保存退出
(2)、伪造iptv口mac地址
接着编辑/etc/config/network
的iptv接口添加option macaddr 'mac地址'
,来伪造mac地址
保存并退出后在openwrt接口管理页面重启iptv接口,过会就可以看到获取ip地址了
3、无法获取ip地址
如果你可以正常通过dhcp获取地址的话就不用看这一小节了
如果等了一会还是没有获取到ip地址的话可以试试下面的方法
1、光猫iptv口直连openwrt的iptv口
之前我也是一直无法通过dhcp获取到ip,最后才发现原来是交换机的问题,可能是因为两个网卡的mac地址都是一样,他可能无法正确发送数据帧到指定网口,之后我才发现直接将openwrt的网口接到刚才iptv交接换机的网口就可以正确获取到了,真的是研究了好久才发现😂😂😂
2、将openwrt的iptv口接入电脑
可能是openwrt的iptv口配置信息不正确导致无法自动获取到ip,将iptv口接入电脑打开wireshark进行抓包,重启iptv口,查看其发出的dhcp信息的mac地址、主机名和认证信息是否和之前抓包iptv的一致,特别是认证信息,要和之前抓包的一致就可以了
3、查看IPTV盒子的网络信息,直接跳过认证
将iptv盒子正常开机播放直播,进入设置页面,一般的话都会有密码,可以试着去百度搜搜默认密码,广东清远这边的iptv盒子默认密码是10086,其他的也可以试试自己的客服电话
将信息记录下来,我们手动模拟设备
4、手动静态分配地址
回到openwrt接口页面,修改iptv口的协议为静态地址ip地址填写iptv盒子的地址,网关和子网掩码也一样
在高级设置也别忘记修改网关跃点为20
保存并应用后再用ssh进入openwrt终端修改/etc/config/network
,添加上
option hostname 'iptv主机名'
option vendorid '认证信息'
ShellScript保存后退出重启iptv口
4、安装udpxy
udpxy是一个将组播数据转换成单播数据的工具。在系统->软件包->搜索udpxy,安装下列三个软件包:udpxy、luci-app-udpxy、luci-i18n-udpxy-zh-cn
安装完成之后在服务->udpxy打开udpxy,配置好ip地址和端口、iptv口(这里为wan,也可以填写ip地址),保存后即可观看完成组播数据到单播数据的转换
在http://192.168.1.1:9999/status可以看到相应服务的信息
四、配置IPTV源
1、测试是否可用
打开之前抓包iptv的数据包,你会看到很多udp数据流,其中239.10或239.11开头的D类地址就是组播ip,1025就是目标打开,实测广东移动的组播ip几乎都是239.10/11.0.x:1025的地址
此时可以使用vlc播放器打开单播链接http://192.168.1.1:9999/udp/239.10.0.144:1025
可以正常播放
2、获取直播源列表
(1)、网上获取
这里建议先去网上搜搜别人整理好的iptv直播源,一般来说ip和端口号不会轻易变更的,可以用挺久的
这里分享一个近期广东移动的iptv直播源,感谢inonzi
另外还有广东电信的iptv直播源,电信用户的可以测试一下是否有效,经实测,广东移动的直播源都可用(2025/02/11)
广东电信IPTV直播源点我打开
(2)、抓包获取
这个比较麻烦,需要分析抓包数据,一般来说节目表会在认证成功之后发送http协议的json格式报文给iptv盒子,因此我们只需要分析http数据即可获取直播源列表
打开刚才抓包iptv盒子的数据包,过滤http流量,然后搜索字符串channel应该是可以搜索到关键字的,对其中一个数据报文右键->追踪流->http Stream即可找到组播源地址
如果显示乱码的话可以试试设置为UTF-8显示,看到内部有很多rtp://开头的组播地址就对了。另提一嘴,广东移动的组播源地址都是http://183.235.16.92:8082/epg/api/custom/getAllChannel2.json
,
将其另存为txt文件,使用正则表达式过滤出地址并整理成m3u格式即可
后记
后续发现只要设备接入光猫IPTV的2口,做好vlan41标签就可以直接DHCP获取到IP地址,认证都不需要!得亏研究了这么久😅
最后以一个无语结束……