← Voltar a todos os posts

PDFUnlock Blog

Como funciona a quebra de senhas por GPU (em linguagem simples)

Uma explicação não técnica de como funciona a quebra de senhas baseada em GPU: hashcat, ataques de dicionário, força bruta, mutações baseadas em regras e o sistema de recuperação em dez fases.

· por Equipe PDFUnlock · 7 min de leitura

Quando você envia um PDF bloqueado para um serviço de recuperação de senha, o que realmente acontece do outro lado? Sem machine learning, sem mágica, sem backdoors secretas — apenas matemática, grandes dicionários e hardware muito rápido. Veja como funciona.

Passo zero: extrair o hash

Antes que qualquer quebra comece, o serviço extrai o hash de criptografia do seu PDF. É um pequeno pedaço de dados — tipicamente algumas centenas de bytes — que foi gerado a partir da sua senha original quando o arquivo foi criptografado.

Pense nele como uma impressão digital. O hash não contém a senha em si, mas se você adivinhar uma senha e calcular o hash dela, pode comparar o resultado com o hash do arquivo. Se forem iguais, você encontrou a senha.

Essa etapa de extração é instantânea e não requer GPU. No PDFUnlock, usamos uma ferramenta chamada pdf2john que roda em JavaScript puro — leva menos de 100 milissegundos.

Importante: apenas o hash é extraído. Nunca lemos o conteúdo do seu PDF. Mesmo se quiséssemos, não poderíamos — o conteúdo está criptografado.

Por que GPUs, não CPUs?

Uma CPU moderna tem 8 a 16 núcleos, cada um otimizado para tarefas complexas e sequenciais. Uma GPU moderna tem milhares de núcleos mais simples, otimizados para fazer a mesma pequena operação em muitos pontos de dados simultaneamente.

A quebra de senhas é um problema massivamente paralelo. Você precisa pegar uma senha candidata, gerar o hash dela e comparar o resultado com o alvo — e então repetir para a próxima candidata. Cada teste é independente. Não há necessidade de os núcleos se comunicarem entre si.

É exatamente para isso que as GPUs foram feitas. Uma única NVIDIA L4 (a GPU que usamos em produção) pode testar aproximadamente:

  • 25 bilhões de hashes MD5 por segundo
  • 250-350 milhões de hashes PDF RC4-128 por segundo
  • 1,3-1,8 bilhão de hashes PDF AES-128 por segundo (mais rápido que RC4-128 graças à aceleração por hardware AES-NI)
  • 15 kH/s (15.000 candidatos por segundo) de hashes PDF AES-256 R=6 por segundo — cerca de 20.000× mais lento que RC4-128

Uma CPU fazendo o mesmo trabalho pode gerenciar 1/100 desses números. Essa vantagem de velocidade de 100x é toda a razão pela qual a quebra por GPU substituiu a quebra por CPU na última década.

A ferramenta: hashcat

Quase todo serviço sério de recuperação de senha usa o hashcat, uma ferramenta de código aberto que está em desenvolvimento ativo desde 2009. Ela suporta mais de 350 tipos de hash, incluindo todas as variantes de criptografia de PDF.

O hashcat não é proprietário. Não é uma arma secreta. É a ferramenta padrão, disponível gratuitamente no GitHub. A diferença entre serviços não é o software — é o hardware em que ele roda, os dicionários utilizados e os conjuntos de regras aplicados.

Tipos de ataque

Ataque de dicionário

A abordagem mais simples: pegar uma lista de senhas conhecidas e tentar cada uma. O dicionário mais famoso é o rockyou.txt — 14,3 milhões de senhas vazadas da violação da RockYou em 2009. Apesar de ter 17 anos, essas senhas permanecem devastadoramente eficazes porque as pessoas continuam escolhendo os mesmos padrões.

Um ataque de dicionário em um PDF é executado em segundos a minutos, dependendo do tipo de criptografia.

Ataque baseado em regras

As pessoas raramente digitam senha como sua senha hoje em dia. Digitam S3nh@! ou Senha2026. Ataques baseados em regras pegam cada palavra de um dicionário e aplicam transformações comuns:

  • Colocar a primeira letra em maiúscula
  • Substituir a por @, e por 3, i por 1, o por 0
  • Acrescentar dígitos: 1, 123, 2026
  • Acrescentar símbolos: !, ?, #
  • Inverter a palavra
  • Duplicá-la

Um único dicionário de 14 milhões de palavras com um grande conjunto de regras pode gerar bilhões de candidatos. O conjunto best64.rule (64 regras) e OneRuleToRuleThemAll.rule (~50.000 regras) são os mais comumente usados.

Ataque de força bruta (máscara)

Quando os ataques de dicionário e regras falham, o último recurso é tentar todas as combinações possíveis. O ataque de máscara do hashcat permite definir um padrão:

  • ?a?a?a?a?a?a = todo caractere ASCII imprimível, 6 posições
  • ?d?d?d?d?d?d = toda combinação de dígitos, 6 posições
  • ?u?l?l?l?l?d?d = maiúscula + 4 minúsculas + 2 dígitos

Com --increment, o hashcat começa com 1 caractere e vai aumentando. Para ASCII imprimível (95 caracteres), o espaço de busca cresce exponencialmente:

ComprimentoCombinaçõesTempo (AES-256, RTX 4090)
481 milhões< 1 minuto
57,7 bilhões~40 minutos
6735 bilhões~2,5 dias
769,8 trilhões~270 dias
86,6 quatrilhões~70 anos

É por isso que senhas além de 8 caracteres aleatórios são efetivamente inquebráveis com o hardware atual. E por isso somos honestos sobre as taxas de sucesso do AES-256.

O sistema de dez fases do PDFUnlock

Executamos ataques em ordem de velocidade, parando assim que a senha é encontrada:

  1. Fase 1 — ~25.000 senhas multilíngues de teste rápido (segundos, gratuito). Uma lista curada das senhas mais comuns (5K base + 2K por idioma × 11 idiomas) — localizada para o idioma do usuário. Cerca de um terço dos trabalhos do mundo real terminam aqui, antes de cobrarmos um centavo.
  2. Fase 2 — rockyou.txt (segundos a minutos). O dicionário completo de 14,3 milhões de senhas.
  3. Fase 3 — rockyou + best64.rule (minutos a uma hora). Cada entrada do rockyou com 64 mutações comuns.
  4. Fase 4 — Combinator (minutos a horas). Combinações palavra+palavra como joao+2024 ou amor+sempre.
  5. Fase 5 — Hybrid dict+mask (minutos a horas). Palavras de dicionário com dígitos anexados, por exemplo senha1234 ou macaco+4 dígitos.
  6. Fase 6 — Keyboard walks (minutos). Padrões de teclado comuns como qwerty, azerty, 1qaz2wsx e sequências semelhantes.
  7. Fase 7 — rockyou + OneRuleToRuleThemAll (horas). Cada entrada com ~52.000 mutações. A fase mais produtiva para senhas “espertas”.
  8. Fase 8 — Força bruta Markov (horas a dias). Força bruta estatisticamente otimizada em 1–8 caracteres usando cadeias de Markov, testando primeiro as sequências de caracteres mais prováveis.

Você pode acompanhar o progresso em tempo real no seu painel. Cada transição de fase é reportada ao vivo via Firestore.

O que não conseguimos quebrar

Vamos ser diretos sobre os limites:

  • Senhas verdadeiramente aleatórias com mais de 8 caracteres em AES-256: a matemática está contra nós. 9 caracteres de ASCII imprimível aleatório em AES-256 levariam anos em uma única GPU.
  • Senhas de um gerenciador de senhas (como t9^Jq2p@ZrW4): essas não estão em nenhum dicionário e são muito longas para força bruta.
  • Frases-senha de 4+ palavras aleatórias (como correct horse battery staple): o espaço de combinação de palavras é muito grande.

Estimamos nossa taxa de sucesso geral em cerca de ~45% (Standard) / ~65% (Deep) / ~75% (Max) para RC4-128/AES-128, e ~20% (Standard) / ~30% (Deep) / ~38% (Max) para AES-256. Mostramos essa estimativa antes de você começar, e só cobramos se encontrarmos a senha.

Sem backdoors, sem mágica

Não há backdoor secreta no AES ou RC4. Não há maneira de contornar a criptografia sem a senha. Todo “desbloqueador de PDF” que afirma o contrário está mentindo ou falando de senhas de proprietário (que são algo completamente diferente e não envolvem criptografia).

O que fazemos é criptanálise bem compreendida, com décadas de existência. A única variável é tempo e poder computacional. Se a senha está nos nossos dicionários ou é curta o suficiente para força bruta, nós a encontraremos. Se não estiver, ninguém pode — e diremos isso honestamente.

Pronto para tentar? Envie seu PDF e veja o resultado do teste rápido gratuito em segundos.

Pronto quando você estiver

Desbloqueie seu PDF nos próximos 60 segundos

Grátis para senhas do proprietário. Pagamento por resultado para senhas de abertura. Sem conta. Sem cartão. Só o arquivo e um resultado.