goebelmasse

jpeg-stegano

Nov 1st, 2014
481
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! 2014 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. # - outguess
  19. #
  20. # Für den folgenden Code bekomme ich keine Schönheitspreise, ich weiß.
  21. # Natürlich ist dieses Programm lizenziert unter Piratenlizenz:
  22. # http://www.tamagothi.de/impressum/lizenz
  23. #
  24. # $Id: jpeg-stegano,v 1.4 2014/11/01 03:31:37 elias Exp $
  25. #
  26. ########################################################################
  27. #
  28. # Konfiguration
  29. # -------------
  30. #
  31. # Für diesen Empfänger wird verschlüsselt
  32. # (Vielleicht später auf mehrere erweitern, einer wird zufällig ausgewählt)
  33. #
  34. pgpfor='sag@ich.net'
  35. #
  36. # Schlüssel für die Steganografie mit outguess
  37. #
  38. stegkey='Ganz Geheimes Geheimwort'
  39. #
  40. # Dieser Qualitätsverlust wird beim Verschlüsseln erzeugt
  41. #
  42. quality_loss=5
  43. #
  44. # So viele Versuche werden gemacht
  45. #
  46. maxtries=3
  47. #
  48. # Programm
  49. # --------
  50. #
  51. # Ab hier braucht (hoffentlich) nichts mehr angepasst zu werden.
  52. #
  53. PATH=/bin:/usr/bin:/usr/games
  54. progname=$(basename $0)
  55. for fname
  56. do
  57.     lname=$(basename $fname)
  58.     if [ $(file -bi "$fname" | sed 's/;.*$//') != 'image/jpeg' ]
  59.     then
  60.     echo "$fname: not a JPEG image" 1>&2
  61.     notify-send -i error "$progname" "'$lname' is not a JPEG image"
  62.     exit 1
  63.     fi
  64.     q=$(identify -verbose "$fname" | grep 'Quality' | sed 's/^.*:\s*//')
  65.     nq=$((q - quality_loss))
  66.     bname="$(dirname $fname)/old-$(basename $fname)"
  67.     nname=/tmp/jpeg-steg-$$.jpg
  68.     tname=/tmp/jpeg-steg-$$.txt
  69.     ok=0
  70.     tries=0
  71.     trap "rm -f '$bname' $nname $tname" 1 2 15
  72.     while [ $ok -eq 0 -a $tries -lt $maxtries ]
  73.     do
  74.     tries=$((tries + 1))
  75.     if ! fortune | gpg -ae -r "$pgpfor" >$tname
  76.     then
  77.         rm $tname
  78.         exit 1
  79.     fi
  80.     if outguess -k "$stegkey" -d $tname -p $nq "$fname" $nname
  81.     then
  82.         ok=1
  83.         mv -b "$fname" "$bname"
  84.         mv $nname "$fname"
  85.         rm $tname
  86.     fi
  87.     done
  88.     if [ $tries -ge $maxtries ]
  89.     then
  90.     rm -f $tname $nname
  91.     echo "$fname: random steganography failed" 1>&2
  92.     notify-send -i error $progname "Error in processing '$lname'"
  93.     fi
  94.     trap "" 1 2 15
  95. done
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×