返回信息流自从校内网改为账号登陆后,每次都需要打开网页登陆后才能联网,机子上装的dropbox等开机联网软件必须登陆后才能使用,很不爽!所以就稍微研究了下校内网的登陆机制。PS:本人很少接触http等网络编程,所以很多东西都是拿来主义
首先使用google先搜了下校园网络登陆的相关内容,运气好刚好就找到一篇使用MFC登陆115网盘的帖子,直接在此代码上修改!代码地址:http://blog.csdn.net/visualeleven/article/details/6656224
其中的关键代码如下(转自以上地址):
自己编写的话需要和服务器通讯就必须知道通讯的格式,先前使用了wireshark抓取,但是抓到的东西实在是太多了,找了好半天才找到学校服务器10.3.8.211的数据包,而且很多数据太底层什么\r\n都带上了,后面改用了http analysis软件抓取后发现这些回车什么的都不需要,CHttpFile类的添加头文件方法都会自动加上的。以下是http analysis软件抓取的校园网登陆数据包内容:
图中“DDDDD=”后填写的是学号;“upass=”后填写的是加密后的密码。使用上图抓取到的内容填充后发现并没有正常的登陆网页,问题应该还是自己发送的数据格式不对,使用http analysis软件监控MFC软件发送的http数据包:
哈哈,找到错误了,是最后的用户名和密码这一个数据段错误,查看源代码找到错误,原来是使用了TCHAR类型,更改为char类型,解决错误!
现在就可以试试成果了,运行代码,binggo正常登陆网页!!
但是这个程序还有一个很致命的缺陷就是不能够通用,可以看到发送的密码和自己的密码是不一样的,再发送时肯定对内容进行加密了,如果不能够解决这段加密算法,这个客户端最多就是自己玩玩,其他同学也用不了!
接下来就看看这个发送密码是怎么样产生的。
我使用了chrome打开学校的登陆网页10.3.8.211,使用开发者模式ctrl+shift+i,对网页内容解析(当然都是google出来的~),要达到目的就要看看点击登陆的一瞬间发生了什么,才导致把我们输入的密码更改了。关键部位如下:
类比windows的消息机制,点击这个按钮的时候,网页也通知某个加密程序把输入的密码更改掉,看到这一行onclick=“cc(0)”(这不就是点击鼠标后调用的函数嘛~),但是没有cc函数啊!!有办法,右键网页内容,选中参看网页源代码。嘿嘿!看到很多的JavaScript内嵌函数,其中就有cc函数,但是就一个赋值语句,好在cc函数后紧跟的函数就是对密码进行md5值计算,函数名称是ee,赶紧找到网页中的相关调用行:
上面的这些内容从字面上大概能知道注册要调用ee函数,而且其中是使用了f1这个变量(不懂java前端编程,请轻拍~~),下面是ee函数的具体内容:
函数中先记录了输入的密码,然后加入calg和pid等变量(源代码中都有定义),最后调用了calcMD5函数进行了最后的处理(里面有各种调用,就不看了),这个函数从字面上就能够知道是干嘛的了!!至此就可以编写校园网络登录客户端了!!
ps:自从升级了新的登陆界面后,也没有见过有人放出客户端登陆软件,所以就想能不能自己动手解决,文章中也只是对密码的处理做了分析,其实直接贴抓取的加密过的数据已经能够满足需要了,就没有再编写这一块了,有兴趣的同学可以自己试试~
这是一条镜像帖。来源:北邮人论坛 / soft-design / #43035同步于 2013/1/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
校内网自制登陆软件探讨~~
diangguang
2013/1/19镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 wly1991313 的大作中提到: 】 : nice,楼主可以放出整合图形界面版本的么,开机自启动的话就省去手动登陆的方式了
放假回家就没有做了,开学后再去弄了~