河师大校园网登录 / 登出工具,基于 PowerShell + Windows Credential Manager 实现。 为上游 htu-script(Bash + libsecret)的 Windows 11 复刻,命令接口与上游保持一致。
- Windows 11(自带 PowerShell 5.1;也可在 PowerShell 7+ 上运行)
- Windows Credential Manager(操作系统自带)
无需 curl、无需 libsecret、无需任何额外包。普通用户运行即可,不需要管理员权限。
cd htu-script-windows
# 1. 保存账号(按提示输入学号、密码、运营商)
.\htu-script.ps1 net set
# 或者用包装脚本(自动绕过 ExecutionPolicy)
.\htu-script.cmd net set
# 2. 登录 / 登出
.\htu-script # 登录
.\htu-script.cmd logout # 登出Windows 包装入口(htu-script.cmd、htu-script-hidden.cmd、htu-script-silent.vbs)的命令行参数与 htu-script.ps1 一致,主要用于绕过执行策略或隐藏窗口。
| 命令 | 说明 |
|---|---|
.\htu-script net set |
设置 / 修改账号 |
.\htu-script |
登录校园网 |
.\htu-script logout |
登出校园网 |
.\htu-script net delete |
删除保存的账号(任一 key 失败会打印警告,需到 凭据管理器 手动清理) |
| 选项 | 说明 |
|---|---|
--delay N |
在执行前等待 N 秒(开机自启场景,给校园网 / 凭据管理器准备时间) |
也可通过环境变量 HTU_STARTUP_DELAY=N 设置延时,效果等价。
开机后校园网可能尚未就绪,直接运行会失败。用 --delay 解决:
- 保存账号:
.\htu-script.cmd net set - 连接校园网 WiFi:在 Windows 中连接校园网 WiFi
- 添加启动项:
- 打开 任务计划程序(Win+R →
taskschd.msc) - 创建任务 → 触发器选 登录时 → 操作选 启动程序,程序填
wscript.exe,参数填:"C:\path\to\htu-script-windows\htu-script-silent.vbs" --delay 8 login - 不要勾选 使用最高权限运行
- 在 条件 选项卡中取消勾选 "只有在使用交流电源时才启动"
- 打开 任务计划程序(Win+R →
注意:本脚本只访问当前用户的 Credential Manager,普通用户运行即可;选择 "登录时" 触发即可正常读取当前用户的凭据。
| 状态 | 环境 |
|---|---|
| ✅ 实测 | Windows 11 + PowerShell 5.1(x64) |
| ✅ 理论可用 | Windows 10 / 11 + PowerShell 7+ |
不支持 macOS、Linux。如需多平台,请使用上游 htu-toolbox 二进制。
net set 时的输入行为(与上游一致):
- 学号:每字符屏幕回显为
*;保存成功后只在终端打印脱敏形式(首 3 末 3,中间***,例如123***456;过短学号整体打码为***)。- 字符集限制:仅接受 ASCII 字母 / 数字 / 点 / 下划线 / 连字符,长度 ≤32。换行、引号、
;&\等都会被拒绝——这是挡掉"凭据被污染后通过 URL 注入额外查询键把凭证发到外网"的关键。
- 字符集限制:仅接受 ASCII 字母 / 数字 / 点 / 下划线 / 连字符,长度 ≤32。换行、引号、
- 密码:完全静默,不回显任何字符;为防误输必须输入两次确认,两次完全一致才接受。
- 长度 ≤128。
- 内存保护:密码以
SecureString形式持有,进入 HTTP 请求时一次性 marshal 到原生 BSTR,构造 URL 后立即清零托管字节数组;SecureString用完Dispose()。
- 校园网登录门户(
http://192.168.1.1)和登出接口(http://10.101.2.205/loginOut)使用的是 HTTP 而非 HTTPS。 - 网络可用性探测只发一个 HTTPS HEAD 请求到
https://example.com/,与上游 htu-script (Bash) 保持一致。 - 解析 portal 重定向 URL 后,脚本做多层防御:
- URL 字符白名单:必须形如
http://<IPv4>[:port]/quickauth.do; - 私网断言:主机必须落在 RFC1918 私网段(10/8、172.16/12、192.168/16),且拒绝 userinfo(如
http://10.0.0.1@evil.com/auth会被直接拒绝); - Submit-Login 入口再校验:学号 / 运营商 / URL 在拼装查询串之前再校验一次,防止凭据管理器被污染时 URL 被注入额外
userid/passwd键,把凭证发到任意外网 host。
- URL 字符白名单:必须形如
- 凭证存放在 Windows Credential Manager,通过 DPAPI 加密到当前 Windows 用户。
- 任何能以你的 Windows 用户身份运行代码的进程都能读取凭据(DPAPI 的设计前提)。
- 离开电脑请锁屏(Win+L)。
本脚本(包括本 README)由 AI 辅助生成。
- 上游 Bash 版:htu-script(MIT License)
- 跨平台 Rust 版:htu-toolbox
- 本项目:MIT License