Python R2


Un script python de esteganografía

Publicado en Python por Arturo Elias Antón en 28 octubre 2008
Tags: , , ,

Con este simple script fue con el que oculte la imagen en la entrada anterior. (simplemente le cambio la paridad al ultimo parametro del color RGB.) Este script es solo para tener una idea de lo que es la esteganografía y para mostrar una simple implementacion. Espero que les guste.

#!/usr/bin/env python
# Archivo: fusion.py
import Image
import sys

def fusionar(arch1,arch2):
	try:
		imagen =Image.open(arch1)
		msg    =Image.open(arch2)
		xsize,ysize = imagen.size
		xsizeMsg,ysizeMsg = msg.size

		if (xsizeMsg,ysizeMsg) != (xsize,ysize):
			return -1 # imagenes de distinta dimencion

		for y in range(ysize):
			for x in range(xsize):
				pixelImg = imagen.getpixel((x,y))
				pixelMsg = msg.getpixel((x,y))
				promRGB = (pixelMsg[0]+pixelMsg[0]+pixelMsg[0])/3
				if promRGB > 125 :
					if pixelImg[2]%2!=0:
					   pixelSet = (pixelImg[0],pixelImg[1],pixelImg[2]+1)
					   if (pixelImg[2] == 255) :
					       pixelSet = (pixelImg[0],pixelImg[1],pixelImg[2]-1)
	 				   imagen.putpixel((x,y),pixelSet)
				else:
					if pixelImg[2]%2==0:
					   pixelSet = (pixelImg[0],pixelImg[1],pixelImg[2]+1)
					   imagen.putpixel((x,y),pixelSet)
		imagen.save("fus.bmp")

		return 0
	except:
		return -1

def desFusionar(arch1):
	try:
		imagen =Image.open(arch1)
		xsize,ysize = imagen.size
		for x in range(xsize):
			for y in range(ysize):
				pixelImg = imagen.getpixel((x,y))
				if pixelImg[2] % 2 ==0:
					imagen.putpixel((x,y),(255,255,255))
				else:
					imagen.putpixel((x,y),(0,0,0))
		imagen.save("des.bmp")
		return 0
	except:
		return -1

def imprimirModoDeEjecucion():
	print "BinSD v1.0"
	print "Mode de ejecucion:"
	print "	fusion.py -D arch1"
	print "	fusion.py -C arch1 arch2"

if len(sys.argv) == 3 and sys.argv[1]== "-D":
	print "Procesando...",
	if desFusionar(sys.argv[2])==0:
		print "ok"
	else:
		print "err"
elif len(sys.argv) == 4 and sys.argv[1]== "-C":
	print "Procesando...",
	if fusionar(sys.argv[2],sys.argv[3]) == 0:
		print "ok"
	else:
		print "err"
else:
	imprimirModoDeEjecucion()

En esta entrada quiero felicitar a Arnau y a Alejandro J. Cura. que lograron sacar el desafio.

el script con el que logro sacar el codigo Arnau es …

import PIL.Image
img = PIL.Image.open(”fus.bmp”)
img.point([0]*256+[0]*256+[( (x&1) << 8 ) for x in range(256)]).show()

el script con el que lo saco Alejandro es …

from itertools import izip, chain, repeat
from PIL import Image

def grouper(n, iterable, padvalue=None):
    return izip(*[chain(iterable, repeat(padvalue, n-1))]*n)

i=Image.open("fus.bmp")
r,g,b=i.split()
i=b
s=i.tostring()

d = ["%d"%(ord(c)&amp;1) for c in s]

o = []
for g in grouper(8, d):
    b = "".join(g)
    o.append(chr(int(b,2)))

b="".join(o)
d=Image.fromstring("1",(800,480),b)
d.show()

;)

Un pequeño desafio.

Publicado en Python por Arturo Elias Antón en 27 octubre 2008
Tags: , , , , , , ,

Hola este desafío es muy simple.
Mediante un script muy simple que escribí en Python de esteganografía, oculté una imagen con un código numérico en la siguiente imagen.

Link: http://www.binsd.com.ar/fusion/fus.bmp

¿Quien lo podrá descifrar?

El que lo logre sacar simplemente poste el código que visualiza en la imagen  en los comentarios de esta entrada.

Publicare el script cuando alguien saque el código!!!!!! ;)

Como siempre saludos y espero que les guste.


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.