惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

LY 的博客

AX1800 路由器折腾记录 ZJUCTF 2025 writeup 将 iPad 与 Apple Pencil 作为数位屏使用 Linux 修改 WiFi 监管数据 机械革命无界 15X Pro 暴风雪使用 Arch Linux 基于 RawDisk,将双系统挂载为虚拟机 使用硬件密钥解锁 KeePass 数据库 Linux 自制鼠标指针 Windows 使用 USB/IP 通过网络共享 USB 设备
提取上交 jAccount 动态口令(TOTP)
LY · 2025-08-05 · via LY 的博客

背景

既然你能来到这里,应该也不需要什么介绍了吧。

本文使用的环境:一台安卓手机,交我办 3.4.9。

下文“分析”与“教程”是混在一起写的,你应当有能分辨必需步骤的能力。你应当知道你的用户名,下文以faputa或者你的用户名代替。

警告:TOTP密钥为隐私内容,不应在任何不信任的网站上输入。本文中出现的密钥仅用于演示用途,已在本文编写完成后全部撤销。

正文

获取密钥

多种方法选择任一即可。

读数据库方法

本方法需要用到安卓系统自带的备份功能,门槛较低。

先在“交我办”生成动态口令。

去翻翻应用私密文件,发现了个TOTP.db,打开看看发现没有SQLite format 3文件头,而且乱码看着很无规律,盲猜是SQLCipher。分析classes*.dex,在edu.sjtu.infoplus.taskcenter.db.totp.TOTPDatabase$Companion中发现SQLCipher相关内容(也就是net.sqlcipher.database.SQLiteDatabase等等类名)。结合sqlcipher-android文档,得到密钥account#totp@db

备份“交我办”后,解压备份文件,在databases或对应目录下找到TOTP.dbTOTP.db-wal文件。(谢谢你,android:allowBackup="true")(如果你的手机root了,直接访问/data/user/0/edu.sjtu.infoplus.taskcenter/databases/即可获得)

为什么要有个TOTP.db-wal文件?简单来说,由于某些bug,TOTP密钥一直没有被真正写入TOTP.db中,而是在TOTP.db-wal中暂存。这垃圾bug调了我十分钟。

安装SQLCipher(Windows版本可以在这里下载),执行sqlcipher TOTP.db,依次输入:

PRAGMA KEY='account#totp@db';
PRAGMA cipher_migrate;
.tables
select * from TOTPKey;

输出形如:faputa|2C10EA6E652029139EABE8896E10C3705CB0F757CA2F2D5AEBF147F027E072697760BB50C8FC1CF1EB2914C5514AF57A0D3C768F4FED0357830B0E4567A1767F|2,中间的一串即为TOTP密钥。

抓包方法

本方法需要用到ProxyPin等抓包软件。为了使目标软件信任自签名HTTPS证书,要求手机已经root,门槛较高。

既然服务器端需要验证TOTP,必定会有一个服务器与客户端交换密钥的过程,因此尝试抓包。

开启抓包软件,随后在“交我办”生成动态口令,得到URL为https://jaccount.sjtu.edu.cn/jaccount/issueTotpPOST请求。响应体中的key字段即为TOTP密钥,形如2C10EA6E652029139EABE8896E10C3705CB0F757CA2F2D5AEBF147F027E072697760BB50C8FC1CF1EB2914C5514AF57A0D3C768F4FED0357830B0E4567A1767F

完整的响应体形如:

{
  "errno": 0,
  "error": "动态口令开通成功",
  "total": 0,
  "entities": [
    {
      "key": "2C10EA6E652029139EABE8896E10C3705CB0F757CA2F2D5AEBF147F027E072697760BB50C8FC1CF1EB2914C5514AF57A0D3C768F4FED0357830B0E4567A1767F",
      "version": 3
    }
  ]
}
不用手机的抓包方法

将浏览器的User Agent设置为TaskCenterApp/3.4.9,然后在浏览器中访问https://jaccount.sjtu.edu.cn/jaccount/issueTotp?account=你的用户名,即可访问开通TOTP的页面。对页面源码进行一些修改后,即可正常开通TOTP。其他操作与“抓包方法”一节相同。

将密钥导入密码管理器

得到的密钥为128位长,仅由[0-9A-F]组成的字符串,可直接猜测其为使用SHA-512的TOTP中,以hex格式表示的密钥。该猜测可被edu.sjtu.infoplus.taskcenter.widget.TaskCenterWebView$5TOTP.generateTOTP512代码验证。

一般密码管理器中,需要的TOTP密钥均为Base32格式(移除结尾的=),因此需要转码。

“鸣谢”一节中列出的网站可以帮你完成这一过程,但强烈建议在本地转换。比如,Linux系统中可以使用以下命令:

cat | xxd -r -p | base32 -w0 | tr -d '='

执行该命令,粘贴hex格式的密钥,按下回车,按下Ctrl + D,输出即为所需的Base32格式密钥。

以上文中得到的密钥为例,转码后得到的Base32格式密钥为FQIOU3TFEAURHHVL5CEW4EGDOBOLB52XZIXS2WXL6FD7AJ7AOJUXOYF3KDEPYHHR5MURJRKRJL2XUDJ4O2HU73IDK6BQWDSFM6QXM7Y

配置好参数(即使用SHA-512,而非更常见的SHA-1算法)后,即可导入你的密码管理器或验证器。

如果你需要生成二维码,或者直接编辑密码管理器的otp字段,你需要的Key Uri形如:otpauth://totp/jAccount:faputa?issuer=jAccount&secret=FQIOU3TFEAURHHVL5CEW4EGDOBOLB52XZIXS2WXL6FD7AJ7AOJUXOYF3KDEPYHHR5MURJRKRJL2XUDJ4O2HU73IDK6BQWDSFM6QXM7Y&algorithm=SHA512&digits=6&period=30

导入完成后,如果密钥来自“交我办”应用,可以验证生成的验证码是否与“交我办”中一致。

鸣谢

警告:TOTP密钥为隐私内容,不应在任何不信任的网站上输入。以下网站可能将你的密钥传输到服务端,并且可能存在第三方追踪器,因此不应当被信任。

另外

不要信上交招生老师一个字,虽然写给你看也没啥用。

如果是交大校友,可以跟我认识一下,联系方式在网站右上角的关于里。