免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1743 | 回复: 0
打印 上一主题 下一主题

赛尔认证客户端mystar移植到DD-WRT下 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-18 17:11 |只看该作者 |倒序浏览
  老早前,通过反汇编Windows版的赛尔客户端,已经掌握了赛尔认证客户端的技术细节,当时就发布了个Linux版的认证客户端,经过一年多使用,大家反馈信息还是不错的.:-)
  此后就开始在打路由器的主意了,想在路由器内部直接实现赛尔认证.不过先前都在有线路由器上琢磨.
得出的结论是,有线路由器FLASH和SDRAM都太小了,而且很难搞到开源的固件.只有一种变态方案:不改变有线路由器,用一块ARM板,克隆有线路由器的WLAN口的MAC值,ARM板上烧入认证软件,实现认证及echo包的定时刷新.这样有线路由器凭借MAC和IP值与ARM板一致,就可以上网了.此法如此之丑陋,权做大家笑料吧.
   言归正传,从去年看到那款RMB108元的裸板,我就开始心动,等我行动,居然售空了.只好买了RMB138的那款裸板.
  基本配置:200多M的CPU, 16M SDRAM, 4M FLASH. 店主发货时已经烧写好 DD-WRT mini USB V 2.4 SP2, 拿到板子,立马开始行动.
   整个移植过程有下面几步:
   1.准备交叉编译器和源码,以及辅助开发工具.
     交叉编译工具:
     
http://www.dd-wrt.com/dd-wrtv2/downloads/others/sourcecode/toolchains/gcc-3.3.5-openwrt.tar.bz2
     源码包,注意我指定的版本:
     在
http://download.chinaunix.net/download/0006000/5943.shtml
页面上下载: libnet-1.1.2.1.tar.gz
     下载
http://www.tcpdump.org/release/libpcap-0.9.3.tar.gz
     Linux版认证程序mystar源码包, 在
http://newhost.byhh.net/f/Linux/1208259118/mystar-0.2.tar.gz
     我用的Linux 操作系统是Debian Linux 4.0r5.
     
     其它辅助开发工具有 easywebserver ,windows版的, 下载程序时使用.
     
   2.安装交叉编译器gcc-3.3.5-openwrt.tar.bz2 ,其实就是解压到/opt目录下.
   
   3,交叉编译libnet库和libpcap库.
      由于mystar依赖 libnet和libpcap库, 因此要先把libnet和libpcap交叉编译,并安装到交叉编译器的目录下,给后面的mystar编译做好准备.
      此处的编译步骤参考了这张网页:http://hno3cn.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3d11%26ayear%3d2006
     感谢这篇文章的原作者! 不过该文有毛病,我总结并修改如下:
      一,解压
      tar zxvf libnet.tar.gz
      tar zxvf libpcap.tar.gz
      二, libpcap :
      根据你开发用的内核版本号设置以下环境变量ac_cv_linux_vers ,由于我是用2.4内核的所以设置为2.4
        export ac_cv_linux_vers=2.4
        运行以下命令对于不习惯多行写法的你,你可以直接复制,多行命令的写法是在每一个语句结尾加上 “ \ ”
        ./configure CFLAGS=-I/opt/openwrt/include LDFLAGS=-L/opt/openwrt/lib CC=/opt/openwrt/bin/mipsel-linux-gcc --host=mipsel-linux --prefix=/opt/openwrt/ --with-pcap=linux
        然后开始编译,运行make
        make
        用sudo开始安装
        sudo make install
       三,  libnet :
        cd libnet
        ./configure CC=/opt/openwrt/bin/mipsel-linux-gcc --host=mipsel-linux prefix=/opt/openwrt
        用vim 打开 源代码目录下的 include/libnet.h
        搜索第117行 ( seek  117th  line )
        把#define  1 替换为 #define LIBNET_LIL_ENDIAN 1
        由于mipsel是属于 LIL_ENDIAN的所以就设置为 LIBNET_LIL_ENDIAN,如果你是用 big endian 的cpu例如:powercpu
        那么设置为 #define LIBNET_BIG_ENDIAN 1
        开始编译
        make
        sudo make install
      
     4,交叉编译Linux版的mystar, 此处要修改Makefile文件.改动如下:
       CC=/opt/openwrt/bin/mipsel-linux-gcc
        Flags=-O2 -static
        #CFlags=`libnet-config --defines --libs --cflags`
        其它地方不变.
        此外,由于交叉编译器gcc-3.3.5-openwrt.tar.bz2内自带的libuclibc库版本低于0.9.28, 低版本的库是不带pselect函数,因此,必须要把mystar.c中用到pselect函数的地方改成select函数.
或者你如果有耐心,移植个高版本的libuclibc库.
  
  改完之后,make得到静态编译版的mystar.
  
     5, 下载并运行静态编译版的mystar.
      在PC上运行easywebserver, 把mystar和mystar.conf文件丢到easywebserer的主目录下.
      把PC与路由器的内网LAN口连起来,
      telnet到 无线路由器上, 分别用
      wget
http://PC
机IP/mystar
      wget
http://PC
机IP/mystar
      命令下载mystar mystar.conf到无线路由器上.
      chmod 777 mystar 修改mystar属性为可执行.
      ./mystar 开始认证.
      
总结: 1.我现在只是把mystar 和 mystar.conf下载到无线路由器里存储在SDRAM里, 断电后需要重新下载. 如果我把程序下载到/jffs2目录下,一运行就报出"段错误", 真是郁闷.还没找到原因.
      2. 重连比较频繁,虽然用起来,网一直是通的,但是监控数据包,发现mystar程序常常自动重连.这与在PC机上Linux系统中测试的结果相去甚远.
        
后记:  1.别指望用SVN把 DD-WRT官网上的源码下载下来,速度之慢,无法忍受.不用源码是可以的.
       2.要找到合适的Linx版认证程序,再移植. 虽然EAP协议是标准化的, 但赛尔那帮人常常在协议上动点小手术,让你不能用标准的EAP认证程序.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27015/showart_1903446.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP