通过逆向 Drcom Web Portal 前端协议(JSONP + XOR 加密),实现自动登录和会话保活。
掉线时自动重连,支持自定义活跃时段。
┌─────────────────────────────┐
│ DrcomServer (:80) │
每 5s ─────────►│ GET /drcom/chkstatus │──► result=1 在线
│ (无加密, JSONP) │──► result=0 离线 → 触发自动登录
└─────────────────────────────┘
┌─────────────────────────────┐
自动登录 ──────►│ ePortal (:803) │
│ GET /eportal/portal/login │──► result=1 成功
│ (XOR 加密, key=0x77) │
└─────────────────────────────┘
- 心跳:每 5 秒调用
/drcom/chkstatus(免加密端点),保持会话活跃 - 自动登录:离线时调用
/eportal/portal/login(XOR 加密),自动重新认证 - 双重验证:检测离线后连续 3 轮确认,避免网络抖动导致误判
- 交叉探测:定期 HTTP 探测外部站点,防止 Portal "假在线" 场景
- 掉线自动检测 + 自动重登(3 次重试)
- 可选活跃时段(预设 + 自定义,支持跨午夜)
- 离线二次确认(防误判)
- 外部连通性探测(交叉验证)
- 失败自动降频(减少无效请求)
- Ctrl+C 优雅退出
cargo build --release产物:target/release/drcom-keepalive.exe(~1.8MB)
./drcom-keepalive交互式引导:
=============================================
校园网保活 | 掉线自动重登 + 时段控制
=============================================
账号: <你的学号/手机号>
密码: <你的密码>
选择保活时段:
[1] 24小时全天
[2] 白天 (07:00 - 23:00)
[3] 工作时间 (08:00 - 18:00)
[4] 通宵 (22:00 - 08:00)
[5] 自定义
选择 [1-5]: 1
--- 保活运行中 (Ctrl+C 退出) ---
[20:30:01] OK 登录成功 (第1次)
[20:30:01] OK 已上线
[20:35:01] OK 在线: 16684767181@unicom (tick=61)
[20:40:02] OK 在线: 16684767181@unicom (tick=121)
自定义时段示例:
选择 [1-5]: 5
格式: HH:MM-HH:MM 多时段空格分隔 支持跨午夜
例: 08:00-12:00 14:00-22:00
时段: 06:30-12:00 14:00-23:30
附带一个网络探测工具,用于分析未认证状态下的网络可达性:
cargo build --release --bin probe
./target/release/probe探测 DNS / ICMP / TCP / HTTP 五个维度,判断可用的绕过通道。
ePortal 接口使用单字节 XOR 加密:
密钥 = 'd' ^ 'r' ^ 'c' ^ 'o' ^ 'm' = 119 (0x77)
加密 = 逐字节 XOR 密钥 → 输出两位十六进制
/drcom/chkstatus 和 /drcom/login 端点豁免加密,直接明文请求。
每 5s chkstatus
├─ 在线 → 正常
├─ 离线 → 500ms x 3 轮确认
│ ├─ 恢复在线 → 误判,跳过
│ └─ 确认离线 → 自动登录 (最多 3 次,间隔 2s)
│ └─ 登录后 1~3s 二次确认生效
│
└─ 每 20s 外部探测 (generate_204)
└─ chkstatus 在线但外部不通 → 预防性重登
修改 src/main.rs 顶部常量:
const HOST: &str = "10.254.1.38"; // Portal 服务器 IP
const SECRET: &str = "drcom"; // XOR 密钥种子
const USER_IP: &str = "10.206.127.249"; // 你的内网 IP
const USER_MAC: &str = "00783226604e"; // 你的 MAC 地址
const VLAN: &str = "1"; // VLAN ID这些参数可以从浏览器 Portal 页面的内联脚本或网络请求中提取。
├── Cargo.toml
├── README.md
├── src/
│ ├── main.rs # 保活主程序
│ └── bin/
│ └── probe.rs # 网络探测工具
本工具仅供学习研究和合法授权的安全测试使用。使用者应遵守所在学校的网络使用规定。