Pages: [1]   Go Down
Author Topic: [tutorial] quebrando a cifra de cesar por busca relativa  (Read 845 times)
kodo no kami
RegMem
*

Karma: +0/-0
Offline Offline

Posts: 44


« on: June 26, 2016, 04:52:52 PM »

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

Code:
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


Code:
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

Code:
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



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

Code:
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

Code:
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

Code:
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

Code:
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

Code:
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



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)



outro programa de busca relativa que eu recomendo é o monkeymore



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



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

Code:
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



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

by kodo no kami
« Last Edit: June 26, 2016, 05:02:03 PM by kodo no kami »Logged

Pages: [1]   Go Up
Print
Jump to: