2008年1月3日星期四

插播C语言:Linux版联创客户端的挑战

昨晚的断网事件刺激了我一下,我临时决定开始复习C语言。我计划在春节后开学时完成Linux版客户端的修改工作。为什么叫做修改呢?主要是客户端是基于别人已有的代码,然后根据这里的实际情况作出修改,以实现在Linux下联网。

我把源代码打印出来了,稍稍看了一下。基本感觉是什么都看不懂。 -____-|||不过发现整个认证过程并不是十分复杂,加上加密算法部分是现成的,而且还有协议分析,加上自己的抓包的结果,修改源码应该不是很难。

尽管同样是联创的,但是这里的认证客户端和其他学校有很大不同。首先,人家学校为计时收费,而我们则是包月;其次,人家学校分教育网和外网,有两个用户名,而我们这里只有一个;再次,人家学校的用户名和密码的长度和我这里差别较大。通过抓包的结果,看起来,即使是最简单的广播包的结构都和其他学校有很大的差别。这给我的修改带来了相当的难度。我真的怀疑当年南师某人在Linux公社上表示用矿大的客户端成功联网是怎么连成的。不过当时似乎也没有这么复杂,我也有一次找到了认证服务器。

说到认证服务器(其实是联创的交换机),我已经成功的修改了广播包,并接受到认证服务器的回应了。不过,用户名包和密码包的结构还是有很大的问题,需要做较大规模的修改。最好能简单的看懂sendpacket.c的意思,其他的源码基本上不需要修改。

另外已经完成的修改有:去掉了其他学校的双用户名的部分;修改了更适合NNU的可执行文件名与Makefile,去掉了包装联网程序的SysV风格的Shell脚本——关键是我对Shell脚本不熟悉,去掉之后可以方便我理解。 :P 关于命令行参数判断的部分,在以后补充如main.c的main函数中也不迟。断开连接的问题,矿大的那个程序也仅仅是暴力的杀死客户端进程而已。

基于现在的认识,我对成功做成Linux版客户端还是很有信心的。 :) 以后会在这里慢慢给出Linux版客户端的源代码分析的。

没有评论:

发表评论