O Desafio do 2FA: Transforme seu Terminal em um Google Authenticator

O Conteúdo

Vamos começar este artigo de um jeito diferente. Antes de eu explicar qualquer teoria, eu quero que você prepare seu celular.

Se você usa o Google Authenticator, Authy, ou qualquer aplicativo que gera códigos de 2ª etapa (2FA), abra-o agora.

O Desafio

Aponte a câmera do seu aplicativo para o QR Code abaixo e adicione a conta. Você verá que ela será identificada automaticamente com o nome do nosso blog:

AprendendoNaRede: Lab.

O que aconteceu? Seu celular agora está exibindo um código de 6 dígitos que muda a cada 30 segundos. Mantenha o celular desbloqueado sobre a mesa, olhando para ele.

O objetivo deste post é fazer a nossa “tela preta” do terminal exibir exatamente o mesmo número que está na tela do seu celular, no mesmo instante, sem depender de câmera ou internet.

A Teoria: O Segredo dos Espiões

Para a maioria das pessoas, o 2FA é mágica. Para nós, é apenas matemática.

Imagine dois espiões que precisam confirmar a identidade um do outro. Antes da missão, eles combinam uma Senha Secreta Mestra. Eles também têm relógios perfeitamente sincronizados.

A regra é: A cada 30 segundos, misture a Senha Secreta com o Horário Atual usando uma fórmula matemática.

  • Se o Espião A fizer a conta às 10:00:15, o resultado é 123456.
  • O Espião B, fazendo a mesma conta no mesmo horário, também chega a 123456.

O QR Code que você escaneou não é um link mágico. Ele é apenas um pacote contendo essa “Senha Secreta Mestra” e uma etiqueta de identificação.

O “Molho Secreto” do QR Code

Se abríssemos aquele QR Code, encontraríamos este texto exato:

otpauth://totp/AprendendoNaRede:Lab?secret=MINTHEBLOGTESTKEYX&issuer=AprendendoNaRede

Olhe os componentes:

  1. issuer=AprendendoNaRede: É isso que faz o nome do blog aparecer bonito no seu celular.
  2. secret=MINTHEBLOGTESTKEYX: Esta é a chave mestra do nosso laboratório.

Tanto o seu celular quanto o terminal farão a mesma coisa: pegarão essa chave (MINTHEBLOGTESTKEYX), somarão com a hora atual, e gerarão o código de 6 dígitos. Se os relógios estiverem certos, o resultado será idêntico.

Passo 1: A Ferramenta (oathtool)

Não vamos reinventar a roda criptográfica. Vamos usar o padrão da indústria. No Debian, Ubuntu, Mint ou Kali, a ferramenta nativa se chama oathtool.

# Atualizando repositórios e instalando a ferramenta correta
sudo apt update && sudo apt install oathtool -y

Passo 2: A Mágica Acontece

Agora, olhe para o seu celular e veja o código atual. Rápido, antes que mude!

Copie e cole o comando abaixo no terminal. Note que estamos passando a mesma chave mestra que estava no QR Code:

oathtool --totp -b "MINTHEBLOGTESTKEYX"

Compare o resultado do terminal com o do seu celular.

Se tudo deu certo, os números são idênticos. Você acabou de quebrar a dependência do dispositivo móvel.

Passo 3: O Jeito Profissional (Funções com Argumentos)

Digitar aquele comando longo é improdutivo. E se criássemos um comando próprio, chamado gauth, onde só precisamos informar a chave?

Vamos criar uma função no nosso .bashrc que aceita “argumentos” (a chave que digitarmos depois do comando).

  1. Abra seu arquivo de configuração: nano ~/.bashrc
  2. Adicione esta função no final do arquivo:
# Função genérica para gerar TOTP
# O $1 representa o primeiro "argumento" (a chave) que você digitar
function gauth() {
    # Verifica se o usuário esqueceu de digitar a chave
    if [ -z "$1" ]; then
        echo "Erro: Informe a chave secreta."
        echo "Uso: gauth SUA_CHAVE_SECRETA"
        return 1
    fi

    # Gera o código usando a chave fornecida ($1)
    oathtool --totp -b "$1"
}
  1. Salve (Ctrl+O, Enter) e saia (Ctrl+X).
  2. Recarregue o terminal:
source ~/.bashrc

Passo 4: O Truque Ninja (Privacidade) 🥷

Agora você pode gerar o código passando a chave direto no terminal:

 gauth MINTHEBLOGTESTKEYX

Mas espere! Se você digitar a chave assim, ela ficará salva no histórico do terminal (comando history), certo? Qualquer um que sentar no seu PC poderá ver suas chaves digitando seta para cima.

Errado, se você conhecer o truque certo.

No Linux, se você colocar um espaço em branco antes do comando, a maioria das configurações padrão não gravará aquele comando no histórico. Observe que eu coloquei um espaço antes do comando anterior.

Se você apertar a “Seta para Cima” para consultar o histórico do terminal, o comando gauth MINTHEBLOGTESTKEYX (com a chave secreta) não estará lá. É como se nunca tivesse acontecido.

Um Aviso Crítico sobre Segurança

Você acabou de aprender algo poderoso. Mas com grandes poderes vêm grandes responsabilidades.

A Regra de Ouro: O método de digitar a chave no terminal (mesmo com o truque do espaço) é excelente para testes, ambientes de desenvolvimento ou contas de baixo risco (jogos, fóruns).

Para contas críticas (banco, e-mail principal), você nunca deve digitar ou salvar a chave mestra em texto puro no seu computador. Nesses casos, a chave deve ficar dentro de um gerenciador de senhas criptografado.


O que vem por aí?

Você viu duas técnicas avançadas no final que merecem atenção. Este post foi apenas a ponta do iceberg. Em breve, vamos explorar:

  1. Os Fantasmas do Shell: Por que aquele “espaço” antes do comando funcionou? Vamos entender como dominar o history para proteger sua privacidade.
  2. Cofres Digitais: Digitar a chave toda vez é chato. Vamos aprender a integrar o terminal com gerenciadores de senhas reais (como o Bitwarden), para que você nunca mais precise manusear uma chave secreta.

Até lá, siga o coelho branco. 🐇