熊掌

突发奇想第二弹!图书馆和教务处

对AS3.0网络通信很感兴趣,学习后发现AS内嵌了强大的网络通信包,借助这个包包,自己写出的小脚本就可以获取到网络上的数据了。首先下手的学校的图书馆网站,我们学校的图书馆最近在每一个阅览室门口都安装了检测设备,可以检测到进出的人流量,图书馆把这些信息放在了一个单独的网页里供大家查询(虽然不太准确==)。

Flash提供给AS3.0的net包主要包括三个强大的类,URLLoader、URLRequest和URLVariables,第一个负责完成发送和接收操作,第二个就是被发送和接收的对象同时包括发送和接收动作的目标和属性,第三个就是第二个包裹的值。

因为这次我们不用向图书馆服务器发送什么数据包,所以只要连接下载指定的网页就可以了。代码很快码完,成功接收到了那个显示图书馆人流量信息的网页。西噶西……中文出现了严重的乱码现象,其他字符都没有任何问题,就中文乱码了,百度各种方法无果,求教实验室里的大神(此处应该@CodeFace),大神热心指点一语道破天机说是编码方式的问题,让我把接收到的文本转成UTF-8试试。我通过将接收到的数据设定为二进制数据然后以UTF-8重新编码(readMultiByte),终于获取到了无乱码的网页源代码。

可是又有新问题,怎么样拿到我想要的字段呢,本来以为HTML语言和XML语言同根可以直接转化剩下的事情就容易了,可是最后只能承认自己的确是太天真了,获取到的网页源码中还包括JS语言不纯净无法直接转化成XML。于是只能再去找大神帮忙(此处再次@CodeFace),大神热心指点一语道破天机说你用正则就可以了,于是赶紧恶补正则表达式的知识,反复调试总算写出了可以抽出我想要字段的方法了,最后花了一些时间写界面,一个小Flash小工具就完成了。



然后,我把自己的目标转移到了教务处( ̄_, ̄ )

说到教务处我就不得不提那坑爹的三秒防刷和相应速度,不过今天我就要好好和它打交道了。和很多大学一样,我们大学用的也是方正的系统,怎么样才能让自己写的脚本能登录到教务处里面呢,学号密码可以拿我自己的,但是验证码怎么办,于是又得请教大神……大神热心指点一语道破天机说其实我们教务处的登录是有漏洞的(此处应降低音量……),如果我们向服务器发送的数据包里包含验证码(txtSecretCode)这个字段,那么只有填写正确的验证码才能通过审核,但是如果发给服务器的包包里根本没有这个字段,那么服务器就会忽略验证码的存在,只审核用户名和密码……

知道了跳过验证码的方法,现在我开始寻思怎么发包了,说实话我是一点基础知识都没有啊,查看了一些网上的技术文又是一通恶补,然后看着浏览器,想起谷歌浏览器有个不错的network功能可以捕获和记录网络通信,于是打开这个功能,然后手动登录教务处,果然捉到了数据包。PS.截图包括敏感信息,和谐之~



按照捕捉到的数据包的格式,在脚本中也建立了一个数据包,很不客气地把txtSecretCode这个字段去除,然后编辑了一个能获得学生姓名的方法(依然用的是正则),然后就是测试……



成功了!把界面写出来,又是一个简单的小工具了(虽然没什么大用目前),以后通过不断扩展,获得什么课程表啊成绩啊考试安排啊都是很容易实现的啦。

  

评论

热度(1)