【开源】xGiWifi:第三方giwifi 客户端,用于模拟其他终端登录
本文介绍了基于山东科技大学GiWiFi网络开发的第三方客户端xGiWifi。该项目使用Flutter框架实现多平台兼容,允许用户自由选择终端类型登录(如在Windows上模拟iPad登录)。文章详细解析了GiWiFi的API加密机制和登录流程,包括设备类型参数设置、AES加密过程以及换绑接口处理。当检测到设备绑定时,系统会自动调用换绑接口并重试登录,最多尝试3次。该项目已在GitHub开源,为校园
·
前言
在山东科技大学 GiWiFi 自动登录脚本提到,实际上可以在任何设备模拟giwifi的任何终端登录,例如在电脑上用平板登录
于是我用codex快速vibe了一个giwifi的第三方客户端,简单起见使用Flutter框架,可以同时编译出多个平台的应用
此项目地址:https://github.com/Mhenwa/xGiWifi
效果
截图如下

功能
可以自由选择需要占用的终端名额,例如在Windows上登录平板端
原理
API加密方法见自动登录脚本
换绑接口
此种返回会要进行换绑
{
"status": 0,
"data": {
"resultCode": 124,
"resultData": "/Giportal/index.php/Sta/bindSta?..."
}
}
换绑接口如下
POST /Giportal/index.php/Sta/bindSta?token=...×tamp=...&sign=...
Content-Length: 0
终端画像
Windows
device_mode = Windows NT 10.0
device_type = 1
device_os_type = 3
is_mobile = 0
iPhone
device_mode = iPhone
device_type = 2
device_os_type = 2
is_mobile = 1
iPad
device_mode = iPad
device_type = 3
device_os_type = 2
is_mobile = 1
伪代码
function login(profile, username, password):
page = GET loginPage(profile)
cookie = extract PHPSESSID
params = parse hidden inputs
override device fields with profile
params.user_account = username
params.user_password = password
plaintext = serialize(params)
encrypted = AES_CBC_ZeroPadding(
plaintext,
key="1234567887654321",
iv=utf8(params.iv)
)
resp = POST loginAction(data=encrypted, iv=params.iv)
if resp.status == 1:
return success
if resp.data.resultCode == 124:
bindResp = POST bindSta()
if bindResp.status != 1:
return fail
retry up to 3 times:
resp = POST loginAction(...)
if resp.status == 1:
return success
return fail
更多推荐



所有评论(0)