從某個專案裏找出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