将 Dkey Token (宁盾令牌)转换为标准 TOTP

2022-05-27
2分钟阅读时长

这篇文章是从英文版本翻译而来,可能做不到文从字顺。

背景

一般来说,一所高校的 IT 部门提供 VPN 服务是很正常的。学生只需下载 Cisco AnyConnect 应用程序并输入他们的用户名/密码,然后单击“连接”以连接到他们学校的局域网,并在家中或校外使用它来访问仅限在校内使用的服务或访问一些数据库,如 CNKI (知网)或 IEEE-Xplore。两步验证是必要的,因为这能在学生的账号密码泄漏后,防止非法人士利用 VPN 进入学校内网。

我们学校使用的是 Dkey Token(宁盾令牌),但总有一些同学会遇到不小心卸载了app、手机数据损坏或更换手机等问题。正常的步骤是向 ITSC 提交工单或 Workflow,要求他们解除绑定并在校园内网重新激活 2FA。但是,ITSC 处理这些步骤的时间很长,学生在手机上做一些操作也很困难。他们甚至不知道什么是 2FA。

而我找到了一种从 Dkey Token 导出种子并将种子导入其他 2FA 应用程序的方法,例如 HE Network 中的One Time Password、CanoKeys、Microsoft Authenticator 等。

开工

我们的 ITSC 提供了帮助我们学生自行安装宁盾令牌的说明。 这儿还有一个二维码供我们扫描。

2.jpg

二维码的内容是(内容已经脱敏)

http://mtc.ndkey.com/mtc/appDownload/index.html#eyJ2ZXJzaW9uIjoxLCJzZXJ2aWNlSWQiOiJTTjExNDUxNDE5MTk4MSIsImNvbXBhbnlOYW1lIjoi5YWs5Y+45ZCN56ewIiwiYWN0aXZhdGlvbk1ldGhvZCI6Miwic2VydmljZUFkZHJlc3MiOiIxMS40LjUuMTQiLCJzZXJ2aWNlUG9ydCI6NDQzLCJ0ZW5hbnRJZCI6ImRlYWRiZWVmLWNhZmUtYmFiZS1mYWNlLWRlYWRiZWVmY2FmZSJ9

3.jpg

我们解码它并得到(内容已经脱敏)

{
    "version": 1,
    "serviceId": "SN114514191981",
    "companyName": "公司名称",
    "activationMethod": 2,
    "serviceAddress": "11.4.5.14",
    "servicePort": 443,
    "tenantId": "deadbeef-cafe-babe-face-deadbeefcafe"
}

在激活过程中,我使用数据包捕获软件抓包。

1.png

{
    "requestId": null,
    "success": true,
    "errorCode": 0,
    "errorId": null,
    "data": "{\"serial\":\"114514\",\"crypto\":1,\"seed\":\"beefbeefbeefbeefbeefbeefbeefbeefbeefbeef\",\"timeStep\":60,\"passwordLength\":6}",
    "message": null
}

现在我们得到了 seed。

获得 secret

文本是十六进制字符串格式的种子,需要将其处理成 secret 后才能使用。

先把种子从十六进制字符串解密成二进制,然后用 base32 加密,得到的值就是 secret。

将 seed 导入第三方应用程序

现在我们可以自己用它来获取 TOTP。 我们可以在 HE Network Tools、CanoKeys、Microsoft Authenticator 等 App 中导入并激活 TOTP 了。

Enjoy

4.jpg

Avatar

Kirin

六月始めに生まれ、八月終わりに遠のいた