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

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 um painel de rede em PHP

A função DATE_FORMAT() do MySQL

Viva o Linux adere à moda Orkut

Liberte-se: Crie um Servidor Proxy na Nuvem para Acessar Conteúdos Bloqueados

Semana da velharia no VOL

Leitura recomendada

Aviso de queda de Internet via Sendxmpp

Monitoramento de pops para provedores

Ubuntu 14.04 no AD com CiD

Entendendo, criando e editando pacotes Debian (.deb)

Alta disponibilidade de links

  
Comentários
[1] Comentário enviado por maurixnovatrento em 08/06/2025 - 17:04h

Bom artigo.
______________________________________________________________________
Inscreva-se no meu Canal: https://www.youtube.com/@LinuxDicasPro
Repositório GitHub do Canal: https://github.com/LinuxDicasPro
Grupo do Telegram: https://t.me/LinuxDicasPro


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts