Advertisement
fernandop

steg-clavis.sh

Jan 27th, 2012
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.52 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # Solução do desafio da Clavis, publicado em
  4. # http://www.seginfo.com.br/challenge-3-blog-seginfo-esteganografia/
  5. #
  6. # Uso: ./steg-clavis.sh DesafioEsteg.jpg
  7. #
  8. # Fernando Mercês (fernando@mentebinaria.com.br)
  9. # just4fun! :)
  10.  
  11. verde='\e[0;32m'
  12. amar='\e[0;33m'
  13. verm='\e[0;31m'
  14. def='\e[0m'
  15.  
  16. ok() { echo -e "$verde[OK]$def"; }
  17. fail() { echo -e "$verm[FAIL]$def"; exit 1; }
  18.  
  19. md5ori="a5d78511149bcf68afddd82a1ed6db29"
  20. md5=$(md5sum $1 | cut -d" " -f1)
  21.  
  22. echo -ne "Checando MD5 da imagem...\t\t"
  23. test "$md5" = "$md5ori" && ok || fail
  24.  
  25. # Tem uma string com vários 0s e 1s dentro do arquivo
  26. echo -ne "Buscando string dentro da imagem...\t"
  27. binstr=$(strings $1 | grep 01010110) && ok || fail
  28.  
  29. # Tomando os caracteres em grupos de 8 e convertendo pra ASCII
  30. # sai outra string interessante...
  31. echo -ne "Convertendo os binários para ASCII...\t"
  32. for ((i=0; i < ${#binstr}; i+=8))
  33. do
  34.     valor=$(echo "obase=16;ibase=2;${binstr:$i:8}" | bc)
  35.     b64str=$b64str$(echo -ne "\x$valor")
  36. done
  37. test -n "$b64str" && ok || fail
  38.  
  39. # ...que está em base64. Se tirarmos, outra string interessante...
  40. echo -ne "Revertendo BASE64...\t\t\t"
  41. rot5str=$(echo $b64str | base64 -d) && ok || fail
  42.  
  43. # Perceba o "bbb." com cara de "www". Se rodarmos o 'b' para trás
  44. # 5 vezes, ficaria "www", então suspeita-se de um ROT5 (mas nas letras)
  45. echo -ne "Aplicando o ROT5 nas letras...\t\t"
  46. test -n "$rot5str" && ok || fail
  47.  
  48. # o maldito tr resolve o ROT a voilà!
  49. echo -ne "\n$amar"
  50. echo $rot5str | tr a-zA-Z v-za-zA-ZE-ZZ
  51. echo -ne "$def"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement