(http://i.imgur.com/9KZlwjf.png)
(http://i.imgur.com/9KZlwjf.png (http://i.imgur.com/9KZlwjf.png))
Hola, creo que todos conocemos el método esteganográfico EOF que consiste básicamente en agregar un archivo al final de otro; como por ejemplo incrustar un comprimido .rar dentro de una imagen sin corromper ésta. (En GNU/Linux es tan simple como un cat archivo1 archivo2 > archivo_final)
Hace un tiempo hice uso de este método y ahora me doy cuenta que tengo más de 700 imágenes y sería algo aburrido buscar la información a mano así que codee este pequeño script. Espero a alguien le sea de ayuda.
Su funcionamiento es simple, se abre el archivo en forma de lectura binaria, se convierten estos datos a hexadecimal y con una expresión regular busca las cabeceras del Rar. si las encuentra, copia esa información y la guarda en un archivo independiente.
#!/usr/bin/python2
# -*- coding: utf-8 -*-
# 11Sep para underc0de.org
import os
import re
import sys
import urllib
rar_ = re.compile(".*?(52617221.*C43D7B00400700).*?", re.DOTALL | re.IGNORECASE)
def abrir_archivo(ruta):
print "Comprobando archivo:", ruta
if ruta.lower().endswith(".rar"):
return
with open(ruta, "rb") as archivo:
data = archivo.read()
data = data.encode("hex")
comprobar_rar(data, ruta)
def abrir_url(url):
print "Abriendo url"
data = urllib.urlopen(url).read()
data = data.encode("hex")
archivo = os.path.basename(url)
comprobar_rar(data, archivo)
def comprobar_rar(data, nombre):
nombre += ".rar"
if rar_.match(data):
print "\t[+] Hay un rar dentro"
print "\t[+] Guardando en:", nombre
with open(nombre, "wb") as archivo:
archivo.write(rar_.findall(data)[0].decode("hex"))
def comprobar_ruta(ruta):
if os.path.isfile(ruta):
abrir_archivo(ruta)
elif os.path.isdir(ruta):
for archivo in os.listdir(ruta):
nuevo = os.path.join(ruta, archivo)
if os.path.isfile(nuevo):
abrir_archivo(nuevo)
elif ruta.startswith("http://"):
abrir_url(ruta)
if len(sys.argv) > 1:
comprobar_ruta(sys.argv[1])
else:
print "Uso: inRar.py <archivo | carpeta | url>"
Su uso es simple, se le puede pasar como parametro una url, un archivo o un directorio, la aplicación, dependiendo del parametro ejecuta la función adecuada.
Por ejemplo, podemos revisar la url de la imagen del comienzo del post
Saludos!