quebrando a cifra de cesar por busca relativa

Discussão em 'Tutoriais' iniciado por kodo no kami, 26 Junho 2016.

  1. kodo no kami
    Offline

    kodo no kami Membro Conhecido

    Afiliado:
    16 Dezembro 2015
    Mensagens:
    228
    Sexo:
    Masculino
    Avaliações:
    +299 / -0
    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    [​IMG]

    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    Código (Forge Crash):
    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

    [​IMG]

    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)

    [​IMG]

    outro programa de busca relativa que eu recomendo é o monkeymore

    [​IMG]

    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

    [​IMG]

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

    Código (Forge Crash):
    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
    [​IMG]

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

    by kodo no kami
     

Compartilhe esta Página