从某个项目里找出csust办公区网络的密码

某天在网上闲逛,发现一位名为linfangzhi老哥写的Github项目——CSUST_network_autologin。于是白嫖下载了一份用来在图书馆上网,但是这个项目只发布了Windows版,没发给手机和电脑用,所以,为了折腾满足需求,自己动手,丰衣足食。

管你怎么样先Fork一份再说

古语有云:“管你怎么样先fork一份再说“(大雾),这个项目的源码公开,原理非常简单,就是模拟帮你填个账号登陆让你上网,所以说,整个项目最有价值的东西其实就是登陆上长沙理工大学办公区网络的账号和密码。

“既然这个项目源码公开,那直接在源码里找到账号密码不就可以了吗?”

还真不行。

账号信息不会公布(公布是不可能公布的,这辈子都不可能公布)

——linfangzhi

事实上,他也确实做到了这一点,当你打开项目仅有的一个main.py文件就会看到如下的代码片段

1
2
3
4
init(autoreset=True)

account_info = [[]]
# 隐私内容

linfangzhi学长早就把核心的account_info信息删去,留下一个摆着好看的坯子供你欣赏。他把这一个应用打包成了exe程序,只能用,不能看到隐私内容。

可是我有iPad和Mac要登陆就只能洗洗睡了吗?

想办法找到账号信息

先试着直接拆开exe程序

有的exe程序可以直接用7-zip解压,然而这个不行

去网上找了一些方法,终于感觉此路不通,放弃

抓取登陆的时候发送给认证服务器的数据包

长沙理工大学的认证服务器用的是万年http,没有s

估计学校没有想到觉得有人会在校园网里抓别人的包,这意味着抓包会省不少事,只需要把程序发出的流量都引到抓包软件上就可以直接获取到裸奔的账号信息。这个办法的可行性明显高得多,实际操作起来也更容易。

那就抓包吧

这个项目发布了exe文件,可我只有Mac,所以我在Crossover里运行这个项目,不过需要一个简单的python环境,crossover默认的wine容器环境完全没有问题。于是我把用于Steam的容器用作这个exe的启动器就可以。

至于抓包,Mac上有很多优质的应用,这里用到了Proxyman

Proxyman

弄好Proxyman以后在容器的Internet设置里设置一下本地的代理服务器让所有的流量都走Proxyman,这样就可以在Proxyman里看到所有的包

设置代理服务器成Proxyman

如前面所说,长沙理工大学的上网认证页还在用着http,账号密码都在裸奔。其实用https也只是多一个安装证书解密https的步骤。所以,到了这一步,直接在Crossover里打开exe文件,在Proxyman里观察这个程序发出的网络请求。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST /eportal/?c=ACSetting&a=Login&protocol=http:&hostname=192.168.7.221&iTermType=1&wlanuserip=10.171.184.114&wlanacip=192.168.132.254&wlanacname=JPL-ME60-1&mac=6a-72-0c-e8-4e-15&ip=10.171.184.114&enAdvert=0&queryACIP=0&loginMethod=1 HTTP/1.1
Host: 192.168.7.221:801
User-Agent: python-requests/2.18.4
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 74
Content-Type: application/x-www-form-urlencoded

DDDDD=%2C0%2Cxxxxxx&upass=xxxxxx&R1=0&R2=0&R3=0&R6=0&para=00&0MKKey=123456

很明显,这个POST请求就是python的requests库发出的登陆请求。因为linfangzhi学长不希望公布账号信息,我把账号信息都换成了xxxxxx。

将这段请求的原文还原一下(就是解码)可以得到下面的内容:

解码以后

查看项目里放出的源码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
data = {
            'DDDDD': ',0,{}'.format(account),
            'upass': '{}'.format(pswd),
            'R1': '0',
            'R2': '0',
            'R3': '0',
            'R6': '0',
            'para': '00',
            '0MKKey': '123456',
        }
        requests.post(url=post_url, data=data)

可以轻易的知道账号和密码就在图中两个xxxxxx所在的位置。

登陆和测速

在iPad上填入账号信息尝试登陆

成功登陆

在长沙理工大学图书馆A馆二楼测速

测速结果

速度还能接受。虽然用4G也可以实现相似的速度,但是免流量,加上找出来密码的成就感,还是划算的,

有一个小问题

每次连上半个小时就大概率会掉线,DHCP续租后又可以重新上线,可能是DHCP租约太短的原因,暂时还没有找到解决办法,可能以后会试着写一个自动续租的脚本来勉强解决问题。

(20220525更新:这个问题似乎被解决了)

最后…

如果想要账号密码可以在评论区留下邮箱2333