O que analise-de-cifras-classicas faz?
Playbook de análise de cifras clássicas. Use ao encontrar cifras de substituição, Vigenère, transposição, XOR ou texto codificado em desafios CTF que exigem análise de frequência, exame de Kasiski ou criptoanálise de texto claro conhecido.
Visão Geral
Este guia cobre técnicas fundamentais para decifrar cifras clássicas comuns em competições CTF. O objetivo é fornecer um fluxo de trabalho sistemático, desde a identificação do tipo de cifra até a recuperação da mensagem original.
Casos de Uso
- Identificar o tipo de cifra a partir de características do texto cifrado (distribuição de caracteres, comprimento, padrões).
- Decifrar cifras de substituição simples (monoalfabéticas) usando análise de frequência e correspondência de padrões.
- Quebrar cifras de Vigenère determinando o comprimento da chave (método de Kasiski) e, em seguida, realizando análise de frequência por coluna.
- Reverter cifras de transposição (como a de colunas) através de anagramas e busca por largura de grade.
- Recuperar texto original de cifras XOR (especialmente XOR de bloco único ou repetitivo) usando suposições de texto claro conhecido e análise estatística.
- Decodificar codificações comuns como Base64, Hex, ou Rot13, que frequentemente aparecem como parte de cifras mais complexas.
Fluxo de Trabalho Recomendado
- Observação: Analise a distribuição de caracteres, o comprimento do texto e a presença de espaços ou pontuações. Texto cifrado com distribuição uniforme de letras pode indicar Vigenère ou XOR; distribuição irregular sugere substituição simples.
- Identificação: Use ferramentas como
python3comcollections.Counterpara calcular frequências, outresedno terminal para manipulações rápidas. - Análise Específica:
- Substituição Simples: Compare a frequência das letras do cifrado com a frequência esperada do idioma (geralmente português ou inglês). Troque letças manualmente ou com scripts baseados em dicionários.
- Vigenère: Aplique o teste de Kasiski para encontrar repetições no texto cifrado e calcular o comprimento da chave. Depois, para cada coluna (posição módulo a chave), execute análise de frequência separada.
- Transposição: Tente reinserir o texto em uma grade de largura variável e leia por colunas. Use o comprimento do texto para estimar a largura da grade.
- XOR: Se o texto claro é conhecido parcialmente, realize a operação XOR para recuperar a chave. Para XOR de chave única, tente força bruta sobre todos os valores de byte (0-255) e verifique a legibilidade.
- Verificação: Após a decodificação, verifique se o resultado é um texto inteligível no idioma esperado. Use verificadores ortográficos ou dicionários para confirmar.
Ferramentas e Recursos
- Ambiente: Terminal com Python 3 e as bibliotecas
pwntools(para XOR, codificações) epycryptodome(para cifras clássicas). - Comandos Úteis:
cat cipher.txt | tr 'A-Z' 'a-z'para normalizar.python3 -c "import sys; from collections import Counter; print(Counter(sys.stdin.read()))"para análise de frequência.
- Scripts Prontos: Incluídos na pasta
scripts/(se aplicável) para automatizar Kasiski, força bruta XOR e decodificação de transposição.
Exemplo Prático
Dado o texto cifrado: FVBQR VF N TRARENY CEBTENZ (aparente cifra de César).
- Calcule a frequência: as letras mais comuns são 'R', 'N', 'E', 'B', 'F'.
- Suponha que o texto original está em português ou inglês (a letra 'E' é a mais comum). Tente um deslocamento de 13 (ROT13).
- Execute:
echo 'FVBQR VF N TRARENY CEBTENZ' | tr 'A-Za-z' 'N-ZA-Mn-za-m'. - Resultado:
S I C I S I R L A S M A R Y(ou similar, dependendo da cifra).
Notas
- A análise de frequência funciona melhor com textos longos (mais de 100 caracteres).
- Para cifras curtas, use análise de padrões (palavras comuns, bigramas).
- Mantenha um backup do texto cifrado original para comparar hipóteses.
- Em desafios CTF, a cifra pode ser composta (ex.: Base64 + XOR). Procure por padrões de cabeçalho ou assinaturas.