锐捷wifi魔盒自动优选服务器,锐捷校园网用python实现自动登录(需要有自己的账号)...

[Python] 纯文本查看 复制代码import requests

import os

#写在前面:本人大四狗,希望学弟学妹们好好学习,好好利用网络资源,而不是利用网络打游戏,刷剧。上大学谈个恋爱,加个社团,考几个证书,好好充实自己

####配置区

user="0000000000000"

password="88888888888888888"

#这里仅仅是判断是否联网,并没有判断网络SSID,也就是无法判断是否是校园网(本人为了突破校园网限制两个设备登录,使用了路由器,不想使用ssid判断是否是校园网)

#这里给出的思路是 netsh WLAN show interfaces语法来完成检测

#以下为解决方案,自行替换已注释掉

'''

#解决方案,这里的fosu是本人校园网SSID,可以自行替换掉

info = str(os.popen('netsh WLAN show interfaces | find "SSID"').readlines())

if "fosu" in info:

print("已连接至目标网络fosu")

'''

#检查当前WIFI连接状态

info = str(os.popen('ipconfig | find "IPv4 地址"').readlines())

if 'IPv4' in info:

print("已连接到网络")

else:

print("未连接至网络,尝试连接至目标网络")

os.system("netsh wlan set hostednetwork mode=allow ssid='Pogonip' key='As665201314'")

#检测是否有网,如果有,则不执行后续操作,如果没有,则执行校园网连接

putout = str(os.popen('ping baidu.com | find "请求超时"').readlines())

if '请求超时' not in putout:

print("有网,无需执行")

else:

#接下来是抓包,我用的是fiddle,发现如下特点:

#先通过一个GET请求,提交wlanuserip,wlanacname,ssid=,nasip,snmpagentip,mact,url,apmac,vid,port,nasportid等信息 也就是 post的data包里的query_string

#其中,我了解到锐捷是有检测多用户机制的,也就是突破两个设备限制,但是目前并没有

#这里我猜测,是通过这个get请求获取用户登录信息,对比白名单,没有的话就拉黑,所以,这里可以直接伪造这些信息,特别是SSID和wlanuserip等

#当然了,如果以后推出了客户端,可能还有心跳包,需要抓包模拟心跳(这里我只给一个思路),悄咪咪的提示一下,皖南医学院的校园网登录客户端可用于佛大的校园网登录

#然后就用post请求,发送账号密码等信息(这里参考了一下其他大佬的思路,感觉不错,就借鉴了一下)

#这里是获得一个临时的cookie,也不知道是干嘛的,可能是为了验证是否是通过10.10.10.4这个界面去登陆的,从而过滤掉直接请求吧(仅仅是一个猜测)

#当然了,后续的post请求中包含了这个临时的cookie

#获取JSESSIONID

geturl1="http://10.10.10.4/"

session = requests.session()

session.get(geturl1)

html_set_cookie = requests.utils.dict_from_cookiejar(session.cookies)

send_cookie=session.cookies['JSESSIONID']

#这里应该是跳转到认证服务器上,表明自己的学生身份

geturl2="http://10.10.10.4/eportal/redirectortosuccess.jsp"

get2_header={

"EPORTAL_USER_GROUP":"Student",

"JSESSIONID":send_cookie

}

responseRes = requests.get(geturl2, headers = get2_header)

#然后就会被重定向到[url=http://123.123.123.123/]http://123.123.123.123/[/url],并且获取当前的AP的各种消息(query_string)

geturl3="http://123.123.123.123/"

back=requests.get(geturl3)

query_string = back.text

st = query_string.find("index.jsp?") + 10

end = query_string.find("'")

query_string = query_string[st:end]

#接下来就是post登录请求了

userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.54"

posturl="http://10.10.10.4/eportal/InterFace.do?method=login"

post_header={

"Host": "10.10.10.4",

"Connection": "keep-alive",

"Content-Length": "926",

"Origin":"10.10.10.4",

'User-Agent': userAgent,

"EPORTAL_COOKIE_USERNAME":user,

"EPORTAL_COOKIE_PASSWORD":password,

"EPORTAL_COOKIE_SERVER":"%E7%A7%BB%E5%8A%A8",

"EPORTAL_COOKIE_SERVER_NAME":"%E7%A7%BB%E5%8A%A8",

"JSESSIONID":send_cookie,

"EPORTAL_USER_GROUP":"Student"

}

post_data={

"userId": user,

"password": password,

#####

#####这个service是指哪个运营商,不同学校的加密方式不一样,我这里是移动

"service": "%E7%A7%BB%E5%8A%A8",

#####

#####

"queryString": query_string,

"operatorPwd": "",

"operatorUserId": "",

"validcode": "",

"passwordEncrypt":"true"

}

responseRes = requests.post(posturl, data = post_data, headers =post_header)

responseRes.encoding = "utf-8"

Thankyou = responseRes.json()

if Thankyou["result"] == "success":

print("理论上登录成功了")

else:

print("没有登录成功,但没有网络,没办法提醒")

#By 暗夜协奏者

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值