Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #autor: @kr1shn4murt1
- #fecha: Nov 20 - 2012
- #!/usr/bin/env python
- #-*-coding:utf-8-*-
- import binascii #Para manipular el contenido binario y hexadecimal del archivo
- import time #Para controlar cuanto demora la ejecucion del script
- horaInicio= time.time()
- print '\n \t Hora de inicio del script: ',time.ctime(horaInicio)
- imagen = 'Test_Image.jpg' """Imagen de prueba que se descompondra en bytes para luego ser reensamblada
- por partes"""
- with open(imagen, 'rb') as f:
- lecturaImagen = f.read() """Lectura imagen es la correcta representacion del contenido hexadecimal
- al imprimir solo imprime algunos caracteres, no todos"""
- lecturaHex = (binascii.hexlify(lecturaImagen)) """lecturaHex es la representacion humanamente visible
- del codigo hexadecimal al copiarlo de manera exacta a
- un archivo ejm una imagen no queda bien la imagen, hay
- que hacerle una transformacion antes"""
- hexSecundario=binascii.a2b_hex(lecturaHex) """Asi se transforma para generar el archivo con el codigo
- hexadecimal"""
- print "\n \t Hex reconstruido: ",hexSecundario,"\n"
- print "\t Tamano del codigo hex a hacerle carving: ",len(lecturaHex),"\n"
- print "\t Tuplas del codigo hex + el footer \n"
- footerArchivo="ffd9" #en el caso de ffd9 es una imagen jpg
- j=1
- numeroBytes=32 """Numero de unidades de bytes en los que se quiere descomponer el archivo, un numero
- mas pequenho requerira mas tiempo de procesamiento, si es una imagen muy pequenha de
- aprox 4,2 KB usar 1, si la imagen es grande, 1 MB o más usar un numero grande cómo un
- millon por que dependiendo del numero que usen se creará de manera proporcional el
- mismo numero de imagenes en la carpeta desde donde lo ejecuten"""
- numeroBytes=numeroBytes*2
- data = lecturaHex
- for i,item in enumerate(data[::numeroBytes]): """Este bloque divide el codigo hexadecimal en el número
- de bytes escogido para luego insertar despues de cada
- uno de ellos el footer del tipo de archivo deseado para
- intentar la recuperacion o carving del archivo mediante
- fuerza bruta"""
- tupla=str(data[:(i*numeroBytes)+numeroBytes:])
- tupla+=footerArchivo
- print "Tupla numero: ",j
- print 'Valores: ',tupla,'\n'
- j+=1
- nombreImagenGenerada="imagen"+str(j)+".jpg"
- imagenes=open(nombreImagenGenerada,'wb')
- imagenes.write(binascii.a2b_hex(tupla))
- imagenes.close()
- print '\n \t Numero total de tuplas',j
- horaFin= time.time()
- print '\n\t Hora de inicio del script: ',time.ctime(horaInicio)
- print '\t Hora de finalizacion del script: ',time.ctime(horaFin)
- tiempoEjecucion= horaFin-horaInicio
- print '\n \t La ejecucion tomo %s segundos\n\n'%str(tiempoEjecucion)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement