Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #
- # Solução do desafio da Clavis, publicado em
- # http://www.seginfo.com.br/challenge-3-blog-seginfo-esteganografia/
- #
- # Uso: ./steg-clavis.sh DesafioEsteg.jpg
- #
- # Fernando Mercês (fernando@mentebinaria.com.br)
- # just4fun! :)
- verde='\e[0;32m'
- amar='\e[0;33m'
- verm='\e[0;31m'
- def='\e[0m'
- ok() { echo -e "$verde[OK]$def"; }
- fail() { echo -e "$verm[FAIL]$def"; exit 1; }
- md5ori="a5d78511149bcf68afddd82a1ed6db29"
- md5=$(md5sum $1 | cut -d" " -f1)
- echo -ne "Checando MD5 da imagem...\t\t"
- test "$md5" = "$md5ori" && ok || fail
- # Tem uma string com vários 0s e 1s dentro do arquivo
- echo -ne "Buscando string dentro da imagem...\t"
- binstr=$(strings $1 | grep 01010110) && ok || fail
- # Tomando os caracteres em grupos de 8 e convertendo pra ASCII
- # sai outra string interessante...
- echo -ne "Convertendo os binários para ASCII...\t"
- for ((i=0; i < ${#binstr}; i+=8))
- do
- valor=$(echo "obase=16;ibase=2;${binstr:$i:8}" | bc)
- b64str=$b64str$(echo -ne "\x$valor")
- done
- test -n "$b64str" && ok || fail
- # ...que está em base64. Se tirarmos, outra string interessante...
- echo -ne "Revertendo BASE64...\t\t\t"
- rot5str=$(echo $b64str | base64 -d) && ok || fail
- # Perceba o "bbb." com cara de "www". Se rodarmos o 'b' para trás
- # 5 vezes, ficaria "www", então suspeita-se de um ROT5 (mas nas letras)
- echo -ne "Aplicando o ROT5 nas letras...\t\t"
- test -n "$rot5str" && ok || fail
- # o maldito tr resolve o ROT a voilà!
- echo -ne "\n$amar"
- echo $rot5str | tr a-zA-Z v-za-zA-ZE-ZZ
- echo -ne "$def"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement