Então você quer decodificar...

Esta é uma introdução sobre como começar a entrar em jogos de decodificação. Embora existam muitas ferramentas e orientações úteis na Internet, muitos novos decodificadores podem facilmente ficar sobrecarregados ao descobrir quais ferramentas usar ou por onde começar quando receberem algo como "IXRuZW1uZXRoZ2lsbkUgZWh0IG5pb0o=". Esta cartilha mostrará "como criar estratégias" quando for apresentado um problema de decodificação com exemplos. No final, você terá o entendimento básico do que está acontecendo e poderá usá-lo para experimentar e aprender o grande número de ferramentas de decodificação disponíveis na Internet.
Como vamos fazer:

  1. Conhecer as duas maneiras pelas quais as mensagens criptografadas/codificadas são criadas.
  2. Reconhecer/adivinhar pontos de partida quando encontrar uma mensagem criptografada/codificada.

Então você pode usar ferramentas como:

Como criptografar/codificar uma mensagem:

Para descobrir como decodificar, primeiro você tem que saber como as mensagens são codificadas. Para facilitar as coisas, você pode pensar na codificação como uma combinação de 2 processos:

  • Criptografar é pegar a mensagem e reorganizar ou substituir os caracteres para ocultar uma mensagem. Em outras palavras, a criptografia mantém o mesmo conjunto de caracteres (por exemplo, caracteres ASCII a-z A-Z e numerais 0-9), mas substitui um por outro ou reorganiza sua ordem. Por exemplo, reverter a ordem dos caracteres seria criptografar. Esses métodos são chamados cifras. hello olleh
  • Codificação é uma espécie de inverso de criptografar em que mantém a mensagem a mesma, apenas representa-a de uma maneira diferente. Por exemplo, o código Morse codificaria como. Esses métodos são chamados de codificações. hello .... . .-.. .-.. ---

A seguir, um rápido resumo de algumas das técnicas básicas. A criptografia geralmente pode ser considerada como uma das duas técnicas: (a) algum tipo de reorganização da ordem e (b) substituição de letras por outras. Dada uma mensagem, você pode esconder seu significado fazendo coisas como:

Reorganização: Invertendo a ordem dos caracteres

hello como olleh

Reorganização: Pular caracteres, pular cifra

Em uma cifra de salto você escreve a mensagem a cada n caracteres. Então id n=4: torna-se Como criptografar facilmente: escrever a mensagem em várias linhas, cada uma com n caracteres. Assim, com n=4: abcdefgh aebfcgdh

abcd
efgh

Em seguida, leia as colunas, da esquerda para a direita:
Para decodificar, escreva sua mensagem em linhas e leia as colunas. Aqui você pode ter que tentar diferentes combinações para fazê-lo funcionar, ou usar algo como a ferramenta de salto da MultiDec para fazer muitas combinações ao mesmo tempo.
Por exemplo, está escrito como:

ae bf cg dh aebfcgdh

ae
bf
cg
dh

Em seguida, lendo as colunas: abcdefgh

Reorganização: Variantes da cifra de salto

Há muitas variantes para essa cifra, e é por isso que você verá muitas online. Por exemplo, você pode usar uma senha para alterar n depois de cada caractere, você tem um transposition cipher. Você também pode mudar n de uma maneira inteligente usando Rail fence cipher. Além disso, nem sempre você precisa ir da esquerda para a direita, de cima para baixo, mas a direção pode mudar, bem como em uma route/path cipher. E há muitos, muitos, mais. O ponto aqui é que você pode precisar forçar a força bruta tentando diferentes técnicas até que um "clique". Felizmente, existem muitas ferramentas online para experimentar.

Reorganização: regex

regex.ingress.codes para verificar se você tem uma Keyword em seu texto

Às vezes você recebe um monte de letras e número, mas não sabe se você está na etapa final ou que tipo de rearranjo é necessário. Há um truque que você pode usar! Se você tem uma lista de possíveis palavras que existem em seu código, você pode usar expressões regulares (regex) para pesquisar a lista de possíveis keywords que usam as letras que você tem! Por exemplo, em Ingress, os códigos diários têm o formato. Portanto, você pode usar regex para ver se uma keyword está presente. A lista de keywords são mantidas em vários lugares (por exemplo, ingress.codes ou seu repositório github), para que você possa baixar e manter a lista você mesmo ou usar um site na internet como regex.ingress.codes. Para pesquisar usando regex, digite onde você substitua o 6 pelo número de letras que aparecerão na keyword. Mais informações disponíveis aqui em ingress.codes e aqui decodeingress.me.

aaa##keyword###aa ^[yourlistofcharacters]{6}$ {6}

Como exemplo: depois de decodificar e descriptografar, você começa e quer saber se há uma keyword nela. Há 5 números, então combina com o formato. Existem 13 letras, 5 das quais fazem parte do prefixo e sufixo, então a keyword tem 8 letras de comprimento. Por isso, entramos em regex.ingress.codes. Ele encontrará todas as keywords que têm 8 caracteres e são compostas apenas das letras em nossa sequência de texto. O resultado: Então sabemos que temos uma boa senha com uma keyword de timezero e só temos que descobrir como reorganizar as letras!

te68o5erezim2tk8uf > ^[te68o5erezim2tk8uf]{8}$ > timezero

Substituição: Número rotativo de caracteres, cifras ROT

Você pode criptografar uma mensagem "girando" um certo número de caracteres. Aqui, "girar" significa trocar cada letra por n letras no alfabeto. A mais comum é ROT13 ou Cipher César. Descriptografia e criptografia são as mesmas, é só que a soma total de rotações de descriptografia e criptografia tem que ser igual a 26. Assim, a criptografia ROT1 pode ser descriptografada com ROT25. É por isso que o ROT13 é popular - é criptografado e descriptografado da mesma forma. Alternativamente, você pode criptografar uma mensagem girando n para a esquerda e, em seguida, decodificar girando n para a direita.

HAL IBM h i z a

Substituição: Variantes em cifras ROT

Você pode mudar o n da substituição com cada personagem. Por exemplo, se você tiver uma senha, você pode usá-la para criptografar e descriptografar uma mensagem. Isso se chama Vigenere cipher. Posso usar a senha para criptografar uma mensagem. Primeiro, converta os números correspondentes das letras que compõem a senha, e em seguida, gire a mensagem pelos números correspondentes para a direita.

hello
this is a message
hello h,e,l,l,o
8,5,12,12,15

msg: t h i s i s a m e s s a g e
ROT: 8 5 12 12 15 8 5 12 12 15 8 5 12 12
out: a l t d w z e x p g z e r p

Então a senha está criptografada. Para descriptografar, gire cada caractere na mensagem criptografada para a esquerda pelo número correspondente da senha. this is a message hello altd wz e xpgzerp

Como cifras de salto, há muitas variantes, e às vezes abordagens de força bruta são necessárias.

Substituição: Cifra Atbash

Outro método de substituição comum é inverter a ordem do alfabeto. Isso é conhecido como Cifra Atbash: a z b y

Técnicas comuns de codificação

Acima vimos que a criptografia usa cifras para alterar a ordem dos caracteres ou substituir um caractere por outro. Abaixo mostraremos técnicas onde você pode usar diferentes métodos de codificação para representar uma mensagem usando diferentes símbolos ou significados por trás dos caracteres. Portanto, você pode representar uma mensagem alterando a codificação da mensagem. Pense nisso como mudar o conjunto de caracteres de letras e números padrão (a-z A-Z 0-9, ou 62 caracteres diferentes) para outra coisa, ou os mesmos caracteres que significam outra coisa (por exemplo, em hexadecimal, significa "dez"). Há muitas, muitas maneiras de fazer isso, mas aqui estão algumas comuns:

Morse

O código Morse é uma maneira extremamente comum de representar letras e números como pontos, traços e espaços.

ASCII

Há uma maneira padrão de representar letras em binário para que os computadores possam entendê-las chamada "ASCII". Isso representa cada personagem como um número. Para obter mais informações, consulte wikipedia ou procure tabelas ASCII. Uma vez que você tenha esse número, você pode representar esse número de muitas maneiras diferentes: como um número binário, número decimal, número octal ou número hexadecimal. Por exemplo, está em decimal, que está em hexadecimal (hex), em octal, e em binário. Existem muitas ferramentas online para codificar e decodificar para você. Por exemplo, veja as ferramentas de decodeingress.me.

91 61 141 01100001

Como você reconhece um código ASCII em uma base específica?

  • Decimal: valores que variam de 32 a 126. são caracteres ASCII "imprimíveis". hello 104 101 108 108 111
  • Hex: São sequências de dois caracteres que consistem em um dígito e uma letra de A-F. Caracteres imprimíveis têm o primeiro dígito na faixa de 2-7. (ou seja, corresponde ao número 0). hello 68 65 6c 6c 6f
  • Octal: números de 3 dígitos que consistem nos dígitos 0-7. Personagens imprimíveis começam em 040 e terminam em 176. hello > 150 145 154 154 157
  • Binário: Grupos de 7 dígitos ou 8 dígitos sequência de 1s e 0s. Se houver uma sequência de 8 dígitos, o primeiro dígito é um 0. hello > 01101000 01100101 01101100 01101100 01101111
A1Z26

Você pode representar cada letra do alfabeto com o número da ordem do alfabeto. Por exemplo, a primeira letra é A 26ª é, então o personagem recebe o número 1 e fica com o número 26. A palavra é, portanto, codificada como. Por exemplo, veja a ferramenta dcode.fr a z a z hello > 8 5 12 12 15

Base64 (e outras BaseN)

Qualquer sequência de números binários pode ser representada como caracteres "imprimíveis" usando codificação base64. Este é um grande truque que os codificadores usam para converter quase tudo com dois símbolos (por exemplo, binário) em texto legível. Um uso comum da base64 é pegar uma sequência ASCII de caracteres, codificá-lo como uma sequência binária de 1s e 0s, e convertê-lo em base64. Tudo isso pode ser facilmente tratado por muitas ferramentas online, como as ferramentas de decodeingress.me.

Como reconhecer a base64?

  • Consiste em letras maiúsculas e minúsculas a-z, A-Z, números 0-9, sinal de mais e barra + /, e sinal de igual =
  • Se os últimos caracteres são sinais iguais, é quase sempre base64 (ou base32, veja abaixo).
  • Exemplo: hello > aGVsbG8=

Existem muitas outras variantes de baseN que codificam 1s e 0s (ou o binário ASCII 1s e 0s) em outros caracteres. É bom pesquisar e se familiarizar com aqueles em cyberchef, criptoii, e dcode.fr. Com quais caracteres são usados? Por exemplo, base32 usa apenas letras maiúsculas A-Z, números 2-7 e o sinal igual =. Por exemplo, veja a ferramenta dcode.fr.

Passos para decodificar/descriptografar uma mensagem

Agora que temos os "blocos de construção" para codificar, podemos abordar a decodificação!

  1. Você tem personagens no formato que você espera? Para códigos diários no jogo Ingress, seu código final será no formato: 5 dígitos e as demais letras. Então você tem 5 números e as outras letras? Se assim for, use os métodos de descriptografia da cifra acima para traduzir e substituir até que você tenha a solução. Você pode precisar de uma senha para usar alguns métodos de descriptografia (por exemplo, Vigenere), que podem estar escondidos em outro lugar. aaa##keyword###aa
  2. Se você não tiver os caracteres certos/esperados, você pode tentar decodificar a mensagem usando os esquemas de codificação listados acima. Manipulá-lo deve lhe dar algo com caracteres e números como esperado.
  3. Vá para o passo 1 até que haja uma solução.
Formatos de Passcode

Os formatos nem sempre são iguais, abaixo estão alguns exemplos:

Investigation Blog:
xxx##keyword###xx
(# é 2 até 9)
WOTD:
x#x#keywordx#xx
(# é 0 até 9)
Ingress Report:
keyword#xx##xx#
(# é 0 até 9)
Anomaly:
xxxxxxxx#keyword#
(# é 2 até 9)
Exemplo

Vamos dar uma olhada no código que está no parágrafo de introdução.

IXRuZW1uZXRoZ2lsbkUgZWh0IG5pb0o=

  1. É um texto irreconhecível, mas consiste apenas de a-z, A-Z, 0-9, e termina em um sinal igual, então talvez seja codificação base64! Use o decodificador base64 do dcode.fr e veja o que acontece.
  2. Agora eu tenho algo com pontuação, espaços, letras minúsculas, e duas letras maiúsculas como uma frase! Mas a ordem parece estranha, a pontuação está na frente e uma letra maiúscula está na parte de trás. Isso parece a cifra inversa! Use dcode.fr ou outra ferramenta para ajudá-lo a reverter!

Conclusão e Resumo

Agora você pode ver os blocos de construção de resolver esses quebra-cabeças: usar combinações de cifras e esquemas de codificação para manipular uma mensagem para obter outra. Cifras alteram a ordem dos caracteres ou substituem um personagem por outro, esquemas de codificação alteram a representação de um conjunto de caracteres ou símbolos em outro conjunto de caracteres ou símbolos. Existem muitas, muitas maneiras de fazê-lo, aqui apenas foi apresentado algumas para começar, então agora é bom explorar e aprender o máximo que puder, tanto o que eles fazem quanto como eles funcionam!

Próximo passo?

Quer experimentar mais quebra-cabeças? Confira ingress.codes para uma coleção de quebra-cabeças anteriores com passo a passo da solução.

Feito com 💚 por @Suburbanizar, baseado em DecodingPrimer.