#authenticator #totp #argon2 #google-authenticator

app cotp

可信、加密的命令行TOTP/HOTP身份验证应用程序,具有导入功能

32个版本 (21个稳定版本)

1.8.0 2024年7月29日
1.7.1 2024年6月19日
1.5.0 2024年3月12日
1.3.0 2023年10月10日
0.1.7 2021年2月21日

#20 in 身份验证

Download history 167/week @ 2024-04-27 208/week @ 2024-05-04 35/week @ 2024-05-11 18/week @ 2024-05-18 2/week @ 2024-05-25 4/week @ 2024-06-01 3/week @ 2024-06-08 208/week @ 2024-06-15 27/week @ 2024-06-22 170/week @ 2024-07-06 22/week @ 2024-07-13 144/week @ 2024-07-20 172/week @ 2024-07-27 14/week @ 2024-08-03 2/week @ 2024-08-10

每月下载 333次

自定义许可

2.5MB
3.5K SLoC

cotp - 命令行TOTP/HOTP身份验证器

Actions Status crates.io Downloads

Packaging status

我相信安全至关重要,尤其是在这个数字世界中。我创建了cotp,因为我需要一个最小化、安全且可在桌面上访问的软件来管理我的双因素认证代码。

概述

界面

输入 i 获取一些说明。否则,只需输入 cotp --help。在首次运行时,您将被提示输入密码以初始化数据库。

TL;DR

# Display all the OTP codes in the interactive dashboard
cotp # select any code with arrow keys, press enter to copy into the clipboard, even in an SSH remote shell

# Add a new TOTP code from a BASE32 secret key
cotp add --label [email protected] --issuer Google

# Add a new HOTP code with custom algorithm, digits and counter
cotp add --label example --type hotp --algorithm SHA256 --digits 8 --counter 10

# Edit the digits of the 4th OTP code
cotp edit --index 4 --digits 8

# List all the codes in JSON format passing password through stdin
echo "mysecretpassword" | cotp --password-stdin list --json

# Extract the first matching OTP code with "google" issuer and copy it into the clipboard
echo "mysecretpassword" | cotp extract --issuer google --copy-clipboard

# Import an encrypted Aegis Database backup
cotp import --path my_db.json --aegis-encrypted

# Export the cotp database
cotp export

兼容性

cotp可以生成符合 rfc6238rfc4226 规范的 TOTPHOTP 代码。此外,还可以自定义设置,如 HMAC算法位数,以与其他双因素身份验证系统提供兼容性。

最新版本还包括对 SteamYandexMOTP 代码的支持。

加密

此程序仅依赖于一个使用 XChaCha20Poly1305 认证加密和 Argon2id 密钥派生的数据库文件。

它还使用 AES-GCM 从加密的Aegis备份中导入。

跨平台

cotp应该容易在大多数使用的平台上编译,但主要在Linux和Windows上进行测试。

安装

Arch Linux和基于arch的发行版

Arch Linux在[extra]存储库中有一个官方包

pacman -S cotp

另外,如果您希望编译和运行Git HEAD版本而不是当前稳定版本,可以使用cotp-git包,使用常规说明或您喜欢的AUR辅助工具,如paru (paru -S cotp-git)。

NixOS

查看官方包

其他Linux发行版和*nix

在开始之前,请检查您是否安装了使用rust编译器所需的构建依赖项。

您需要安装 libxcb-devel 依赖项,这是X11中复制剪贴板所必需的。

  • 基于Debian的系统:sudo apt install libxcb1-dev libx11-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev
  • 基于Fedora / RHEL的系统:sudo dnf install libX11-devel
  • Void Linux:sudo xbps-install -S libxcb-devel

macOS

brew install cotp

Windows

支持使用 x86_64-pc-windows-gnux86_64-pc-windows-msvc 工具链进行构建。

如果您想使用 x86_64-pc-windows-msvc,则需要安装Visual C++ 2019 Build Tools

安装完rust工具链后,只需运行 cargo install cotp 即可。

使用crates.io仓库

只需输入 cargo install cotp 等待安装。

克隆GitHub仓库并手动安装

您可以使用以下命令构建cotp

git clone https://github.com/replydev/cotp.git
cargo install --path cotp/

从其他应用程序迁移

cotp支持从各种应用程序迁移TOTP代码。其中一些需要使用以下表中列出的简单Python脚本进行转换。

应用程序 如何获取备份 需要转换 cotp参数
andOTP 使用应用程序本身创建备份。 --andotp
Aegis 使用应用程序本身创建备份。 --aegis
Aegis (加密) 使用应用程序本身创建加密备份。 --aegis-encrypted
Authy 从您的手机获取 /data/data/com.authy.authy/shared_prefs/com.authy.storage.tokens.authenticator.xml --authy
Authy (第二种方法) 遵循此指南: https://gist.github.com/gboudreau/94bb0c11a6209c82418d01a59d958c93 --authy-exported
cotp 使用 cotp export 导出您的数据库。 --cotp
FreeOTP 从您的手机获取 /data/data/org.fedorahosted.freeotp/shared_prefs/tokens.xml --freeotp
FreeOTP+ 使用应用程序本身创建备份。 --freeotp-plus
Google Authenticator 从您的手机获取 /data/data/com.google.android.apps.authenticator2/databases/databases --google-authenticator
Microsoft Authenticator 从您的手机获取 /data/data/com.azure.authenticator/databases/PhoneFactor。如果存在,也获取 PhoneFactor-walPhoneFactor-shm --microsoft-authenticator
OTP URI列表 创建一个包含items属性的JSON文件。它将包含一个字符串数组,其中每个元素都是OTP URI。 --otp-uri

如何转换

获取正确的文件后,运行位于此源代码 converters/ 目录中的正确Python脚本。

示例: python authy.py path/to/database.xml converted.json

它将以cotp可读取的JSON格式转换数据库。

要终止导入: cotp import --authy --path path/to/converted_database.json

配置

默认情况下,数据库位于 $HOME/.cotp/db.cotp。如果您想使用不同的路径,可以使用 COTP_DB_PATH 环境变量。以下是在 bash 中如何操作的示例:

$ COTP_DB_PATH=/home/user/.local/custom-folder/db.cotp /usr/bin/cotp

计划中的功能

目前,没有计划中的功能。如果您需要可以改进软件的新功能,请随时提交问题。

贡献

我创建这个项目是为了满足自己的需求,但如果这个小程序对其他人有帮助,我会很高兴,并且我会感激地接受任何拉取请求。

依赖项

~16–26MB
~395K SLoC