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: 117 ]

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

Tags automáticas em URLs com a classe urlmatch da PHP

Como isolar seus projetos Python com virtualenv (ambiente virtual)

Corretor Ortográfico no Vim - Guia definitivo

Se preparando para obter certificação LPI

Docalysis: Análise de Documentos com Inteligência Artificial

Leitura recomendada

Ubuntu 14.04 no AD com CiD

Script com muitas utilidades para arquivos e pastas

Shell Script como serviço no Windows

Monitorando servidores pelo celular

Conheça o projeto BASHSRC

  
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