Created
March 6, 2015 06:00
-
-
Save merces/eb73556139a770443756 to your computer and use it in GitHub Desktop.
A stenography challenge solution
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 ([email protected]) | |
# 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" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment