国内使用 openwrt 通过 IPoE 获取运营商 IPTV 机顶盒 IP 指北

2022-11-20 23:38:33 +08:00
 gam2046

背景

由于运营商提供的 IPTV 网络不能够访问外网,而连通外网后看 IPTV 则需要占用公网带宽,在此背景下。通过一晚上的努力下,实现了通过 OpenWRT 替代机顶盒,直接通过 IPoE 认证,从而直接获得机顶盒私有网络 IP ,能够在路由上进行分流。

本文不包含什么

本文包含什么

建议了解的前置知识


正文

获取机顶盒正常登录的抓包信息

方法包括但不限于带有端口镜像功能的交换机、tcpdump 等等,此处各显神通,不再赘述。

获取 IPoE 的关键信息

此处以 wireshark 举例

Openwrt 配置

创建接口

配置接口

ssh 到 openwrt ,修改文件/etc/config/network,找到上一步创建接口的相关配置项,内容如下

 interface 'IPTV'
	option proto 'dhcp'
	option macaddr 'aa:bb:cc:dd:ee:ff'
	option delegate '0'
	option metric '20'
	option hostname 'HOSTNAME'
	option device 'lan1'
	option sendopts '0x37:01792103060c0f1a1c2a33363a3b77'
	option vendorid 'VENDORID'

关于 Option 60 填写原始数据( hex string )的额外操作

如果 option 60 ,即 Vendor Class 填入的是 ASCII 字符,则不需要进行此部分操作。

保存文件,重启端口即可。


其他一些建议

如果在操作过程中,使用无法正常获取到 IP ,可以在 openwrt 中执行tcpdump -i lan1 port 67 or port 68 -vvv(其中 lan1 为实际网口名)用于辅助对比 wireshark 中的数据,查看是否缺少了某些 option

6651 次点击
所在节点    OpenWrt
18 条回复
julyclyde
2022-11-21 08:56:44 +08:00
就是,也不研究这些 options 是怎么产生的,直接抄?
gam2046
2022-11-21 09:15:49 +08:00
@julyclyde #1 作为研究,当然可以深入进去,了解其具体的算法。我只是作为使用目的,因此并未研究,并且实际抓包中发现,option 60 每次并不相同,可能与其采用的 DES 算法有关,也可能其中包含时间戳。实际测试中发现,重放并没有问题,所以就没有深入研究。IPoE 阶段并未实质验证用户账号,仅仅验证了接入设备是否可信,根据现有实验,这一步应该是纯算法认证,尝试过把 A 家里的机顶盒拿到 B 家庭中(同地区同运营商,不同区县),一样可以通过认证,即设备号与宽带账号并无绑定关系。IPTV 的业务层认证是通过 HTTP 协议承载的。
julyclyde
2022-11-21 10:38:33 +08:00
@gam2046 他们居然不禁止你重放……
gam2046
2022-11-21 11:29:48 +08:00
@julyclyde #3 一个是可能没法防止,另一个可能是没必要。因为 IPoE 阶段,设备并不能联网,进而无法授时,所以机顶盒是没有可靠时间戳的,如果需要防止重放,不依赖时间戳,那可能只能生成的随机值,但对端很难判断这个请求是否被重复使用,同时 DHCP Server 一般性能并不好。

另一方,通过了 IPoE ,也仅仅只是通过了设备认证,并不能访问任何资源。业务侧上还有二次认证,会再次检查设备与用户账号、宽带账号的绑定情况,如果验证不通过并不会下发视频信息。所以即使接入了网络层,影响也有限。

当然,原则上现在运营商大多采用组播下发视频(除部分由于资源限制的用户,多数为机顶盒公网用户,仍然采用点播),所以如果 A 用户成功通过授权拿到组播地址,B 用户可以在仅接入网络,但不通过业务层认证的情况下,访问组播资源。
bigtan
2022-11-28 18:51:26 +08:00
深圳电信可以用 IPOE 也可以用 iptv.gd 的账号 PPPOE ,我就没抓包 ,直接 PPPOE 拨号就行了
ios
2022-12-24 15:23:20 +08:00
@bigtan 如何整?我现在折腾出 软路由只有一个口 可以用机顶盒看,想在其他网线口用这个机顶盒,或者不用机顶盒,多设备看
bigtan
2023-01-07 18:52:13 +08:00
@ios 周末抓了一下 ipoe 的认证信息,挺好折腾的,楼主的教程很准确
jelly0925
2023-02-08 18:25:57 +08:00
深圳电信 IPTV 抓包后设置到 OPENWRT 协议 DHCP 失败,有大佬试成功?分享一下谢谢
bigtan
2023-02-13 18:36:20 +08:00
@jelly0925 我测试成功了 你可以加我微信好友 一起探讨一下
zvcs
2023-06-04 16:48:16 +08:00
非常不错👍 可惜现在注销 iptv 了
A1exL
227 天前
这样子能代替 IPTV 盒子伪装设备在线么🤔现在好多地方貌似都开始加盒子的在线认证了
gam2046
227 天前
@A1exL #11 不知道你指的“盒子伪装设备在线”是什么。如果是指的业务层的认证。

但是我猜想应该是否定答案,业务侧认证是另一套东西了,现在多数地区都采用的华为当年的标准,部分地区有自己魔改一些具体的加密细节。但大差不差。

如果您自身有一些开发能力的话,希望实现在 PC 上播放电视,倒也不是很困难,网上对于这一套流程的资料还是有一些的,虽然不多,而且大多有些缺失,但是加上自己的分析,难度不大。

很遗憾由于种种原因,我无法将具体业务认证的业务逻辑公开出来。

仅通过网络层认证后,在部分地区/运营商,对于一些组播资源是可以不需要通过业务层认证,直接访问的。
A1exL
220 天前
@gam2046 #12 我现在是这样,0755 地区,采用 PPPoE 拨到 IPTV 专网,然后使用公开的那份组播地址套一层 msd_lite 来实现在局域网内观看直播,这套方案大概稳定跑了一年,但是从上个月开始就间断性失效,在不知道做了什么谜之操作之后又能恢复(第一次是拔掉光棒直接换回光猫插机顶盒拨 IPoE ,然后换回来活了,这也是我上面问是不是跟机顶盒在线有关系;但是第二次我按照您的方式改了一下用 OpenWRT 拨 IPoE ,能拨入,也能获取到 IP ,但是访问专网段无法使用,切换回 PPPoE 自己又好了)。我研究了半天抓出来的包也没看明白在哪一部分出了差错,不知道您是否能提供一些排错的思路
lingku
199 天前
现在浙江电信不同城市的 IPTV 地址能互通吗?想通过 WG 组网,目前实测 TR069 已经无法互联了。
gam2046
198 天前
@lingku #14 一般情况下,不互通,不同地市会有自己的部署。会有极个别的省份只有省一级的分发网络。

同时现存的,仍然有一小部分的 IPTV 公网用户,这部分公网用户,一般情况下,省内是通用的。大体的路由出口都在省级部署。

判断自己是否为 IPTV 公网用户,只需要将机顶盒接入家用宽带网络下(而非 IPTV 专用的口),如果依旧可以正常观看内容,大概率是公网用户。
app13
91 天前
抓包看了下,我这边加了 sendopts 0x37 之后,openwrt 会在一个包里发送两个 option 55 出去,有一个是我自己加的,另外一个应该是 openwrt 自动生成的,不知道是不是还要改 dhcp.sh 文件的逻辑...

gam2046
90 天前
@app13 #16 一般是不需要,因为正常情况下也不会发出去两段。不过我已经不用 openwrt 了,暂时帮不了你更多。
app13
90 天前
@gam2046
感谢回复,昨天试了下,我这边同时存在两个 option 55 似乎并不影响 DHCP 工作,配置完成之后能正常获取 IP

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX