Added binary slsb-set. Updated setup.py.

This commit is contained in:
cedricbonhomme 2011-12-29 09:31:34 +01:00
parent 8c51a96cf9
commit a0aec974c5
4 changed files with 103 additions and 62 deletions

93
bin/slsb-set Executable file
View file

@ -0,0 +1,93 @@
#!/usr/bin/env python
#-*- coding: utf-8 -*-
# Stéganô - Stéganô is a basic Python Steganography module.
# Copyright (C) 2010-2011 Cédric Bonhomme - http://cedricbonhomme.org/
#
# For more information : http://bitbucket.org/cedricbonhomme/stegano/
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>
__author__ = "Cedric Bonhomme"
__version__ = "$Revision: 0.1 $"
__date__ = "$Date: 2011/04/06 $"
__license__ = "GPLv3"
try:
from stegano import slsbset
except:
print "Install stegano: python setup.py install"
from optparse import OptionParser
parser = OptionParser(version=__version__)
parser.add_option('--hide', action='store_true', default=False,
help="Hides a message in an image.")
parser.add_option('--reveal', action='store_true', default=False,
help="Reveals the message hided in an image.")
# Original image
parser.add_option("-i", "--input", dest="input_image_file",
help="Input image file.")
# Generator
parser.add_option("-g", "--generator", dest="generator_function",
help="Generator")
# Image containing the secret
parser.add_option("-o", "--output", dest="output_image_file",
help="Output image containing the secret.")
# Non binary secret message to hide
parser.add_option("-m", "--secret-message", dest="secret_message",
help="Your secret message to hide (non binary).")
# Binary secret to hide (OGG, executable, etc.)
parser.add_option("-f", "--secret-file", dest="secret_file",
help="Your secret to hide (Text or any binary file).")
# Output for the binary binary secret.
parser.add_option("-b", "--binary", dest="secret_binary",
help="Output for the binary secret (Text or any binary file).")
parser.set_defaults(input_image_file = './pictures/Lenna.png',
generator_function = 'fermat',
output_image_file = './pictures/Lenna_enc.png',
secret_message = '', secret_file = '', secret_binary = "")
(options, args) = parser.parse_args()
if options.hide:
if options.secret_message != "" and options.secret_file == "":
secret = options.secret_message
elif options.secret_message == "" and options.secret_file != "":
secret = tools.binary2base64(options.secret_file)
img_encoded = hide(options.input_image_file, secret, options.generator_function)
try:
img_encoded.save(options.output_image_file)
except Exception, e:
# If hide() returns an error (Too long message).
print e
elif options.reveal:
try:
secret = reveal(options.input_image_file, options.generator_function)
except IndexError:
print "Impossible to detect message."
exit(0)
if options.secret_binary != "":
data = tools.base642binary(secret)
with open(options.secret_binary, "w") as f:
f.write(data)
else:
print secret

View file

@ -526,64 +526,4 @@ euismod imperdiet blandit id purus. Sed sed nisl nibh. Aliquam eu neque et
sapien malesuada accumsan id a erat. Integer faucibus nibh nisl. Etiam magna
massa, semper at imperdiet non, pellentesque sed turpis. Mauris feugiat, mi id
cursus blandit, quam neque lacinia nulla, feugiat ultricies lorem tortor sed
sapien. Praesent ultrices consectetur porta.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
himenaeos. Aliquam erat volutpat. Ut dui ante, euismod a vehicula id, hendrerit
a justo. Aenean dictum nisi et diam condimentum in malesuada nunc gravida. In
interdum ipsum odio. Ut aliquam arcu varius dolor ornare molestie. Donec vel
commodo quam. Etiam lobortis consectetur ligula eget pulvinar. Integer semper
pharetra est, eget lobortis nisi tristique mollis. Vivamus fermentum risus vitae
ligula pretium tempor. Vestibulum laoreet magna ut lectus imperdiet molestie.
Cras quam dolor, sodales nec iaculis vitae, pellentesque a nunc. Maecenas
laoreet, eros quis euismod venenatis, sem orci imperdiet diam, nec auctor massa
lorem at tortor. Nullam consequat justo in tortor elementum luctus. Aliquam erat
volutpat. Fusce mollis libero eu tellus aliquet interdum. Vestibulum in odio
lacus. Vestibulum mauris elit, dignissim eget mollis non, sagittis vitae ante.
In nec diam lectus, et scelerisque orci. Nullam tincidunt dictum enim.
Suspendisse fermentum nunc vel enim elementum nec tincidunt quam rhoncus. Duis
non est a mi tristique mollis luctus a ante. Mauris eu quam eu purus ornare
iaculis in at lorem. Nullam ut dignissim enim. Proin vestibulum felis sed nulla
euismod vitae hendrerit ligula tincidunt. Fusce vehicula, diam dapibus
scelerisque elementum, purus dolor consequat elit, vitae consectetur ante nisi
sit amet sapien. Sed non velit magna, rutrum lacinia orci. Nullam laoreet est
nec justo egestas rutrum.
Nunc vel sapien nec ligula mattis suscipit. Morbi augue leo, elementum eu ornare
id, rhoncus nec libero. Sed risus ante, feugiat nec interdum et, euismod et est.
Pellentesque a eros elit. Etiam sagittis luctus lacus. Proin porttitor accumsan
erat, vitae convallis orci tempor eu. Praesent nec sodales urna. Phasellus
lacinia, justo sed vestibulum venenatis, eros sem porttitor odio, vitae
consectetur lectus ante ac diam. Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Vestibulum egestas, nibh ut commodo pretium, ante nisi bibendum
nibh, eget consectetur nisl felis non est. Nam dolor purus, dapibus in facilisis
a, ultrices eget leo. Phasellus luctus, felis ornare tempor iaculis, orci velit
mattis tellus, in suscipit augue massa id diam. Nunc a tincidunt quam. Nullam ac
libero vel quam luctus scelerisque. Phasellus magna arcu, pretium id sodales
sed, porttitor at ligula. Phasellus quis augue diam, vitae cursus nulla.
Sed interdum erat ut ligula tempor sollicitudin sed eget tortor. Mauris
vehicula, arcu sed aliquam tristique, ligula tortor aliquet dolor, quis ornare
lectus enim nec risus. Integer a ipsum mauris. Cras non tellus ac mauris aliquam
euismod. In vestibulum, eros non dictum bibendum, nibh arcu mollis massa, nec
fringilla dolor ante vitae est. Class aptent taciti sociosqu ad litora torquent
per conubia nostra, per inceptos himenaeos. Curabitur semper venenatis risus, eu
commodo nunc posuere in. Curabitur ultricies, sem et vehicula posuere, leo
ligula cursus nunc, ac malesuada ipsum risus ultrices felis. Aenean a felis
felis, quis luctus ligula. Morbi sit amet nulla mi. Aenean nec consectetur
ipsum. Curabitur ac ligula nec turpis aliquam bibendum. Integer vulputate mauris
sit amet elit auctor et mattis lorem lobortis. Nullam gravida imperdiet lacus,
tincidunt vehicula nibh hendrerit eget. Sed lacinia, nibh convallis adipiscing
consequat, leo ipsum consectetur felis, non euismod nisi odio id justo. Mauris
posuere iaculis nunc, vitae bibendum massa mollis id.
Sed enim felis, eleifend et volutpat vitae, congue nec lectus. Pellentesque
lectus risus, egestas vitae eleifend vel, aliquam quis odio. Nullam eget nunc a
mauris aliquet luctus eget a augue. In hendrerit elit feugiat sapien vestibulum
eu lobortis metus luctus. Mauris eget elit enim. Sed ut nulla eu nisi vehicula
dapibus. Donec et justo leo. Vestibulum ac mi sem. Vestibulum vel sem id ipsum
lobortis varius. Sed blandit ornare aliquam. In hac habitasse platea dictumst.
Curabitur tempor velit vitae erat dignissim at ullamcorper elit accumsan.
Vestibulum in risus vel magna blandit interdum eu et lectus. Suspendisse varius
neque sed ligula rutrum commodo. Etiam sed placerat lectus.
sapien. Praesent ultrices consectetur porta.

View file

@ -3,10 +3,11 @@
from distutils.core import setup
import os
import shutil
setup(
name='Stegano',
version='0.3',
version='0.4',
author='Cédric Bonhomme',
author_email='kimble.mandel@gmail.com',
packages=['stegano'],
@ -16,3 +17,10 @@ setup(
license='COPYING',
description='A Python Steganography module.',
)
print "Installing binaries"
shutil.copy2("./bin/slsb-set", "/bin/slsb-set")
shutil.copymode("./bin/slsb-set", "/bin/slsb-set")
shutil.copy2("./bin/slsb", "/bin/slsb")
shutil.copymode("./bin/slsb", "/bin/slsb")