终于大功告成,这次没有通宵就搞定了。记下一些重要步骤,免得以后忘了
首先要获得pc上能上网的源码,这个是从sourece.net上的一个开源项目获得,然后在对照windows客户端抓包修改。每个学校的认证方式都略有修改,不是通用的。过程就记在上一篇文章里面了。这里就直接写移植到openwert的过程了。
我的路由是RG100E-AA,BCM5354 ,内存32M,ROM16M。这里根具体平台关系不大,在make menuconfig的时候修改一下对应处理器系统和平台就可以了。
进行入正题:
1. 将drcom.c文件加入路由器cpu对应的内核中
可以驱动模块的方式加入,也可以直接编译时内核。
driver在build_dir/linux-xxxx/linux-2.x.x下,x代表cpu类型和内核版本号
加入方式就是修改driver/net/目录下的Kconfig和Makefile两个文件
2. 交叉编译drcomd、drcomc
drcomd对/sbin/modprobe drcom做一些修改,因为路由器内核大多没有这个命令。改为/sbin/insmod drcom
并去掉返回值的判断,无论插入成功与否都不退出。s=system(cmd)
编译drcomd的时候最好用静态编译(--static),路由器里面默认是没有libpthread这个动态库的
3. 交叉编译openwrt固件
make meuconfig
选中luci 网面管理界面
设置语言 中文、英文、鸟语等
Make V=99
4.烧写固件、下载程序
telnet 或 ssh 进路由
cd /tmp
wget
mtd –r write openwrt-brcm47xx-squashfs.trx linux
烧好之后会自动重启
telnet 192.168.1.1
wget
wget c
wget
wget
insmod ./drcom.ko如果drcom编译进内核就省掉这里了,所以上面要修改命令执行成功与否都不退出的原因
vi drcom.conf配置参数,用户名、密码、网口(eth0.1路由器wan都是虚拟出来的)
./drcomd
./drcomc login
出下面提示表示成功了
received server ACK(pkt_size=745)
Login Succeeded
You have used 5147 Minutes, and 450276K bytes
再试试手机、笔记本上网一切ok
4. 接着就是移植各种应用进去了
试了一下lighttpd+php+sqilte 一切正常,已经hello world了
Cgi运行正常,还是一个echo “hello world”
还有其它很强大的功能就不一一试了,都不用自己写的,已经有大牛写好了的
先写到这里,有空再在来写个cgi把账号放到网页上去填写,然后在网页上登陆、注销,免得telnet。今天就不整图了