SuperAPI AI 工具集

totp-generate

安全与审计

查看项目

更新于 10-16 03:14

技能介绍

用途:把用户已持有的 TOTP 共享密钥转换为服务当前要求的验证码,全程离线。它针对手写 TOTP 的常见失败做了修正:前导零丢失、base32 填充在去空白前计算、忽略 otpauth:// URI 中的 digits/period、验证码剩余寿命过短、把主机时钟漂移误判为密钥错误。

主要能力:脚本可读取原始 base32 密钥或完整 otpauth://totp/… URI,并从中识别 digits、period 与算法;支持 --file、--stdin 或环境变量输入;--min-validity 5 可先等待即将失效的窗口;--json 输出 code 与 expires_in;--check-clock 检测时钟漂移(退出码 4);--selftest 用 RFC 向量自检(退出码 3);--window 1 用于诊断相邻窗口。

使用方式:设置 TOTP="${CLAUDE_SKILL_DIR}/scripts/totp.py",然后 python3 "$TOTP" --file ~/.config/totp/github.txt,或通过 macOS keychain、Linux libsecret 管道传入 --stdin,也可用 TOTP_SECRET=… python3 "$TOTP"。生成时建议加 --min-validity 5,并向用户报告验证码及剩余有效期,如 123456 (valid 24s)。

限制与注意:不要把密钥放进 argv,优先用权限 600 的文件;不要打印密钥,只打印验证码;验证码一次性且短寿,不要写入文件、提交、PR 或日志,被拒后不要在同一窗口重发相同数字。仅对用户控制或获授权的账户生成。otpauth://hotp/… 基于计数器,需要持久计数器状态,不适用本技能。若被拒,先查时钟漂移,再核对 digits/period/algorithm;--window 仅用于诊断,绝不提交窗口化验证码。非零退出表示未生成验证码:2 用法/密钥错误,3 自检失败,4 时钟漂移。其他技能不导入本技能,而是调用满足“stdout 仅输出验证码、退出 0、剩余寿命约 5 秒以上”的代码命令。