DOC · 2026-10-02
用户协议
ohmyXJTU 项目用户协议(站内镜像,内容以原仓库为准)。
ON THIS PAGE
ohmyXJTU 用户协议
版本:1.2 生效日期:2026-09-30 对应程序版本:0.1.x 许可:BSD 3-Clause(见仓库根目录 LICENSE)
欢迎您使用 ohmyXJTU!
《ohmyXJTU 用户协议》(如下简称“本协议”)系您与项目开发者和/或贡献者(如下简称“我们”)就本软件的使用而订立的协议。
在您使用本软件之前,我们在此特别提醒您,请您认真阅读、充分理解本协议各条款,特别是免除或者限制项目开发者和/或贡献者责任的条款,对您的权利限制条款,争议解决和法律适用条款等,此类条款将以加粗的形式提示您注意。
本软件在首次启动以及协议修订后会要求您阅读本协议全文:您须阅读至最底部并确认同意,方可继续使用;未同意时程序将直接退出。您通过点击同意和/或登陆账户的行为,即视为您已阅读、理解并同意接受本协议,并同意接受本协议各项条款的约束。若您不同意本协议,则您有充分且完全的权利退出本软件,并删除本软件及其在本机保存的全部数据。
摘要(不构成条款的替代)
- 本软件是非官方开源项目,不保证任何查询结果的正确性,也不代表、不接受、不提供任何形式的背书;
- 账号与密码在本机加密保存,但不保证抗攻击、不保证抗木马;
- 保存的密码只用于登录学校服务,不作任何其他用途;
- 本项目以 BSD 3-Clause 开源,不对使用本软件造成的任何后果负责。
本协议内容同时包括我们可能不断发布的关于本软件的相关协议、服务声明、业务规则及公告提示等内容(以下统称为“本协议”)。上述内容一经正式发布,即为本协议不可分割的组成部分,您同样应当遵守。
一、性质与立场
1.1 本软件由个人开发者发起并以开源方式发布,不是西安交通大学(下称“学校”)及其任何院系、部门或信息系统推出的官方产品,与学校之间不存在隶属、代理、合作、赞助、认证或授权关系。
1.2 “西安交通大学”“思源学堂”“考勤系统”等名称仅用于客观说明本软件的用途与对接对象,不表示学校认可、推荐、认证或背书本软件;本软件的任何输出同样不构成对学校、其制度、其记录或任何个人的背书。
1.3 本软件不含广告、推荐、排名、导流或任何形式的利益关系;作者与贡献者未因本软件获得学校或任何第三方的授权、报酬或背书。
1.4 本软件不改变学校系统的任何规则:您在学校系统中的身份、权限、义务与责任,不因使用本软件而改变。
二、账号与密码
2.1 本软件仅在本机保存您的账号与密码,保存形式为加密文件,磁盘上不出现明文密码。密码不会以明文形式写入任何日志、错误信息或界面。
2.2 加密实现(当前版本):
- 密钥派生:Argon2id(内存 64 MiB、迭代 3 次、并行度 1),盐值 16 字节随机;
- 加密:ChaCha20-Poly1305(AEAD),每次保存重新生成 12 字节随机 nonce;
- 附加认证数据(AAD)绑定文件格式版本;口令错误与文件被篡改在 AEAD 下不可区分,统一回报“口令错误或凭证文件已损坏”(若文件结构本身损坏,会另行显示格式错误);
- 解锁口令(加密口令)本身不落盘,仅用于内存中派生密钥;程序不提供口令找回,忘记口令只能删除凭据文件后重建。
2.3 您应妥善保管好您的解锁口令,建议您采取特定措施保护您的口令安全,包括但不限于采取定期更改口令等相关措施。
2.4 密码的唯一用途:向学校统一身份认证系统(以及校外访问时的学校 WebVPN)完成登录,以便以您的身份读取您自己的课表、考勤与思源学堂数据。除此之外,本项目:
- 不会将密码用于任何其他目的(不作分析、统计、建模、画像、研究或商业用途);
- 不会将密码发送到学校服务器之外的任何主机(本机环境变量代理的例外情形见 §5.2);
- 不会把密码、口令、Cookie、ticket、token 写入日志、崩溃报告或任何上报;
- 不含遥测、埋点、统计、广告、更新检查或任何后台上报功能;
- 不会向任何第三方共享、出售、出租或公开您的凭据。
2.5 需要您知悉:登录时密码必然离开本机。程序会先以 RSA(PKCS#1 v1.5,使用学校公开密钥)加密密码,再随登录表单提交到学校统一身份认证服务器(具体主机由学校登录页的重定向决定,通常为 login.xjtu.edu.cn);程序会校验提交目标必须位于 xjtu.edu.cn 网域,否则中止提交。学校侧如何记录、保存、审计与使用这些信息,由学校决定并适用学校的规则,本软件无法控制,也无法对此作出任何承诺。
2.6 程序运行期间,账号与密码会以明文形式存在于本进程内存中,以便登录态失效时自动重新登录;退出程序后即消失。本软件没有硬件密钥、系统钥匙串绑定或对凭据文件的双因素保护。
2.7 因您主动泄露或因您遭受他人攻击、诈骗,以及丢失手机等智能设备等行为而产生的与学校账户相关的损失及后果,项目开发者和/或贡献者并不承担责任,您应通过司法、行政等救济途径向侵权行为人追偿。
三、本机保存的数据清单
3.1 数据目录(由操作系统标准数据目录决定):
| 平台 | 目录 |
|---|---|
| Linux | ~/.local/share/ohmyXJTU/ |
| macOS | ~/Library/Application Support/ohmyXJTU/ |
| Windows | %APPDATA%\ohmyXJTU\ |
3.2 文件清单:
| 文件 | 内容 | 敏感程度 | 权限 |
|---|---|---|---|
credentials.vault | 账号与密码(Argon2id + ChaCha20-Poly1305 加密) | 敏感;安全性取决于您的口令强度 | 0600 |
config.json | 随机生成的装置标识 visitor_id(32 位十六进制,用于学校统一认证的 fpVisitorId 可信装置识别)、访问模式、您记住的学期、您已同意的用户协议版本(文件损坏时会直接重建为默认值并提示您) | 非机密,但可反映使用习惯 | 0600 |
captcha.png | 最近一次取得的登录验证码图片副本 | 一次性验证码 | 0600 |
数据目录在新建时设置为 0700(若目录已存在,程序不会修改其权限;设置失败会中止启动);文件写入采用「同目录临时文件 + rename」的原子方式,写入失败时不破坏旧文件。上述 0600/0700 权限仅在 Unix 生效;Windows 依赖用户目录 ACL。写入过程中的临时文件(同目录、权限 0600)会在正常完成或失败时清理,仅在断电等异常情况下可能残留。
3.3 程序不保存:Cookie、会话 token、业务 token、课表/考勤/作业等查询结果。这些仅存在于内存中,程序退出即消失;内存内的课程、活动、提交摘要缓存有效期为 5 分钟,且不写入磁盘。
3.4 验证码图片会写入 captcha.png 供您用本机看图程序打开;登录成功后或程序正常退出时会被自动删除,下一次取得验证码时也会覆盖它。
3.5 程序不写日志文件。仅在无法启动或发生致命错误(含程序内部错误)时,向标准错误输出一行简短的错误信息;发生内部错误时程序会尽力恢复终端状态。任何情况下都不会输出密码、口令、Cookie、ticket 或 token。
3.6 文件系统层面的元数据(文件大小、修改时间、是否存在)可能泄露“您是否使用本软件、何时更新过凭据”等信息,本软件未做隐藏或擦除。
四、安全能力与边界
4.1 本软件的目标是:当凭据文件被复制时,不让攻击者直接获得明文密码,且该目标以“您的解锁口令足够强”为前提。Argon2id 只提高破解成本,不阻止破解——口令越弱,风险越高(新设置口令的最短长度为 8 个字符,仅供下限校验,不构成安全建议或保证;既有短口令仍可解锁,请您以更新口令的方式自行更换)。
4.2 本软件不保证抗攻击,也不保证抗木马。 明确不在防护范围内的情况包括但不限于:
- 键盘记录、屏幕录制、输入法、无障碍工具、剪贴板监控可以记录您输入的口令与密码;
- 同一用户下的其他进程、调试器、内存转储、core dump、swap / 休眠文件可能读取进程内存中的口令与凭据;内存清零(zeroize)是尽力而为,不保证覆盖所有副本;
- 恶意软件可以窃取凭据文件后离线破解,也可以直接删除、替换或回滚该文件;本软件未提供防删除、防回滚或防篡改检测;
- 供应链风险:被篡改的本软件二进制、被投毒的第三方依赖、被入侵的编译器或系统工具链,均可能在您不知情的情况下窃取信息;
- 物理接触、冷启动攻击、硬件侧信道、被攻陷的操作系统 / 内核 / 固件;
- 网络中间人(被篡改的根证书、恶意代理、DNS 劫持)——本软件始终开启 TLS 证书校验,但无法防御系统级信任链被破坏;
- 本软件未经第三方安全审计,可能存在尚未发现的实现缺陷。
4.3 本软件不提供:密码找回、多设备同步、硬件密钥、对凭据文件的双因素保护、账号被风控/锁定后的救济,也不对学校系统的安全性作任何承诺。
五、网络传输与数据流向
5.1 本软件只与以下学校主机通信(全部位于 xjtu.edu.cn 域):
| 主机 | 用途 | 会上传的内容 |
|---|---|---|
login.xjtu.edu.cn | 统一身份认证:登录页、公钥、验证码、短信/二次认证 | 账号、RSA 加密后的密码、验证码答案、短信验证码、装置标识 fpVisitorId、统一认证表单所需的会话与状态字段(如 execution、mfaState、secState、gid、trustAgent 等,多为服务器下发的流程参数);geolocation 字段固定为空,不采集定位 |
identity1.xjtu.edu.cn | 统一身份认证(登录重定向可能经由此主机) | 若登录流程重定向至此主机,账号与 RSA 加密后的密码等认证表单字段会提交至此 |
bk-kq.xjtu.edu.cn | 本科考勤:登录入口、CAS 回跳与 token 交换、学期/课表/考勤流水查询;自动模式下的校园网可达性探测 | 您的身份凭据(经登录流程)与查询参数 |
lms.xjtu.edu.cn | 思源学堂:课程、活动、作业提交记录、直播/回放播放地址 | 查询参数(课程、活动标识) |
webvpn.xjtu.edu.cn | 校外访问校内站点时的 WebVPN 转发与登录 | 您的账号,以及经网关转发的一切请求与响应 |
登录重定向可能触及学校认证系统的其他 *.xjtu.edu.cn 主机;程序会校验登录表单的提交目标必须位于 xjtu.edu.cn 网域内(见 §2.5),并在每一次重定向时重新检查(见 §5.7)。
5.2 除上述学校主机外,没有任何其他外部服务:无遥测、无统计、无广告、无崩溃上报、无自动更新检查。注意:通过官方安装脚本安装时,会附带一个独立的更新工具;只有当您主动运行它时,它才会向 GitHub 查询本项目的发布版本——主程序自身不会自动检查或下载更新。本软件不会主动配置代理服务器;但若您的环境变量(如 HTTP_PROXY/HTTPS_PROXY)设置了代理,底层 HTTP 库(reqwest)可能遵循该代理设置,此时流量会经由该代理——这不在本软件的控制或知情范围内。
5.3 校外模式:选择或回退到 WebVPN 时,您的请求(含查询参数与目标地址)会经学校 WebVPN 网关转发,网关可以看到请求内容。是否使用 WebVPN 由您的访问模式设置与网络环境决定:程序中“自动”模式会对考勤系统做校园网可达性探测,探测失败或直连请求实际失败时,考勤访问改经 WebVPN(有限回退一次);思源学堂为云端服务,自动模式下始终直连。
5.4 打开网页(o 键):本软件调用系统默认浏览器打开学校页面(Linux xdg-open、macOS open、Windows rundll32.exe url.dll,FileProtocolHandler),只允许 http/https 网址,且不对 URL 做 shell 拼接、不经过命令壳层(cmd)解析。该网址(例如直播播放地址可能含临时 token)会交给浏览器;此后的浏览记录、Cookie、登录状态由浏览器与学校系统管理,不在本软件控制范围内,且浏览器可能需要您再次登录。
5.5 流量可见性:您所处网络的管理员(学校、运营商、公司)可以看到您访问了哪些主机。TLS 保护传输内容,但无法隐藏目标域名与请求时序;请求的响应内容由学校系统决定是否留存。
5.6 本软件不采集您的设备地理位置(认证表单中的 geolocation 为空值)、不生成跨站追踪标识;config.json 中的 visitor_id 是本机随机生成的装置标识,仅提交给学校统一认证用于可信装置识别。请求会携带固定的桌面浏览器 User-Agent,以及统一认证相关请求的 Referer 标头;除此之外不发送任何其他设备标识。
5.7 重定向:程序自行逐跳跟随服务器下发的重定向,并对每一跳重新检查:只允许跳转到 xjtu.edu.cn 网域内的主机(含 webvpn.xjtu.edu.cn),拒绝 HTTPS 降级为 HTTP,最多跟随 10 跳。跨来源(协议、主机或有效端口不同;WebVPN 代理网址以被代理的实际目标为准)时,会丢弃业务 token(X-Business-Token)、Referer、Authorization 与 Cookie 等标头;带请求体的 307/308 重定向若指向其他来源会直接中止,不会将账号密码、验证码答案或业务 token 重送到其他主机。
六、查询结果的准确性
6.1 本软件展示的数据全部来自学校既有系统的接口,数据源本身可能滞后、缺失、重复、字段语义变更、被限流或临时不可用;接口也可能在任何时候变更或下线,使本软件显示错误或无法使用。
6.2 本软件会在数据之上作推断,例如:
- 课表与考勤记录按“日期+节次+地点+教师”匹配;匹配不到时显示“待核实”;
- 作业状态依据提交记录判定;“已完成”仅表示存在有效提交,不等于已批阅、已通过或得到高分;无法确认时显示“待核实”;
- 当前学期的认定可能来自考勤系统的学期、您上次手动选择的记忆,或仅在需要您选择时作为预选建议的月份启发式;
- 平台对少数系统类型字符串的语义(如草稿、撤回状态)尚未经真实样本完全核实,相关判断可能偏保守。
6.3 因此:本软件的任何输出仅供参考,可能出错。 它不构成对学生学业、考勤、成绩、评奖、请假、申诉或任何其他事项的证明、凭证或依据;当本软件与学校官方系统不一致时,以学校官方系统及教务/任课教师的记录为准。“待核实”表示本软件无法确认,不代表任何结论。
6.4 不提供背书:本软件不对数据的真实性、准确性、完整性、时效性或特定用途适用性作任何明示或默示的担保,也不对学校系统、其运营者或任何第三方作任何形式的背书、推荐或评价。
七、用户权利和义务
7.1 为顺利使用本软件,您需要具备一台或多台与本软件兼容的终端设备,并完成移动数据服务或WLAN网络连接,您应自行支付前述设备和网络连接服务的相关费用。
7.2 本软件仅限用于您本人拥有合法使用权的账号;不得用于查询、代管或代查他人账号(可能涉及他人个人信息)。本软件不提供任何验证账号归属的技术手段,完全依赖您的自律。
7.3 您在使用本软件时,必须遵守《网络安全法》、《互联网新闻信息服务管理规定》、《网络信息内容生态治理规定》《互联网用户账号信息管理规定》《移动互联网应用程序信息服务管理规定》等中华人民共和国相关法律法规的规定,以及学校的网络与信息系统管理规定,以及统一身份认证的使用条款。您同意不会利用本服务进行任何违法犯罪行为或不正当的活动,包括但不限于下列行为:
- 未经允许,进入计算机信息网络或者使用计算机信息网络资源的;
- 未经允许,对计算机信息网络功能进行删除、修改或者增加的;
- 未经允许,对进入计算机信息网络中存储、处理或者传输的数据和应用程序进行删除、修改或者增加的;
- 故意制作、传播计算机病毒等破坏性程序的;
- 其他危害计算机信息网络安全的行为。
7.4 您违反本协议的规定,导致或产生的第三方向项目开发者和/或贡献者主张的任何索赔、要求或损失,包括合理的律师费,您同意赔偿项目开发者和/或贡献者,并使之免受损害。同时,项目开发者和/或贡献者有权视您的行为性质,采取包括但不限于要求停止使用本软件,追究法律责任等措施。同时,项目开发者和/或贡献者会视司法部门的要求,协助调查。
7.5 您须对自己在使用本软件过程中的行为承担法律责任,包括但不限于账号被限流、锁定、禁用或依校规处理的风险。您承担法律责任的形式包括但不限于对受到侵害者进行赔偿,以及在项目开发者和/或贡献者首先承担了因您的行为导致的行政处罚或侵权损害赔偿责任后,您应给予项目开发者和/或贡献者等额的赔偿。
八、免责声明与责任限制
8.1 本软件按 「现状」(AS IS) 提供,在法律允许的最大范围内,我们不承担任何明示或默示的保证、条件或其他协定,也未就此作出任何相保、承诺、声明或保证,包括对本服务及相关单项服务或功能的完整性、准确性、及时性或可靠性等。
8.2 在适用法律允许的最大范围内,项目开发者和/或贡献者不对使用或无法使用本软件造成的任何后果承担责任,包括但不限于:
- 任何数据丢失、损坏或被窃取;
- 账号被锁定、被风控、被封禁,或依校规受到处理;
- 因误读课表、考勤或作业信息造成的任何学业后果(缺勤、漏交作业、错过截止时间等);
- 无法登录、请求失败、服务中断、程序错误或崩溃;
- 设备、系统或第三方软件受损;
- 因打开学校网页而在浏览器中产生的任何后果;
- 任何直接的、间接的、附带的、特殊的、惩罚性的或后果性的损失(含利润、机会、名誉损失);
- 任何由于黑客攻击,电脑病毒的侵入,非法内容信息、骚扰信息的屏蔽,政府管制以及其他任何网络、技术、通信线路、信息安全管理措施等原因造成的服务中断、延迟、受阻等情形;
- 因第三方如运营商的通讯线路故障、技术问题、网络、电脑故障、系统不稳定及其他原因等造成的损失的情形;
- 因台风、地震、停电、洪水、战争、恐怖袭击等不可抗力因素导致的软件功能异常;
- 由于法律法规的变更、司法机关及行政机关等的命令、裁定等原因而导致的本软件终止维护等情形。
- 由于您的使用不当或其他自身原因而导致任何与您相关的个人信息的泄露,项目开发者和/或贡献者对此不承担任何责任。
- 在任何情况下,项目开发者和/或贡献者均不对任何间接性、后果性、惩罚性、偶然性、特殊性或刑罚性的损害,包括因您使用本软件而遭受的利润损失,承担责任。您同意,我们对您承担的全部责任,无论因何原因或何种行为方式,始终不超过您在协议有效期内因使用本软件而支付给项目开发者和/或贡献者的费用(如有)。
- 任何第三方索赔。
上述免责在本软件已被告知该等损害可能性的情况下同样适用。
8.3 若适用法律不允许排除或限制某些责任,则本文件在该法律允许的范围内适用,其余条款不受影响。
8.4 完整免责文本以 LICENSE 中所载 BSD 3-Clause 英文原文为准。
九、开源许可
9.1 本项目以 BSD 3-Clause 许可开源:您可以自由使用、修改与再分发,但必须保留版权声明、条件列表与免责声明;不得使用作者或贡献者的名义为衍生作品背书或作推广。
9.2 免责声明是许可条款的组成部分,并非本文件额外附加。本文件是许可条款的中文说明;若本文件与 LICENSE 的英文文本存在冲突,以 LICENSE 为准。
9.3 您从他处获得的修改版、二次分发版或非官方构建,其行为与安全性由该分发者负责,与本项目作者无关。
十、删除您的数据
10.1 退出程序后,删除 §3.1 中的数据目录即可清除本机保存的全部凭据与配置;此操作不可恢复,凭据文件删除后无法找回密码。
10.2 学校侧保存的登录记录、审计日志与行为数据不在本软件控制范围内,如需处理请联系学校相关部门。
十一、变更、联系与安全披露
11.1 本文件可能随版本更新而修订,修订后随仓库发布并注明版本与日期;您继续使用即视为接受修订后的内容。
11.2 问题反馈请通过仓库 Issue;请勿在 Issue、截图或日志中粘贴账号、密码、加密口令、Cookie、ticket、token 或完整的真实响应内容。
11.3 安全漏洞请通过私下渠道(如 GitHub Security Advisory)披露,不要在公开 Issue 中发布可利用细节。
11.4 本文件仅适用于本软件本身;学校系统、您使用的浏览器、操作系统与第三方依赖库各自适用其自己的政策,不在本文件范围内。
十二、法律适用与争议解决
12.1 本协议的订立、效力、解释、履行及争议解决均适用中华人民共和国法律。
12.2 因本协议或本软件的使用产生的争议,您与我们应首先友好协商解决;协商不成的,任何一方可向有管辖权的人民法院提起诉讼。
十三、版本历史
| 版本 | 日期 | 说明 |
|---|---|---|
| 1.0 | 2026-09-29 | 初版:加密保存与用途限定、安全边界、数据流向、准确性免责、法律适用与争议解决、BSD-3 免责说明 |
| 1.1 | 2026-09-30 | 新增首次启动用户协议阅读确认机制;config.json 记录已同意的协议版本 |
| 1.2 | 2026-09-30 | Windows 打开网页改为不经命令壳层的方式;补充重定向的逐跳检查与跨来源标头/请求体规则 |