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.


(You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login)

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!







You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

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

Gracias por el triunfo :P

Saludos!
WhiZ