Skip to content

Instantly share code, notes, and snippets.

@ErikRamses
Last active December 19, 2015 12:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ErikRamses/5956305 to your computer and use it in GitHub Desktop.
Save ErikRamses/5956305 to your computer and use it in GitHub Desktop.
Esteganografía en la Seguridad de la Información
#Esteganofragia en python
from PIL import Image
from sys import argv
import random
def transformar(original): #Funcion que transforma valores ascii a su valor original
mensaje = list()
for i in original:
mensaje.append(chr((i[0])))
#mensaje.reverse()
sms = "".join(str(x) for x in mensaje)
return sms
def obtenermen(nombreimagen): #Funcion que obtiene el mensaje
original = list()
imag=nombreimagen
imag2="nuevaimg.png"
data=Image.open(imag).convert("RGB")
data2=Image.open(imag2).convert("RGB")
(w, h) = data.size
pix=data.load()
nuevo=data2.load()
for x in xrange(w):
for y in xrange(h):
if not nuevo[x, y]==pix[x, y]:
original.append(nuevo[x, y])
message = transformar(original)
return message
def rangox(weight, men): #Funcion que fija los rangos en x
rangosx=list()
tope=(len(men))+1
for x in range(tope):
rangosx.append((weight/len(men))*x)
return rangosx
def rangoy(height, men): #Funcion que fija los rangos en y
rangosy=list()
tope= (len(men))+1
for y in range(tope):
rangosy.append((height/len(men))*y)
return rangosy
def imagen(men, z, nombreimagen): #Funcion que en base a una imagen crea una nueva con el mensaje oculto
imag = nombreimagen
data = Image.open(imag).convert("RGB")
(w,h) = data.size
res = Image.new("RGB", (w,h))
nuevo = res.load()
pix = data.load()
for x in xrange(w):
for y in xrange(h):
r, g, b = pix[x, y]
if x % 2 == 0:
nuevo[x, y] =r, g, b
rangosx=list()
rangosy=list()
rangosx=rangox(w, men)
rangosy=rangoy(h, men)
for i in range(len(men)):
x = random.randint(rangosx[i],rangosx[i+1])
y = random.randint(rangosy[i],rangosy[i+1])
nuevo[x,y] = int(z[i],2), int(z[i],2), int(z[i],2)
#print nuevo[x, y]
res.save("nuevaimg.png")
res.show("nuevaimg.png")
return
def main(): #Funcion principal donde se ingresan todos los datos
nombreimagen= argv[1]
opcion=0
while not opcion == 3:
opcion = int(raw_input("1. Enviar 2. Recibir 3. Salir "))
if opcion == 1:
mensaje = raw_input("Mensaje: ")
mensaje.lower()
men = list(mensaje)
bina = list()
for i in range(len(men)):
bina.append(bin(ord(men[i])))
imagen (mensaje,bina, nombreimagen)
if opcion == 2:
resultado = obtenermen(nombreimagen)
print resultado
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment