Skip to content

dev-Flyblue/drcom-keepalive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

drcom-keepalive

Release Rust Windows License

通过逆向 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     # 网络探测工具

声明

本工具仅供学习研究和合法授权的安全测试使用。使用者应遵守所在学校的网络使用规定。

About

Drcom 校园网认证保活工具 — 掉线自动重登 + 时段控制 | Campus network keep-alive with auto re-login

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages