宿舍自从换了校园网的认证系统就不再用客户端了,只能在网页登录。每次上网都要打开浏览器的话很不方便,而且我有时在Ubuntu控制台上想联网但终端文本浏览器似乎不支持页面跳转,既然如此,何不写个客户端呢?经过了解发现学校的认证系统简直弱爆了。根本不需要做什么破解工作,宿舍用的深澜,明文传输密码,一抓包一览无余,听说锐捷还好一些,密码经过加密但是用的像base64等算法,也很容易被人获取密码。学校的大量资金都不知道去哪了。。。
下面是用python3写的简单的POST,没有对cookie的处理,注意python2需要略做修改,区别是urllib,urllib2等有了变动。
#!/usr/bin/env python3#coding=utf-8#login to school network#if add parameter,will logoutimportsys#for sys.argvimporturllibimporturllib.requestimporturllib.parse
url='http://xxx'deflogin():
action='login'username='xxx'#可将密码等保存至文件passWord='xxx'ac_id= 6type= 1data= {'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')exceptException as e:print('oops!Please check network!')print(e)deflogout():
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'))#根据情况解码if__name__=='__main__':iflen(sys.argv) == 1:
login()else:
logout()
python的语法什么的就是简洁,包含的功能也多,社区有许多人的无私奉献。缺点也是有的,比如说没有编译型语言的强大的语法分析,执行速度。写这段代码时某行因为少加了一个右括号,提示的是该行的下一行有语法错误,并未提示缺少右括号,很不人性啊,或许加上分号会好一点吧。
从上面的代码中也可以感觉到python对于网络,正则表达式等强大的支持,元组,字典等数据类型也很好用。
使用方法:linux下很容易,$python3 net.py 再跟任意参数可注销登录,chmod +x net.py后就可以$./net.py,或加上做个符号链接,放在桌面。
win下:可在python环境中运行,也可用Py2exe等工具做成可执行文件。有趣的是win下Python为提高运行效率,生成了.pyc类似编译的文件。