inRar.py buscador de archivos rar en imágenes

Iniciado por Once, Noviembre 30, 2013, 10:43:27 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.


(No tienes permitido ver los links. Registrarse o Entrar a mi cuenta)

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.

Código: python

#!/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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muy buen code bro! Jaja ya se cuando y donde lo usaste!! ;)

Gracias por el triunfo :P

Saludos!
WhiZ