
Um aplicativo de desktop offline seguro para gerar e gerenciar códigos TOTP 2FA. Possui armazenamento de cofre criptografado, criptografia moderna (Argon2 + AES‑GCM), arquitetura modular e uma abordagem local-first sem dependências de nuvem. Projetado para confiabilidade, extensibilidade e futura interface de usuário cross-platform.
Um gerenciador seguro e offline de autenticação de dois fatores (2FA) para ambientes desktop. Construído com Python, com criptografia forte e sem dependências de nuvem.
🌐 Página Inicial: desktop-2fa.org
| Funcionalidade | Descrição |
|---|---|
| 🔐 Segurança do Vault | Criptografia AES-256-GCM com derivação de chave Argon2id |
| ⏱️ Geração TOTP | Geração de códigos compatível com RFC 6238 |
| 💻 CLI Completo | Interface de linha de comando completa para gerenciar tokens |
| 📋 Suporte a Área de Transferência | Cópia automática de códigos TOTP para a área de transferência |
| 🔓 Design sem Estado | Cada comando exige autenticação explícita por senha |
| 🛡️ Política de Senhas | Aplicação configurável de força de senha com zxcvbn |
| 🧪 Bem Testado | 289 testes passando com cobertura abrangente |
| 📖 Modelo de Segurança | Documentação detalhada de análise de ameaças e design criptográfico |
Adicionando uma nova entrada TOTP interativamente
Gerando um código TOTP para uma entrada
Renomeando uma entrada com detecção de duplicatas
Visualizando informações de versão e listando todas as entradas
pip install desktop-2fa
Verificar instalação:
python -c "import desktop_2fa; print(desktop_2fa.__version__)"
# Saída: 0.8.1dev
# Inicializar um novo vault
d2fa vault init
# Adicionar um novo token TOTP
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP
# Listar todas as entradas
d2fa vault list
# Gerar um código
d2fa code GitHub
# Fornecer senha via linha de comando
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP --password minhasenha
# Fornecer senha via arquivo
d2fa vault add GitHub GitHub JBSWY3DPEHPK3PXP --password-file /caminho/para/arquivo_senha.txt
O vault é um arquivo de armazenamento criptografado localizado em ~/.desktop-2fa/vault.
Quando um comando exige um vault e nenhum existe:
--password/--password-file (modo não interativo)Vault criado em <caminho>Quando um comando exige um vault e ele existe:
typer.Exit(1)O comando rename impõe comportamento determinístico quando várias entradas correspondem ao nome alvo:
Erro: Várias entradas chamadas '<nome>' existem. Operação abortada. Resolva as duplicatas primeiro.O vault usa:
Cada comando exige autenticação explícita por senha. Nenhum acesso baseado em sessão.
Desktop-2FA usa zxcvbn para avaliar a força da senha ao criar ou alterar senhas do vault:
Exemplos:
password, 123456, qwerty, admin2024Battery-Horse-Staple-Correct, Mountain@River*2024, MySecureVault#42Configuração (~/.config/d2fa/config.toml):
[security]
# Exigir senhas fortes (pontuação >= 3)
reject_weak_passwords = false # avisar mas permitir | true: rejeitar senhas fracas
Quando reject_weak_passwords = false:
Quando reject_weak_passwords = true:
Compatibilidade Retroativa:
Se você tiver min_password_entropy definido em sua configuração (opção legada), ele é reconhecido e tratado como equivalente a exigir pontuação zxcvbn >= 3.
A versão 0.8.0 mantém todo o endurecimento de segurança anterior da v0.7.3 e introduz arquitetura modular para melhor isolamento de código:
pytest tests/ # Executar todos os testes
pytest --cov=src/desktop_2fa # Executar com cobertura
src/desktop_2fa/
├── app/ # Componentes da aplicação
├── cli/ # Interface de linha de comando
├── crypto/ # Utilitários de criptografia
├── totp/ # Geração TOTP
├── ui/ # Componentes de interface do usuário
├── vault/ # Gerenciamento de vault
└── utils/ # Utilitários
Apache License 2.0. Veja o arquivo LICENSE.
Łukasz Perek
desktop‑2fa é apoiado pelo Programa de Patrocínio Kilo OSS.
Para perguntas ou suporte, entre em contato pelo e-mail [email protected]
Desktop‑2FA é uma ferramenta open‑source independente construída com foco em autonomia, transparência e segurança offline. Se você acha útil e deseja apoiar o desenvolvimento contínuo, pode fazê-lo através das plataformas abaixo:
| Comando | Descrição |
|---|
d2fa vault add <nome> <emissor> <segredo> | Adicionar uma nova entrada TOTP |
d2fa vault list | Listar todas as entradas TOTP armazenadas |
d2fa vault rename <antigo> <novo> | Renomear uma entrada |
d2fa vault remove <nome> | Remover uma entrada |
d2fa code <nome> [--copy|--copy-only] | Gerar código TOTP com opções de cópia para área de transferência |
| Comando | Descrição |
|---|
d2fa vault init [--force] | Inicializar um novo vault |
d2fa vault unlock | Abrir vault com aviso de senha fraca (se configurado) |
d2fa vault change-password | Alterar a senha do vault |
d2fa vault backup | Criar um backup criptografado do vault |
d2fa vault export <caminho> | Exportar vault para arquivo |
d2fa vault import <caminho> [--force] | Importar vault de arquivo |
| Opção | Descrição |
|---|
--password <senha> | Fornecer senha do vault diretamente |
--password-file <caminho> | Ler senha do vault de um arquivo |
--json | Saída em formato JSON |
--raw | Saída bruta (sem formatação) |
--quiet | Suprimir saída não essencial |
--copy | Copiar código TOTP para área de transferência e exibir |
--copy-only | Copiar código TOTP apenas para área de transferência |
--force | Forçar operação (ignorar confirmações) |
| Documento | Descrição |
|---|
| Manual do Usuário | Guia de uso completo |
| Modelo de Segurança | Análise detalhada de ameaças e design criptográfico |
| Especificação UX do CLI | Contrato de UX e comportamento |
| Criptografia | Detalhes da implementação de segurança |