python 抓网卡数据包 解析wifi_某高校校园网WIFI嗅探用户名密码实践

***********************本文提及的方法仅供安全学习用途,禁止非法利用**************************

0x00 写在前面

某高校校区的校园网WIFI的采用H3C的Web认证,在网页里输入学号和密码,post出去,你的这个mac地址就可以上网了。此方式不是wpa/wpa2,也不是802.1x,而只是单纯的web认证,是大有文章可做的。因此我想是否能在开放无线网环境中抓取到登陆时认证发送的数据包,从中取出用户名和密码。

参考Freebuf的如何在开放无线网络中嗅探校园网密码这篇文章提供的python脚本,针对该校的网络进行了一些修改,使用该脚本嗅探校园网WIFI账号密码。

0x01 初步分析认证交互

查看DOM

发现了几个重要的函数。base64()、checkUserName()、encrypt()

base64是将输入的文本进行一次base64编码,checkUerName就是检查用户名,encrypt是将密码再进行一次加密。

分析网络流

首先使用火狐的firebug+检查元素来分析网络流。

当我们访问登陆页面时,发送GET请求并带一个i_p_pl的cookie

尝试登陆,登陆成功跳转到http://192.168.xxx.x:xxxx/portal/page/loginSucc.jsp,发送了*个GET请求,除去图片和脚本,此次登陆只向/portal/loginSucc.jsp发送了GET包,除了i_p_pl,还带有hello1、hello2两个个cookie,其中hello1为登陆发送的username,hello2暂不明其含义。

在后来的测试中,发现hello2是【记住登陆】功能的参数,当hello2=false时不记住,hello2=true时记住并附带hello3、hello4、hello5参数,本来应当是可以利用这些cookie来绕过登陆直接请求认证的,不过考虑到其又要增加工作量,因此先放一边。

这就很奇怪了,在整个登陆过程全部都是GET请求而没有POST请求,没有POST请求是怎么把用户名密码传输上去认证的呢?况且之前已经在DOM中发现了base64encode()和query()函数。难道用户名和密码是在GET时Cook

你可能感兴趣的:(python,抓网卡数据包,解析wifi)