Decodificando ROT-13 usando o terminal

Posted: 01 março 2012 by Bhior in Marcadores: , , ,
4

ROT-13 (ou rot13, rot-13, Rot13, etc) é o nome que se costuma usar para um procedimento simples mas eficaz para garantir que textos eletrônicos não sejam lidos por distração ou acidente. ROT-13 vem do inglês, ROTate by 13 places, "ROTacionar 13 posições".

Especificamente, a cifra ROT-13 tem se mostrado útil principalmente para proteger endereços de correio eletrônico (evitando SPAM, o envio de mensagens não solicitadas) e para "proteger" mensagens que o remetente pode preferir não ler - comentários sobre livros, filmes, ou séries, piadas politicamente incorretas, esse tipo de coisa.

Como era de se esperar, o ROT-13 é usado principalmente em grupos de discussão (como na usenet) e em listas de discussão como as dos Yahoo.

Um detalhe importante: não há qualquer diferença entre o procedimento para codificar um texto em ROT-13 e o procedimento para decodificá-lo; simplesmente aplicamos o mesmo procedimento uma segunda vez.

Em termos técnicos, ROT-13 é uma cifra de César aplicável apenas aos caracteres alfabéticos (da língua inglesa) e com passo 13. Um algoritmo mais recente e menos popular, o ROT-47, gira todos os caracteres ASCII de códigos entre 33 ("!") e 126 ("˜" ou til) e usa o passo 47. A vantagem do ROT-47 consiste no fato de que sinais de pontuação, algarismos numéricos e muitos caracteres especiais também são embaralhados.

Vamos entender um pouco sobre a cifra de César:
Júlio César, o imperador romano, usava a "Cifra de César" para enviar ordens secretas aos seus generais. O código consistia em trocar cada letra de uma mensagem pela terceira letra seguinte. Ou seja, o algoritmo utilizado era o método substituição. Assim, o “a” virava “d”, o “b” virava “e”, e assim por diante.

a --> d
b --> e
c --> f
...
x --> a
y --> b
z --> c

O método de Júlio César e uma forma rudimentar de criptografia, pois com 26 tentativas um espião ou hacker consegue quebrar a mensagem criptografada. 
Exemplo:
Texto: os alunos não podem ler isto
Texto para encriptar: osalunosnaopodemleristo
Texto encriptado : rvdoxqrvqdrsrghpohulvwr

Usando o comando "echo" e "tr" podemos codificar e decodificar com uma sintaxe simples usando o shell, essas combinações servem para quase todas variações de ROT.
A lista com as 25 combinações:
ROT-1 = b-za-aB-ZA-A
ROT-2 = c-za-bC-ZA-B
ROT-3 = d-za-cD-ZA-C
ROT-4 = e-za-dE-ZA-D
ROT-5 =  f-za-eF-ZA-E
ROT-6 =  g-za-fG-ZA-F
ROT-7 = h-za-gH-ZA-G
ROT-8 = i-za-hI-ZA-H
ROT-9 = j-za-iJ-ZA-I
ROT-10 = k-za-jK-ZA-J
ROT-11 = l-za-kL-ZA-K
ROT-12 = m-za-lM-ZA-L
ROT-13 = n-za-mN-ZA-M
ROT-14 = o-za-nO-ZA-N
ROT-15 = p-za-oP-ZA-O
ROT-16 = q-za-pQ-ZA-P
ROT-17 = r-za-qR-ZA-Q
ROT-18 = s-za-rS-ZA-R
ROT-19 = t-za-sT-ZA-S
ROT-20 = u-za-tU-ZA-T
ROT-21 = v-za-uV-ZA-U
ROT-22 = w-za-vW-ZA-V
ROT-23 = x-za-wX-ZA-W
ROT-24 = y-za-xY-ZA-X
ROT-25 = z-za-yZ-ZA-Y


Vou codificar o nome Brasil-underground usando esse serviço on-line
Resultado http://theblob.org/rot.cgi?text=Brasil-Underground
ROT-0: Brasil-Underground
ROT-1: Csbtjm-Voefshspvoe
ROT-2: Dtcukn-Wpfgtitqwpf
ROT-3: Eudvlo-Xqghujurxqg
ROT-4: Fvewmp-Yrhivkvsyrh
ROT-5: Gwfxnq-Zsijwlwtzsi
ROT-6: Hxgyor-Atjkxmxuatj
ROT-7: Iyhzps-Buklynyvbuk
ROT-8: Jziaqt-Cvlmzozwcvl
ROT-9: Kajbru-Dwmnapaxdwm
ROT-10: Lbkcsv-Exnobqbyexn
ROT-11: Mcldtw-Fyopcrczfyo
ROT-12: Ndmeux-Gzpqdsdagzp
ROT-13: Oenfvy-Haqretebhaq
ROT-14: Pfogwz-Ibrsfufcibr
ROT-15: Qgphxa-Jcstgvgdjcs
ROT-16: Rhqiyb-Kdtuhwhekdt
ROT-17: Sirjzc-Leuvixifleu
ROT-18: Tjskad-Mfvwjyjgmfv
ROT-19: Uktlbe-Ngwxkzkhngw
ROT-20: Vlumcf-Ohxylaliohx
ROT-21: Wmvndg-Piyzmbmjpiy
ROT-22: Xnwoeh-Qjzancnkqjz
ROT-23: Yoxpfi-Rkabodolrka
ROT-24: Zpyqgj-Slbcpepmslb
ROT-25: Aqzrhk-Tmcdqfqntmc

Vou citar dois exemplos usando:
ROT-1:
fabiano@bhior ~ $ echo "Csbtjm-Voefshspvoe" | tr 'b-za-aB-ZA-A' 'a-zA-Z'
Brasil-Underground
ROT-5:
fabiano@bhior ~ $ echo "Gwfxnq-Zsijwlwtzsi" | tr 'f-za-eF-ZA-E' 'a-zA-Z'
Brasil-Underground

Lista de site para conversões on-line:
www.rimmek.de/rot-13.html
www.martin-steen.de/rot13.html
www.rot13.com
www.just-stuart.com/cgi-bin/ur13 (também converte rot-47)
members.tripod.com/~BraunzGuy/rot13.htm
ilectric.com/rot13
home.mchsi.com/~darinfranklin/rot13
www.garykeith.com/rot-13/html.asp (não exige JavaScript)
www.alliancestudio.com/tk/rot13.html
www.degraeve.com/rot13.shtml
pflock.de/rot13.htm
pflock.de/rot_old.htm
enigmator.codeine.org/Rot13
www.terra.es/personal/jgmoyay/DesRot13.htm (en Castelano)
www.geocities.com/satou_geo/rot13.html (Italiano)
beetools.trustbee.com/rot13 (Japonês - também converte ROT47 ?)
www.eyescream.se/~niclas/rot13.htm
pamer.net/tools/rot13.html (em Alemão/German)
web.kostenlos-germany.net/casper/rot13.html (em Alemão/German)
computercops.biz

Ref: http://en.wikipedia.org/wiki/ROT13

4 comentários:

  1. Anônimo says:

    Muitoo bom, ja tinha lido varios texto sobre isso manero!;

    mais uma resenha ae! ; Julio Cezar nunca foi imperador de Roma ele foi o primeiro ditador de Roma; saoksaoaskasoaskasoskao so pra descontrai vllw otimo post !;

    By: be.shoot

  1. fvox says:

    Hi.

    Dá pra brincar com Perl também ahahah...
    $ perl -le '$_ = shift; y~n-za-mN-ZA-M~a-zA-Z~; print' "Sbehz-Vainqref"
    Forum-Invaders

    []'s

  1. Bhior says:

    Caro Fvox,

    Para ti e fácil transforma a sintaxe em mais 3 linguagens:
    http://hyperpolyglot.org/scripting

    Abraços

    []'s

  1. Anônimo says:

    Meu pai aprendeu isso nos escoteiro hshuuhsuh