宿舍自從換了校園網(wǎng)的認(rèn)證系統(tǒng)就不再用客戶端了,只能在網(wǎng)頁登錄。每次上網(wǎng)都要打開瀏覽器的話很不方便,而且我有時在Ubuntu控制臺上想聯(lián)網(wǎng)但終端文本瀏覽器似乎不支持頁面跳轉(zhuǎn),既然如此,何不寫個客戶端呢?經(jīng)過了解發(fā)現(xiàn)學(xué)校的認(rèn)證系統(tǒng)簡直弱爆了。根本不需要做什么破解工作,宿舍用的深瀾,明文傳輸密碼,一抓包一覽無余,聽說銳捷還好一些,密碼經(jīng)過加密但是用的像base64等算法,也很容易被人獲取密碼。學(xué)校的大量資金都不知道去哪了。。。
下面是用python3寫的簡單的POST,沒有對cookie的處理,注意python2需要略做修改,區(qū)別是urllib,urllib2等有了變動。
#!/usr/bin/env python3# coding=utf-8#login to school network#if add parameter,will logoutimport sys #for sys.argvimport urllibimport urllib.requestimport urllib.parseurl = 'http://xxx'def login(): action = 'login' username = 'xxx' #可將密碼等保存至文件 passWord = 'xxx' ac_id = 6 type = 1 data = {'action': action, 'username': username, 'password': password, 'ac_id': ac_id, 'type':type } postdata=urllib.parse.urlencode(data).encode('utf-8') try: request=urllib.request.Request(url, postdata) response=urllib.request.urlopen(request) if(response.read().decode('utf-8').find('login_ok')>0): PRint('login_ok') except Exception as e: print('oops!Please check network!') print(e)def logout(): logoutdata = {'action': 'logout'} postdata=urllib.parse.urlencode(logoutdata).encode('utf-8') request=urllib.request.Request(url, postdata) response=urllib.request.urlopen(request) print(response.read().decode('utf-8')) #根據(jù)情況解碼if __name__ == '__main__': if len(sys.argv) == 1: login() else: logout()
python的語法什么的就是簡潔,包含的功能也多,社區(qū)有許多人的無私奉獻(xiàn)。缺點(diǎn)也是有的,比如說沒有編譯型語言的強(qiáng)大的語法分析,執(zhí)行速度。寫這段代碼時某行因?yàn)樯偌恿艘粋€右括號,提示的是該行的下一行有語法錯誤,并未提示缺少右括號,很不人性啊,或許加上分號會好一點(diǎn)吧。
從上面的代碼中也可以感覺到python對于網(wǎng)絡(luò),正則表達(dá)式等強(qiáng)大的支持,元組,字典等數(shù)據(jù)類型也很好用。
使用方法:linux下很容易,$python3 net.py 再跟任意參數(shù)可注銷登錄,chmod +x net.py后就可以$./net.py,或加上做個符號鏈接,放在桌面。
win下:可在python環(huán)境中運(yùn)行,也可用Py2exe等工具做成可執(zhí)行文件。有趣的是win下Python為提高運(yùn)行效率,生成了.pyc類似編譯的文件。
新聞熱點(diǎn)
疑難解答
圖片精選