Automatizando digitação de códigos 2FA no browser

Descrição: Este artigo explica como criar um script em Bash para automatizar a digitação de códigos Two-Factor Authentication (2FA) no navegador, utilizando oathtool, xsel, xdotool e zenity.

[ Hits: 115 ]

Por: Fábio Berbert de Paula em 29/05/2025 | Blog: https://fabio.automatizando.dev


Introdução



O processo manual de digitação de códigos 2FA pode ser trabalhoso, especialmente ao utilizar diversos sites. Este script facilita essa tarefa, gerando e colando automaticamente o código diretamente no navegador.

Veja um exemplo do script em funcionamento:

Instalando as dependências

Primeiro, instale as dependências necessárias no Ubuntu ou em sistemas baseados em Debian:

sudo apt install zenity oathtool xsel xdotool

Criando o arquivo .env

Crie um arquivo oculto .env no diretório home (~/) para armazenar suas chaves secretas dos sites com 2FA:

vim ~/.env

Insira as variáveis no formato NOME_DO_SITE_2FA com as chaves secretas obtidas ao configurar o 2FA:

GOOGLE_2FA="SEU_SECRET_GOOGLE"
KUCOIN2_2FA="SEU_SECRET_KUCOIN"
AWSROOT_2FA="SEU_SECRET_AWSROOT"

Salve o arquivo (:wq no Vim).

Ajuste as permissões de leitura e escrita do arquivo para garantir que apenas o usuário atual possa acessá-lo:

chmod 600 ~/.env

Criando o script de automação

Crie um script chamado 2fa.sh em seu diretório de executáveis preferido, por exemplo, ~/.local/bin para seu usuário ou /usr/local/bin para tornar o script globalmente acessível:

vim ~/.local/bin/2fa.sh

Insira o conteúdo abaixo:

#!/usr/bin/env bash
# Carrega variáveis de ambiente
if [ -f "$HOME/.env" ]; then
  source "$HOME/.env"
else
  zenity --error --title="Erro" --text="~/.env não encontrado."
  exit 1
fi

# Solicita nome do site
site=$(zenity --entry --title="Código 2FA" --text="Digite o nome do site:")

# Sai se vazio
[ -z "$site" ] && exit 0

# Converte nome para variável
var_name="$(echo "$site" | tr '[:lower:]' '[:upper:]')_2FA"

# Recupera segredo
secret="${!var_name}"

# Verifica se existe
if [ -z "$secret" ]; then
  zenity --error --title="Erro" --text="Variável $var_name não definida."
  exit 1
fi

# Gera e cola código
code=$(oathtool --totp -b "$secret")
echo -n "$code" | xsel -b
sleep 1
xdotool key --clearmodifiers ctrl+v

Salve e feche o arquivo.

Torne o script executável com:

chmod +x ~/.local/bin/2fa.sh

Se quiser usar o script de qualquer local, mova-o para /usr/local/bin:

sudo mv ~/.local/bin/2fa.sh /usr/local/bin/

Agora, basta executar em qualquer terminal com:

2fa.sh

Uso prático

Sempre que precisar de um código 2FA:
  1. Execute 2fa;
  2. Digite o nome do site (como definido no .env);
  3. O script automaticamente gera o código, copia para a área de transferência e cola no navegador.



Bônus: Atalhos de teclado



Para facilitar ainda mais, você pode criar um atalho de teclado para executar o script. No GNOME, por exemplo, vá em Configurações > Teclado > Atalhos Personalizados e adicione um novo atalho. No meu caso ficou assim:
Agora sempre que eu pressionar Shift + Ctrl + 2, o script será executado e o código 2FA será colado automaticamente no campo de autenticação do site.

Com esses passos, você agiliza e automatiza a utilização de códigos 2FA, simplificando significativamente seu workflow.

   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Criando gráficos com a classe JPGraph (parte 1)

Placa Intel PRO/Wireless 3945ABG no Debian Linux

tzwatch - Navegando pelo horário mundial no Debian

Como baixar vídeos do Facebook via terminal

SQL Dicas & Truques (versão 0.1)

Leitura recomendada

Extracttext - como extrair texto de uma área selecionada da tela

Shell script com PHP

ShellBot - Crie Bots para Telegram em Shell Script

Monitoramento de pops para provedores

pam_mount e CiD - Gerenciamento centralizado dos mapeamentos de unidades de rede no Ubuntu

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts