校园网账号防抢占 python脚本编写思路分析
前几天室友跟我说,总是有人在挤他的CDTU账号,感觉特别不爽。所以自己就写了一个专门防抢占校园网的python脚本,当运行这个脚本的时候,别人是无法将你挤下线的。
PS:CDTU是我们校园网的简称
首先,我直接把我写的源码放上来。
# -*- coding: UTF-8 -*- import requests import sys import time import socket __doc__='该脚本基于python3编写且需要依赖第三方requests库,请打开cmd输入 pip install requests 安装运行即可' __author__='zgao' print('='*80) print('运行该脚本之前,请先连接上CDTU且不要认证!然后就再没有人能挤你的网了^*_*^!') print ('如果你觉得脚本好用的话,欢迎关注我的博客:http://106.15.73.80') print('='*80+'\n') username =input('请输入你想要登录的账号:') mima=input('请输入密码(为空则默认123456):') if len(mima) == 0: mima = '123456' print('输入的账号为:'+username+' 密码为:'+mima) def str_to_hex(s): return ''.join([hex(ord(c)).replace('0x', '') for c in s]) #定义字符串转16进制函数 def get_host_ip(): #获取本机内网ip函数 try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] finally: s.close() return ip host_ip=get_host_ip() string='62336634626235643635656437366236643936393530616332626530303135615f' url='http://10.110.6.11/eportal/webGateModeV2.do' info={'method':'login','nasip':'b3f4bb5d65ed76b6d96950ac2be0015a','t':'wireless-v2','username':username,'pwd':mima} logoutinfo={'method':'logout', 'userIndex':string+str_to_hex(host_ip)+'5f'+str_to_hex(username)} login=requests.get(url,params=info,allow_redirects=False) if login.headers['Auth-Result'] == 'success': print('已登录 '+ username +' 账号成功!') else: print('登录失败,请检查账号密码并重新运行脚本!\n') logout = requests.get(url, params=logoutinfo) sys.exit() while True: login = requests.get(url, params=info, allow_redirects=False) if login.headers['Auth-Result'] == 'success': print('已登录 ' + username + ' 账号成功!') time.sleep(8) logout=requests.get(url,params=logoutinfo) if int(logout.headers['Content-Length'] ) == 569: print('账号 '+username+' 下线成功!')
这个python脚本是完全根据burpsuite抓包请求和返回的数据来编写的。
先进入上网认证的web界面,以我自己的账号为例,开始抓包。
用burp拦截认证时发送给认证服务器的数据包
然后就是观察认证服务器返回的数据包,因为是否认证成功,都包含在
返回的数据中。为了演示方便,我就把数据包放到了repeater中。
所以我在写脚本的时候也是根据header中的Auth-Result这个字段来
判断是否登录成功的。
不过我认为这其中最重要的还是分析userindex这个字符串!!!
将我的这个16进制的字符串拿去转换为str。
基本的分析思路就是这样了。
这个脚本的利用的原理就是,在登录校园网后的10秒钟之内,是不允许被抢占的。而脚本就是利用这个10秒的间隙,先登录这个上网账号,在上线后的第9秒将账号下线掉,在下线的瞬间又立马上线。进入一个循环的过程,别人想登录你的账号却发现你始终在一个刚上线10秒内的状态,从而达到账号无法被挤下线的目的。
而且这也不影响你的正常上网,可能对打游戏会有一定影响,因为下线只是一瞬间的过程,所以基本不会感觉出网络变化。
这个脚本过程我做了视频演示的,可以在我的qq空间里看到。
赞赏微信赞赏支付宝赞赏
发表评论