校园网登录的本质还是向网关使用post方法发送账户名和密码实现网络账号登录,了解本质,突然想用Python做一个自动登录校园网的程序,开机即运行,免去了每次需要输入域名的麻烦,于是动手做了做,发现许多新的收获,特记录在此。
环境是在虚拟机下进行的(毕竟我还要联网写这篇文章),软件为BurpSuite和Python IDE,当然还有搜狗自带的元素分析插件,依然没使用Firebug。。。。
首先进行在校园网登录界面进行抓包,输入账号和密码
然后登录,成功抓到了发送给网关的数据包。
发现结构很简单,直接Post方法把用户名和密码传过去了。一般来说要构造请求头,服务器识别为浏览器的请求才处理,但是尝试直接发送数据包过去,试试能不能行。
回到IDE,直接上代码图
先是引用urllib模块和re模块,urllib模块用来使用python打开网页 ,re用来正则。
先将刚才发送的数据定义在postdata上,这里我的账号和密码打马赛克了。
然后utf-8编码之后发送到网关地址。这一步完成其实就实现了登录了,但是为了程序完整性又加了个判断代码,将返回的数据写入mybytes中,然后解码。这里其实是出现了一点问题的,我先前写的使用utf-8解码,但是发现失败了,打开元素审查发现网页使用gb2312编码的,无奈只好改为了gb2312解码。
解码之后就比较常见了,可以看到返回网页的一些数据,这里加了个正则判断式判断网页的title,如果返回登陆成功窗,那么应该是发送成功了,直接打印成功就好了。
其实写到这里程序就算完成了,最后自己设个电脑启动自动登录就好了,比如
写个bat程序
python 自动登录校园网.pypause
将其加入开机启动项文件夹就好了。
这里更多的是想说一说校园网关的问题,其实在我看来是存在漏洞的,而且漏洞问题还是很大的。
首先,账号密码采用明文数据post给服务器,是有很大隐患的,如果电脑里被安装了抓包软件,很容易就把账号密码劫持了。
第二点,并没有验证header头,在实际写这个软件的时候,甚至不需要伪造浏览器头,服务器就接受了数据并给我分配了ip,学过安全的同学应该很容易理解这样做的后果,穷举,DDOS对吧,过两天我会专门对这个写篇文章。
领取专属 10元无门槛券
私享最新 技术干货