此方法适用于各版本的linux下使用dr.com客户端上网,已经在ubuntu、fedora、mandriva下安装成功。本文是用最新的ubuntu10.10进行讲解。
如何在Ubuntu 10.10下使用dr.com客户端上网,详细步骤如下:
1、 下载页面:http://www.drcom-client.org/zh_CN/downloads/linux.html
强烈建议下载源码包drcom-client PUM v1.0,然后自己编译。二进制安装包存在某些问题,安装后会无法成功登陆。
2、 将下载的源码包解压,并在终端下进入drcom-pum-1.0/src/kmod目录,此时目录中有3个文件,daemon_kernel.h、drcom.c、Makefile.
3、 在终端中执行命令 make & sudo make install,如果此时在ubuntu下安装dr.com客户端上网出现错误(当然,没错误就不用管了):
make -C /lib/modules/2.6.35-22-generic/build M=/home/wubangtu/drcom-pum-1.0/src/kmod modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.35-22-generic’
CC [M] /home/wubangtu/drcom-pum-1.0/src/kmod/drcom.o
/home/wubangtu/drcom-pum-1.0/src/kmod/drcom.c: In function ‘build_ack_skb’:
/home/wubangtu/drcom-pum-1.0/src/kmod/drcom.c:686: error: ‘struct sk_buff’ has no member named ‘dst’
/home/wubangtu/drcom-pum-1.0/src/kmod/drcom.c: In function ‘build_auth_skb’:
/home/wubangtu/drcom-pum-1.0/src/kmod/drcom.c:723: error: ‘struct sk_buff’ has no member named ‘dst’
make[2]: *** [/home/wubangtu/drcom-pum-1.0/src/kmod/drcom.o] 错误 1
make[1]: *** [_module_/home/wubangtu/drcom-pum-1.0/src/kmod] 错误 2
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.35-22-generic’
make: *** [default] 错误 2
4、 错误解决方法:打开并编辑文件drcom-pum-1.0/src/kmod,查找__ip_select_ident(iph, skb->dst, 0);将其改为 __ip_select_ident(iph, skb_dst(skb), 0);注意有两处需要修改。
5、 重新执行第3步中的命令make & sudo make install。
6、 安装成功以后,可以在“应用程序”—“互联网”中打开Drcom客户端
此时的dr.com客户端除了要输入账号和密码来登陆外,还有一个服务器IP,先不填写此IP登陆,如果不行继续整。
下面就来说说如何得到这个dr.com的servip(dr.com服务器IP)
1、 如果学校的网络中心开放了dr.com的web登陆方式,服务器IP就是这个web登陆地址的IP,此IP不对继续看下一步。
2、 用网络抓包工具,例如wireshark或者minisniffer。建议用minisniffer,比较简洁。
在windows系统下,打开你的dr.com客户端,输入账号和密码先不要登陆,然后打开minisniffer并点击sniffer–start开始抓包,此时再登陆dr.com客户端。
停止minisniffer监听,并查看sourceport和destport都为61440的条目,61440为dr.com使用的端口。条目中sourceip和destip中有一个是本机IP,另外一个就是服务器IP了。
3、 真不行就打电话给学校网管,动之以情,晓之以理,说你主要为了学习,一般人都会告诉你的,这个不涉及到所谓网络安全问题。
OK,至此“如何在Ubuntu 10.10下使用dr.com客户端上网”算是搞定了。
drcom 装进路由器、
首先要获得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 http://192.168.1.100/openwrt-brcm47xx-squashfs.trx
mtd –r write openwrt-brcm47xx-squashfs.trx linux
烧好之后会自动重启
telnet 192.168.1.1
wget http://192.168.1.100/drcomd
wget http://192.168.1.100/drcomdc
wget http://192.168.1.100/drcom.conf
wget http://192.168.1.100/drcom.ko
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。