TOTP (认证器) 应用程序,使用Python & Textual
项目描述
textual-totp: 使用Python & Textual的TOTP (认证器) 应用程序
安装
您可以使用pip或pipx安装textual-totp
pipx install textual-totp
配置
配置以TOML文件的形式位于用户的常规配置目录中。在Linux上,这是 ~/.config/ttotp/settings.toml
。
启动时,ttotp
调用一个程序,该程序按行打印TOTP URI。作者建议将您的TOTP存储在 pass,标准Unix密码管理器 中。在这种情况下,您可以使用类似以下命令进行配置
otp-command = ['pass', 'show', 'totp-tokens']
如果您讨厌安全,可以使用不安全的命令如 cat
,或者只用 echo
测试
otp-command = "echo 'otpauth://totp/example?algorithm=SHA1&digits=6&secret=IHACDTJ2TFCSLUJLMSHYDBD74FS7OY5B'"
如果命令是字符串,则使用shell解释;否则,直接使用参数列表。
空闲时自动退出
要指定空闲期后自动退出,请使用 auto-exit
设置
# Exit after 5 minutes (300 seconds) of inactivity
auto-exit = 300
任何键盘事件、鼠标点击或鼠标滚动都算作“活动”,并将重置自动退出计时器。
如果没有指定 auto-exit
,或者它是0,则没有空闲超时。
配置文件
textual-totp支持多个配置文件。配置文件组织为配置文件的节;如果在配置文件节内未指定设置,则使用全局设置。
例如,给定
auto-exit=300
otp-command = ["..."]
[trusted-location]
auto-exit=0
textual-totp 通常在5分钟无活动后退出,但当您运行 ttotp --profile trusted-location
时,将禁用自动退出。
获取TOTP URI
有几种方法可以获取您的TOTP URI,它们是以 otpauth://totp/
开头的字符串。
- 在注册2FA时扫描单个二维码
- 您可以使用兼容的工具(如 PyQRCode)拍照或屏幕截图,然后在本地上解码二维码
- 从Google Authenticator的“转移账户”功能扫描二维码。这些是“离线 otpauth-migration”URL的形式。使用兼容的工具解码,如 otpauth-migration-decode
- Android不允许截图,但您的笔记本电脑可能有一个摄像头
- 将某些2FA注册过程中显示的较长的字母数字代码转录成完整的otpauth URL,删除任何存在的空白。
有一些基于浏览器的工具可以帮助完成这些任务。然而,很难确定网页是否安全地处理数据。因此,本节不推荐任何工具。
使用textual-totp
启动textual-totp的命令是 ttotp
。它有几个选项,可以通过 ttotp --help
显示。
ttotp
首先调用 otp-command
来获取TOTP列表。这可能需要交互(例如,pass
命令可能需要请求您的GPG密钥密码)
一旦otp-command完成,ttotp
将显示每个可用的TOTP。每个代码将显示为 ******
,直到它被揭示。
以多种方式上下导航
- 上下键
- tab和shift-tab键
- "j" 和 "k"(vi键)
要揭示一个代码,移动到所需的行并按 "s"。当代码到期时,它将被再次替换为 ******
。
按 "c" 直接将代码复制到操作系统的剪贴板。代码将在30秒后从剪贴板清除。您的操作系统可能会报告 ttotp
"从剪贴板粘贴"。这是因为 ttotp
试图仅清除它设置的值,通过检查当前剪贴板值是否等于它之前粘贴的值。
按 "/" 并输入要搜索的子字符串以搜索密钥。按 Ctrl+A 再次显示所有密钥。
Textual的内置 模糊匹配 算法被使用。
这使得搜索变得容易,例如,“Jay Doe / example.com”,只需输入“ja d ex”,而无需任何复杂的模糊搜索技术。
由于这种实现的简单性,字符类内部的空间字符不按预期工作。由于复杂的正则表达式可能很少使用,这不太可能是一个巨大的限制。
使用Ctrl+C退出应用程序。
TOTP的内存存储
只要 ttotp
打开,TOTP密钥值就以纯文本形式存储在内存中。
ttotp
从不将密钥值写入操作系统文件或存储在环境变量中。(但您的otp-command可能这样做!仔细检查任何相关文档)
开发状态
我(@jepler)编写此软件是因为它对我有用。它以当前的形式满足了我的需求。我为了自己的需求而维护它,对问题和拉取请求的处理可能不会是优先事项。感谢您对此的理解!
我在Linux上开发此软件,通常是Debian Linux。我经常将兼容Debian Oldstable作为目标,但此软件包仅在稳定的Debian Bookworm上进行了测试,使用Python 3.11,几乎肯定使用了不在Python 3.9中的构造。欢迎对其他平台的兼容性进行改进。
在极不可能的情况下,如果这个项目变得流行,我希望将其转变为一个由多个维护者共同管理的社区项目。我在跟踪器中输入的一些问题似乎是软件开发的良好方向。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
textual_totp-0.9.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4ec1eb9b433135694edc6bce13c19ea1e060b736e8a35098fd361eb8d4197d30 |
|
MD5 | e0e35d53923f1cb09fb1f76441739b9d |
|
BLAKE2b-256 | 1f2fb17288b5594b7154aab2dd4be6a749fd7425870d5e37f9a6dce000950855 |
textual_totp-0.9.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6d0663117da10760a35a629b8672994f79b584515165618f7956d1565a74cb86 |
|
MD5 | 800bde2eb9cc624e5003f0ae2023c347 |
|
BLAKE2b-256 | 6c9d7602b2edfafbd62e11965195f361a9f38272a1d81a0955a219f91beb6416 |