[转]关于openwrt用于dhcp客户端协议突破iptv的dhcp+鉴权(ipoe)

内容转自http://koolshare.cn/forum.php?mod=viewthread&tid=149406&page=1&extra=,根据自己情况有修改,特此说明。

特别说明:我们这里(河北联通)部分家庭光猫拨号,所有已经都配置好,此方法不适用。

大家都知道,现在电信、移动、联通iptv,很多地方都改用dhcp+,也就是ipoe来认真iptv业务,光猫中itv配置为桥接,盒子为dhcp+鉴权,用户名密码采用加密方式认证来获取IP。目前比较常见的openwrt接入iptv,是抄下机顶盒成功认证拿到的IP信息,openwrt设置静态IP来实现的。

这次带来的是,openwrt建立接口“IPTV”,采用dhcp客户端的方式,直接过认证拿到IP。

本教程只是简单的讲述要点,其他像怎么抓包啊请自行百度。 首先,老规矩,咱们用Wireshark来抓个包,看下dhcp+的握手过程 我们来看下dhcp discover请求里,包含了option12跟60两个关键的信息,也就是说iptv只认证盒子名称跟帐号密码(我们这里联通iptv只需要option60正确就能下发ip)

option60,也就是包含了iptv帐号密码的数据,想都不用想了,肯定是加密的。

接下来在openwrt上新建“IPTV”口,我这里是单独把eth2设为itv口的,然后光猫的ITV口(设置桥接,绑定端口2,话说我们这里没有绑定mac,所以无所谓啦)连到openwrt的IPTV对应的物理口上。IPTV口设置dhcp客户端,为了不影响上网,最好设置一下网关跃点,其他像防火墙啊啥的这里不作为重点讲述了。

修改/etc/config/network中的IPTV参数

其中option hostname ‘XXXXX’填入我们抓包抓到的option12的明文信息,也就是机顶盒名称(我们这里不要求)

option sendopts ‘0x3c:00001f39…..’这个需要讲一下,因为option60是加密信息,我们抓包抓到的是16进制的信息,所以我们只能把抓到的信息原模原样发回去,所以用sendopts来发送,具体的用法可以自行查看udhcpc的用法说明。后面的0x3c,0x3c表示的是十六进制,也就是十进制的60,也就是我们发送option60信息。后面的00001f39…..就是上面抓包我让你们保存的option60的信息。

有的童鞋可能会问,我这里认证方式除了option60,还有其他,比如61,125,怎么办?

下面我来说一下option sendopts,抛砖引玉。抓包的数据,不管有没有加密,我们都能用sendopts来发送,比如,我拿到一个加密的option61,怎么办? option sendopts ‘0x3d:XXXXXXX…..’ 十六进制3d表示61,XXXX是抓包拿到的十六进制加密信息 option125怎么办? option sendopts ‘0x7d:XXXXXXX…..’ 十六进制7d表示125 当然了,这是发送十六进制的加密数据,那要是发送我上面说的明文option12呢? option sendopts ’12:XXXXXXX…..’ 是不是很简单?

获取到ip后udpxy、igmpproxy就自由发挥吧,不行的话设置下防火墙

PS:我这里没有做这一步就获取到了ip,照这个改完反而不行,怪异。

修改dhcp客户端服务的脚本 我们找到/lib/netifd/proto/dhcp.sh,找到下面这行

————不包含这一行————

${vendorid:+-V “$vendorid”} \

————不包含这一行————

改成

————不包含这一行————

-V ” \

————不包含这一行————

发表评论

电子邮件地址不会被公开。 必填项已用*标注