[tutorial] quebrando a cifra de cesar por busca relativa

Iniciado por kodo no kami, Abril 24, 2017, 04:22:52 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

kodo no kami

e ae galera eu ja escrevi um tutorial desse a uns anos atras mais como o tempo é relativo e as imagens fica off nesse meio tempo entao vou rescrever o tutorial com mais informações que o anterior '-' , a cifra de cesar é uma criptografia usado por julio cesar para enviar mensagem para suas amantes (ops acho que distorci a historia de mais '-' ), a cifra de cesar é uma criptografia baseada em simples permutação na ordem da tabela incrementando ou decrementando para proxima ou a anterior equivalente, exemplo temos a seguinte tabela de caracteres

a = 1
b = 2
c = 3
d = 4
e = 5
f = 6
g = 7
h = 8
...


entao se a gente escrever a palavra kodo seria equivalente a k = 11, o = 15, d = 4, o = 15 (kodo = 11 15 4 15), a cifra de cesar altera a ordem dessa tabela incrementando ou decrementando uma quantidade fixa, sendo essa quantidade a chave para criptografar e para descriptografar


kodo + 1 = lpep

k (11) + 1 = l (12)
o (15) + 1 = p (16)
d (4) + 1 = e (5)
o (15) + 1 = p (16)


para descriptografar fazemos o inverso

lpep - 1 = kodo

l (12) - 1 = k (11)
p (16) - 1 = o (15)
e (5) - 1 = d (4)
p (16) - 1 = o (15)


a cifra de cesar é baseada na quantidade de caracteres que tem a tabela ou seja se a tabela tiver apenas as letras do alfabeto sera 25 caracteres (romanos) para ser permutado, se tiver as letras e numeros sera 35 caracteres para ser permutado, se usar a tabela ascii que é equivalente a 7bits (128 caracteres), ascii extendida que é mais usada hoje na computação sendo ela 8bits com 256 caracteres para ser permutado, unicode 16bits com 65536 caracteres na tabela para ser permutada, a quantidade de caracteres na tabela é importante por que ela que diz a quantidade maxima de tentativas para quebrar a senha por força bruta ou seja uma tabela ascii extendida que tem 256 caracteres diferentes a força bruta são apenas 255 tentativa maxima nela, para quem tiver interesse em algoritimo escrito em C para criptografar ou descriptografar o cifra de cesar que eu fiz para esse tutorial segue o link no git hub ai

github

http://i67.tinypic.com/296114x.jpg

agora que a gente ja sabe como o algoritimo da cifra de cesar funciona vamos entender como a busca relativa funciona, em uma busca normal pode ser feita checando cada caracter do texto onde vamos buscar com os caracteres do texto que estamos buscando se tiver a mesma sequencia de caracteres no texto que estamos buscando entao o texto existe ou seja casou

texto: kodo
texto a ser buscado: kami

k = k (casou)
o = a (nao casou)
... (nao é necessario checar o resto apenas se for recursivo)


a busca relativa é mais precisa que isso ao inves de buscar uma sequencia de caracteres de ambos os textos ela busca a diferença entre um caracter para outro em ambos os textos isso permite mesmo que esteja usando uma tabela diferente a busca seja possivel com o mesmo resultado, umas das forma de fazer a busca relativa é usando a diferença entre o caracter anterior com o proximo, exemplo a letra "b" sempre fica uma posição depois da letra "a", e a letra "d" sempre fica 3 posições depois da letra "a", com base nisso ao inves da gente comparar caracter como a busca normal a gente compara as diferenças entre cada caracter tanto no texto que vamos buscar quanto o texto que estamos buscando, exemplo a palavra kodo

kodo = +4 -11 +11

k (11) <-> o (15) = +4
o (15) <-> d (4) = -11
d (4) <-> o (15) = +11


resumindo qualquer outro texto que contenha essa mesma sequencia um caracter que seja +4 a frente do atual depois -11 e depois +11 é possivel que seja a palavra kodo usando outra tabela, exemplo a palavra ptit que é o kodo codificado em cifra de cesar +5

ptit = +4 -11 +11

p (16) <-> t (20) = +4
t (20) <-> i (9) = -11
i (9) <-> t (20) = +20


a comparação final é pela diferença entre os dois textos se ambos casar é possivel que seja o mesmo texto

ptit = kodo

+4 = +4
-11 = -11
+11 = +11


claro que para que funcione voce deve acertar uma palavra dentro do texto criptografado (no caso basta usar palavras mais usadas naquele idioma), alem do mais palavras diferentes pode gerar o mesma sequencia porem quanto maior for a palavra menos colisão acontece, como a cifra de cesar usa uma chave fixa e uma tabela tambem fixa se voce descobrir uma palavra todo o resto é igual, a busca relativa é muito usada tambem em tradução de jogos principalmente roms (romhacking), existem programas usandos em romhacking que podemos utilizar para fazer busca relativa como windhex que é um editor hex especifico para romhacking ele tem varias opções (busca relativa, criar e importar tabela etc), searchX e o monkeymoore é um programa muito bom para busca relativa, vamos testar alguns para isso vou usar o seguinte texto criptografado em cifra de cesar

wi$yq$viwypxehs$í$geywehs$tsv$yq$izirxs0$qyhi$s$izirxs$uyi$givxeqirxi$qyheve$s$viwypxehs0$tsviq$rehe$mrhmge$uyi$s$qiwqs$izirxs$wiqtvi$zem$kivev$s$qiwqs$viwypxehs$sy$uyi$s$qiwqs$viwypxehs$wiqtvi$wive$kivehs$tips$qiwqs$izirxs$,$oshs$rs$oeqm

a palavra que vou pesquisar é "que", se tiver uma palavra que gere aquela sequencia equivalente a palavra "que" ele vai retornar, vou começar com o programa searchX

http://i68.tinypic.com/jzib7c.jpg

podemos reparar na imagem anterior que ele encontro a palavra "que" e tambem mostro que a letra 'a' dessa tabela começa no codigo 65 (podemos usar programas como table manager para criar uma tabela com base nessa informação e depois carrega em um editor hexadecimanl que aceite esse formato)

http://i65.tinypic.com/dqreyx.jpg

outro programa de busca relativa que eu recomendo é o monkeymore

http://i66.tinypic.com/2u6it83.jpg

melhor alternativa é um editor hexadecimal chamado windhex, ele alem de fazer a busca relativa converter o texto para a tabela automaticamente, tambem tem um gerador de tabela que pode ser usado ou pode importar uma tabela criada pelo table manager e muitas outras opções

http://i66.tinypic.com/5efytl.jpg

depois de importar a tabela no editor windhex é possivel ler o texto que estava criptografado normalmente

se um resultado é causado por um evento, mude o evento que certamente mudara o resultado, porem nada indica que o mesmo evento sempre vai gerar o mesmo resultado ou que o mesmo resultado sempre sera gerado pelo mesmo evento ~ kodo no kami

http://i64.tinypic.com/2isha8j.jpg

bom galera busca relativa é usado em varias areas seja criptoanalise ou ate mesmo em tradução de jogos (romhacking)

by kodo no kami

huskie

Solicito que o usuário por favor mude o tamanho máximo de largura de todas as imagens postadas de 1280 pra 400 x proporcional e edite a sua assinatura, que está 100 píxels de altura acima das regras vigentes neste forum.
Through PS4 PSXItarch v3 Linux!