SHARE
TWEET

NSA mit Steganografie in Bildern trollen...

goebelmasse Jul 11th, 2015 691 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2. # -*- coding: utf-8 -*-
  3. ########################################################################
  4. #
  5. # jpeg-stegano
  6. # Copy? Right! 2015 Elias Schwerdtfeger, http://www.tamagothi.de/
  7. #
  8. # Zufällige, stark verschlüsselte fortune-Sprüche steganographisch
  9. # in JPEG-Bildern unterbringen, um die Datensammler bei der NSA ein
  10. # bisschen zu trollen.
  11. #
  12. # Erforderliche Laufzeitumgebung:
  13. # - bash
  14. # - Standard GNU tools
  15. # - ImageMagick
  16. # - fortune
  17. # - gpg
  18. # - steghide
  19. #
  20. # Es ist erforderlich, die Konfiguration im Quelltext anzupassen.
  21. #
  22. # Für den folgenden Code bekomme ich keine Schönheitspreise, ich weiß.
  23. # Natürlich ist dieses Programm lizenziert unter Piratenlizenz:
  24. # http://www.tamagothi.de/impressum/lizenz
  25. #
  26. # $Id: jpeg-stegano,v 1.8 2015/07/11 19:38:12 elias Exp $
  27. #
  28. ########################################################################
  29. #
  30. # Konfiguration
  31. # -------------
  32. #
  33. # Für diesen Empfänger wird verschlüsselt
  34. #
  35. pgpfor='sag@ich.net'
  36. #
  37. # Schlüssel für die Steganografie mit steghide
  38. # Ersetzt die X durch etwas eigenes und denkt noch etwas aus!
  39. #
  40. stegkey=$(date +xxxx-666-%Y-%m-%d-xxxx-%d-%j | md5sum - | sed 's/ .*$//')
  41. #
  42. # Dieser Qualitätsverlust wird beim Verschlüsseln erzeugt
  43. #
  44. quality_loss=4
  45. #
  46. # So viele Versuche werden gemacht
  47. #
  48. maxtries=5
  49. #
  50. # In diesem Verzeichnis werden die alten Bildversionen gespeichert.
  51. #
  52. archive_dir='steg-old'
  53. #
  54. # Programm
  55. # --------
  56. #
  57. # Ab hier braucht (hoffentlich) nichts mehr angepasst zu werden.
  58. #
  59. PATH=/bin:/usr/bin:/usr/games
  60. progname=$(basename $0)
  61. for fname
  62. do
  63.     workdir=$(dirname $fname)
  64.     olddir=$workdir/$archive_dir
  65.     if [ ! -d "$olddir" ]
  66.     then
  67.         if ! mkdir "$olddir"
  68.         then
  69.             echo "Failed to create archive directory." 1>&2
  70.             notify-send -i error "$progname" "Can not create $olddir"
  71.             exit 1
  72.         fi
  73.     fi
  74.     lname=$(basename $fname)
  75.     if [ $(file -bi "$fname" | sed 's/;.*$//') != 'image/jpeg' ]
  76.     then
  77.         echo "$fname: not a JPEG image" 1>&2
  78.         notify-send -i error "$progname" "'$lname' is not a JPEG image"
  79.         exit 1
  80.     fi
  81.     q=$(identify -verbose "$fname" | grep 'Quality' | sed 's/^.*:\s*//')
  82.     nq=$((q - quality_loss))
  83.     bname="$olddir/$(basename $fname)"
  84.     nname=/tmp/jpeg-steg-$$.jpg
  85.     tname=/tmp/jpeg-steg-$$.txt
  86.     ok=0
  87.     tries=0
  88.     trap "rm -f '$bname' $nname $tname" 1 2 15
  89.     while [ $ok -eq 0 -a $tries -lt $maxtries ]
  90.     do
  91.         tries=$((tries + 1))
  92.         if ! fortune | gpg -ae -r "$pgpfor" >$tname
  93.         then
  94.             rm $tname
  95.             exit 1
  96.         fi
  97.         if steghide embed -cf "$fname" -p "$stegkey" -ef $tname -sf $nname
  98.         then
  99.             ok=1
  100.             mv -b "$fname" "$bname"
  101.             mv $nname "$fname"
  102.             rm $tname
  103.         else
  104.             nq=$((nq - quality_loss))
  105.         fi
  106.     done
  107.     if [ $tries -ge $maxtries ]
  108.     then
  109.         rm -f $tname $nname
  110.         echo "$fname: random steganography failed" 1>&2
  111.         notify-send -i error $progname "Error in processing '$lname'"
  112.     fi
  113.     trap "" 1 2 15
  114. done
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top