由于运营商提供的 IPTV 网络不能够访问外网,而连通外网后看 IPTV 则需要占用公网带宽,在此背景下。通过一晚上的努力下,实现了通过 OpenWRT 替代机顶盒,直接通过 IPoE 认证,从而直接获得机顶盒私有网络 IP ,能够在路由上进行分流。
方法包括但不限于带有端口镜像功能的交换机、tcpdump 等等,此处各显神通,不再赘述。
此处以 wireshark 举例
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 ,即 Vendor Class 填入的是 ASCII 字符,则不需要进行此部分操作。
/lib/netifd/proto/dhcp.sh
${vendorid:+-V "$vendorid"} \
${vendorid:+-V "" "-x 0x3c:$vendorid"}
保存文件,重启端口即可。
如果在操作过程中,使用无法正常获取到 IP ,可以在 openwrt 中执行tcpdump -i lan1 port 67 or port 68 -vvv
(其中 lan1 为实际网口名)用于辅助对比 wireshark 中的数据,查看是否缺少了某些 option
1
julyclyde 2022-11-21 08:56:44 +08:00
就是,也不研究这些 options 是怎么产生的,直接抄?
|
2
gam2046 OP @julyclyde #1 作为研究,当然可以深入进去,了解其具体的算法。我只是作为使用目的,因此并未研究,并且实际抓包中发现,option 60 每次并不相同,可能与其采用的 DES 算法有关,也可能其中包含时间戳。实际测试中发现,重放并没有问题,所以就没有深入研究。IPoE 阶段并未实质验证用户账号,仅仅验证了接入设备是否可信,根据现有实验,这一步应该是纯算法认证,尝试过把 A 家里的机顶盒拿到 B 家庭中(同地区同运营商,不同区县),一样可以通过认证,即设备号与宽带账号并无绑定关系。IPTV 的业务层认证是通过 HTTP 协议承载的。
|
4
gam2046 OP @julyclyde #3 一个是可能没法防止,另一个可能是没必要。因为 IPoE 阶段,设备并不能联网,进而无法授时,所以机顶盒是没有可靠时间戳的,如果需要防止重放,不依赖时间戳,那可能只能生成的随机值,但对端很难判断这个请求是否被重复使用,同时 DHCP Server 一般性能并不好。
另一方,通过了 IPoE ,也仅仅只是通过了设备认证,并不能访问任何资源。业务侧上还有二次认证,会再次检查设备与用户账号、宽带账号的绑定情况,如果验证不通过并不会下发视频信息。所以即使接入了网络层,影响也有限。 当然,原则上现在运营商大多采用组播下发视频(除部分由于资源限制的用户,多数为机顶盒公网用户,仍然采用点播),所以如果 A 用户成功通过授权拿到组播地址,B 用户可以在仅接入网络,但不通过业务层认证的情况下,访问组播资源。 |
8
jelly0925 2023-02-08 18:25:57 +08:00
深圳电信 IPTV 抓包后设置到 OPENWRT 协议 DHCP 失败,有大佬试成功?分享一下谢谢
|
10
zvcs 2023-06-04 16:48:16 +08:00
非常不错👍 可惜现在注销 iptv 了
|
11
A1exL 253 天前
这样子能代替 IPTV 盒子伪装设备在线么🤔现在好多地方貌似都开始加盒子的在线认证了
|
12
gam2046 OP @A1exL #11 不知道你指的“盒子伪装设备在线”是什么。如果是指的业务层的认证。
但是我猜想应该是否定答案,业务侧认证是另一套东西了,现在多数地区都采用的华为当年的标准,部分地区有自己魔改一些具体的加密细节。但大差不差。 如果您自身有一些开发能力的话,希望实现在 PC 上播放电视,倒也不是很困难,网上对于这一套流程的资料还是有一些的,虽然不多,而且大多有些缺失,但是加上自己的分析,难度不大。 很遗憾由于种种原因,我无法将具体业务认证的业务逻辑公开出来。 仅通过网络层认证后,在部分地区/运营商,对于一些组播资源是可以不需要通过业务层认证,直接访问的。 |
13
A1exL 247 天前
@gam2046 #12 我现在是这样,0755 地区,采用 PPPoE 拨到 IPTV 专网,然后使用公开的那份组播地址套一层 msd_lite 来实现在局域网内观看直播,这套方案大概稳定跑了一年,但是从上个月开始就间断性失效,在不知道做了什么谜之操作之后又能恢复(第一次是拔掉光棒直接换回光猫插机顶盒拨 IPoE ,然后换回来活了,这也是我上面问是不是跟机顶盒在线有关系;但是第二次我按照您的方式改了一下用 OpenWRT 拨 IPoE ,能拨入,也能获取到 IP ,但是访问专网段无法使用,切换回 PPPoE 自己又好了)。我研究了半天抓出来的包也没看明白在哪一部分出了差错,不知道您是否能提供一些排错的思路
|
14
lingku 225 天前
现在浙江电信不同城市的 IPTV 地址能互通吗?想通过 WG 组网,目前实测 TR069 已经无法互联了。
|
15
gam2046 OP @lingku #14 一般情况下,不互通,不同地市会有自己的部署。会有极个别的省份只有省一级的分发网络。
同时现存的,仍然有一小部分的 IPTV 公网用户,这部分公网用户,一般情况下,省内是通用的。大体的路由出口都在省级部署。 判断自己是否为 IPTV 公网用户,只需要将机顶盒接入家用宽带网络下(而非 IPTV 专用的口),如果依旧可以正常观看内容,大概率是公网用户。 |