破除校园网使用linux的一大障碍,802.1x拨号程序你自己也可以写

TAG 802.1x  iNode  h3c

毕竟用win的人还是比较多,校园网拨号上网的客户端还是对win的支持比较好。不过iNode确实恶心,搞不明白一个拨号上网的东西为什么要做得体积这么大。如果想玩linux的话,上网是一大问题。以前也用过官方配的linux客户端,记得好像叫linux1x什么来着,调用了几个过期的库,虽然整了一把还是能装上。但初学者的话,能不能安装上去感觉是个问题。我比较推荐用的是python的客户端,在我的ubuntu可以直接运行,依赖的库原先都有装。而且源代码也比较适合学习,阅读。


地址在这里:https://github.com/humiaozuzu/YaH3C

是基于 https://github.com/houqp/pyh3c 。这个项目好像没继续维护了,不过上面的资料可以参考,介绍得比前一个清楚。


c语言的话可以用我同学的这个: http://code.google.com/p/esysu-auth-client/ 用c语言是为了交叉编译进路由器的嵌入式linux。编译完大小才20k。得意哥的路由器一直用的就是这个。当然,pc也可以用,我就是在pc上试完再交叉编译到路由器上的。我是基于1.1版本开始改的。


蛋疼的网络中心趁着清明节偷偷改了点认证协议,哥的路由一下子上不了网,电脑还可以直接拨号,不过手机的wifi就用不了。电脑想共享网络给手机设置还是挺麻烦的,win7有connectify好像设置还蛮简单,不过我没win7。手机碰巧又刚刚刷机,等着用wifi装软件,同学有事情忙,没空整这个。被逼上梁山只好自己研究了。刚好YaH3C及时更新了,可以看到修改了什么内容https://github.com/humiaozuzu/YaH3C/commit/82ec22682bac1349a29af014120317bb200cdae6  有代码可以参考,移植到c语言对初学者来说应该问题不大。哥这种门外汉,对协议不熟,也没熟悉的抓包测试环境,搞了一个通宵才搞定。交叉编译又弄了一个下午,各种蛋疼。尴尬弄完觉得校园网拨号协议也就那么回事生气,没啥牛掰的。。有兴趣的可以自己也动手试试。基于esysu-auth-client 1.1,YaH3C是上面那个commit。不知以后还会不会改动。


入门资料:华为802.1X技术白皮书 http://wenku.baidu.com/view/1a0f02d284254b35eefd3401.html?from=related&hasrec=1感觉主要就是把术语看看就行。

代码的话,建议python的代码和c的一起对比着看。


802.1x客户端主要就是把用户名密码送出去通过验证就行,这玩意不会复杂到哪里去。当然,具体实现的时候有协议细节要处理,而且要处理网络中packet的环境。上面的资料没具体讲清楚packet的格式,学习的话,感觉不如直接看源码。具体源码就不分析,简单讲一些要点。


里面要注意的是有一段时间改了协议,必须上传客户端版本号,如果没上传是上不了网的。而且这个版本号是加密过的,加密算法未知,不过可以直接抓包,提取官方客户端发送的加密版本信息直接照样发送即可。网络中心不知什么原因加上了这个蛋疼东西,用心险恶。读者可以思考一下,如果想利用这个加密信息排除第三方客户端可以怎么做。安静这个貌似是网络安全中常见的问题。


感觉网络课用这个来做实验挺不错的。书上讲某某协议一个packet上字段安排什么的蛮闷的,自己动手实践一下,对这些字段还有packet的层层包装,还有数据的封装会有进一步的认识。c语言的话,用字符数组来处理这些字节的数值倒是不错,python反而处理起来不够优雅,但python的切片给力。python的unpack还涉及大小端


一些通用,繁琐的操作,通常都有库的支持,比如这里c的libpcap。


协议改来改去,官方的客户端还是能上,民间的就不行了。这里是因为偷懒没实现没用到的情况md5 response。感觉没有一个严格的标准,细节改来改去的蛮讨厌的。难道申请的专利都是这些类似的玩意?


路由刷的openwrt,所以我还是觉得用openwrt的交叉编译工具来编译比较靠谱。可以直接到官网下载现成的工具链。一个是OpenWrt-Toolchain-brcm63xx-for-mips-gcc-4.3.3+cs_uClibc-0.9.30.1, 一个是OpenWrt-SDK-brcm63xx-for-Linux-i686-gcc-4.3.3+cs_uClibc-0.9.30.1。sdk那个体积很大。我一开始用这个来编译,提示ld找不到库什么的,虽然明明已经指明了路径。最后用Toolchain目录的编译器,加上sdk的库路径完成编译。囧尴尬 在网上下载了一些可以自动编译的toolchain,下载下半天,编译编半天,然后提示你xx版本不行什么的,蛋疼。也有一些说是编译好的工具链,太慢了,还没下完我就已经用前面的方法well蛋了。目前的理解,交叉编译就是把gcc换成mips-openwrt-linux-gcc之类的版本,头文件有些也是跟架构有关的,so库文件那也是。不知为毛要自己编译工具链,不用现成的。而且安装的时候还要下linux的内核文件什么的,蛋疼。委屈


你可能感兴趣的:(linux,加密,python,网络,语言,路由器)