使OpenWRT支持河南联通特殊拨号

近日购RG100A若干,其中一台带回老家测试ADSL modem功能拨号上网,使用的是guzhifeng制作的固件

modem部分按照说明设定还算比较顺利,vpi/vci通过网线直连现有的猫进入管理界面找到,我家所在地区为8/81。注意设置后执行的是/etc/init.d/modem boot,而非start,因为猫需要先初始化硬件(需要将闭源的近500K的电话线信号软调制代码以二进制shellcode的方式映射到内存中然后交给brcm6358的另外一个核心执行),而后才是ADSL拨号服务。

河南联通的主要难点是对pppoe用户名进行了加密处理,更要命的是加密后的字符串中故意含有\r\n这个换行符,具体可见以前的这篇文章。OpenWRT中网络配置是通过UCI脚本界面读取/etc/config/network配置文件来进行的,经测试,直接在配置文件中填写为’3:\r\n***’,或者填写为$’3:\r\n***’这样的linux shell转义均无法正确识别,logread显示用户名错误。

考虑到pppoe拨号实际上是执行pppd,用户名与密码通过命令行传参,若假设shell仅通过空格和制表符分隔参数,则可以尝试对pppoe的uci脚本做patch。编辑/lib/network/ppp.sh,在从配置文件读取用户名之后添加username=`echo -e $username`,即可借助echo命令对原字符串转义。如图所示。

CNC_OpenWRT_20140804220405

之后即可在/etc/config/network中直接以3:\r\n***的形式填写用户名,经实验验证可以正确拨号上网。

 

4 Replies to “使OpenWRT支持河南联通特殊拨号”

  1. 你好,openwrt12.09和14.07都没有/lib/network/ppp.sh这个文件,但是在netfid里有个ppp.sh,但内容和你截图的不一样。另外我的用户名里除了换行还有单引号,貌似uci里存储的单引号在shell里转义不正确。

    1. 我这个截图是基于10.03.1的,基于netfid的肯定也有类似的办法,单引号可以用echo -e ‘\x27’转义出来,但是没试过传递给pppd的时候是否正常。

Leave a Reply to CacheWang Cancel reply

Your email address will not be published. Required fields are marked *