Skip to content

About

校园网登录工具,基于 Bash + libsecret 实现。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

HTU Script

河师大校园网登录/登出工具,基于 Bash + libsecret 实现。

依赖

# Arch / Manjaro
sudo pacman -S curl libsecret

测试基于 curl 7.80+。脚本通过 --config - 用 data-urlencode "name@filename" 把密码文件传给 curl——这是 curl 7.18+ 才支持的语法,所有现代发行版默认均满足。

快速开始

cd htu-script

# 1. 保存账号(按提示输入学号、密码、运营商)
./htu-script net set

# 2. 登录 / 登出
./htu-script          # 登录
./htu-script logout   # 登出

命令

命令 说明
./htu-script net set 设置/修改账号
./htu-script 登录校园网
./htu-script logout 登出校园网
./htu-script net delete 删除保存的账号(任一 key 失败会打印警告,需到密钥环 GUI 手动清理)

选项

选项 说明
--delay N 在执行前等待 N 秒(开机自启场景,给校园网/密钥环准备时间)

也可通过环境变量 HTU_STARTUP_DELAY=N 设置延时,效果等价。

KDE 自动登录(推荐)

开机后校园网可能尚未就绪,直接运行会失败。用 --delay 解决:

  1. 保存账号:./htu-script net set
  2. 设置 WiFi:在 KDE 中连接校园网 WiFi
  3. 添加自启:
    • 打开 设置 → 系统 → 自动启动
    • 点击 添加 → 登录脚本,在弹窗里填入脚本路径,例如 /path/to/htu-script
    • 在自动启动列表里点开这条目的 属性,把 应用程序 → 参数 一栏填为 --delay 8
  4. 登录后 8 秒自动登录校园网

注意:自动启动依赖 KDE 在登录时解锁密钥环(默认行为)。如果你的钱包配置被改过(比如禁用了自动解锁),--delay 之后 lookup password 仍会失败,需要保持默认 wallet 配置。

平台支持

状态 环境
✅ 实测 Arch Linux + KDE Plasma 6
⚠️ 理论可用 其他 Linux + 支持 Secret Service 的桌面环境

不支持 macOS、Windows。如需多平台,请使用上游 htu-toolbox 二进制。

安全注意事项

输入隐私

net set 时的输入行为:

  • 学号:每字符屏幕回显为 *;保存成功后只在终端打印脱敏形式(首 3 末 3,中间 ***,例如 123***456;过短学号整体打码为 ***)。
    • 字符集限制:仅接受 ASCII 字母/数字/点/下划线/连字符,长度 ≤32。换行、引号、; & \ 等都会被拒绝并报错——这是挡掉"密钥环被污染后通过 curl config 文件注入第二条 url 指令把凭证发到外网"的关键。
  • 密码:完全静默,不回显任何字符;为防误输必须输入两次确认,两次完全一致才接受。
    • 长度 ≤128。
  • 临时文件:密码用 mktemp 创建 mode 600 文件传 curl,用完即 shred -u(无 shred 则 rm);脚本被信号中断时也会清理。
  • core dump:ulimit -c 0 关闭,避免崩溃时密码被写入磁盘。

网络层面

  • 校园网登录门户(http://192.168.1.1)和登出接口(http://10.101.2.205/loginOut)都是 HTTP 而非 HTTPS。同网段被动嗅探理论上可见明文凭证——客户端无法解决,需服务端升级。
  • 解析 portal 重定向 URL 后,脚本做多层防御:
    • URL 字符白名单:必须形如 https?://<IPv4>[:port]/quickauth.do,每段 0–255;
    • 私网断言:主机必须落在 RFC1918 私网段(10/8、172.16/12、192.168/16),且拒绝 userinfo(如 http://10.0.0.1@evil.com/auth 会被直接 die);
    • do_curl 入口再校验:学号/运营商/URL 在写入 curl config 之前再校验一次,防止密钥环被污染(D-Bus 写访问、备份被篡改)时 curl config 文件被注入额外的 url 指令,把凭证发到任意外网 host。

本地信任边界

  • 凭证存放在系统密钥环(Secret Service / KWallet / GNOME Keyring),通过 D-Bus 访问。
  • 任何能访问你用户 D-Bus session bus 的进程都能调 secret-tool lookup 拿到密码——这是桌面会话级信任边界。
  • 离开电脑请锁屏(KDE 默认快捷键 Meta+L)。

关于 AI 辅助

本脚本(包括本 README)由 AI 辅助生成。

参考

About

校园网登录工具,基于 Bash + libsecret 实现。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages