[aporte] MIME identificar archivos por su contenido

Iniciado por Yoghurt, 22 Septiembre 2011, 07:37 AM

0 Miembros y 2 Visitantes están viendo este tema.

Yoghurt

Mas de alguno a querido saber el tipo de algun archivo como lo hacen los sistemas basados en UNIX basandose puramente en su contenido, pues he creado un modulo ocupando esa información para que nada se les escape, se llama MIME.

Descripción:
Módulo que intenta detectar el tipo de los archivos basandose en su contenido. Mediante los conocidos Magics. Contiene al menos 317 entradas que identifican archivos, incluyendo texto, musica, imagen, videos y otros.

Ej de que son los magics:
cangrejo_canguroo.pdf --> MAGIC = "%PDF-" --> MIME = "application/pdf" --> EXTENSION = "pdf"

Usos:
Tiene un montón de usos, desde saber si el archivo solicitado es realmente del tipo de archivo requerido, listar todos los archivos de un tipo por ejemplo MSWord, reconocer ejecutables camuflados, organizacion de archivos... etc.

>> Descargar <<
Desde Google Drive (Archivo->Descargar)

Estaré actualizando el codigo recurrentemente por lo que se aceptan sugerencias y mejoras, claro pueden ir diciendome sus propios magics para añadirlos a la lista o hacer peticiones sobre archivos.

Elemental Code

osea que yo le largo adentro un archivo sin extensión y me dice de que tipo es?
Si no no entendi :S

PD: habia leido en la esc, que todos los archivos en los primeros 3 caracteres decian que tipo de archivo eran o algo asi  :silbar:

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

raul338

Cita de: Elemental Code en 23 Septiembre 2011, 03:09 AM
osea que yo le largo adentro un archivo sin extensión y me dice de que tipo es?
Si no no entendi :S
Exactamente, y si renombras un archivo mp3 a JPG, que te detecte que es un MP3 :P

raul338


79137913

HOLA!!!

En su momento no quise comentar este tema por que es viejo pero ya que lo bumpearon...

Tiene estos detalles:
Reconoce a los docx xlsx y demas formatos nuevos de office como un zip (realmente lo son) pero son documentos de office mas que un comprimido.
No reconoce .txt o .text.

Pero tengo que reconocer que es util.

P.D:
Estaria bueno que detecte si el archivo fue "unido" a otro usando algo similar a copy /b por ejemplo cuando pones un jpg y un rar en el mismo archivo y le cambias la extension y funcionan ambos.

GRACIAS POR LEER!!!
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

79137913                          *Shadow Scouts Team*

Yoghurt

Actualizado MIME version 1.1, julio 18, 2012

* Añadida la propiedad 'ext' en la declaracion de TYPE_MIME la cual
   contendra informacion sobre la extension del archivo en cuestion.
* Adicion de informacion sobre extension.
* Añadido el reconocimiento de archivos de texto plano entre otros.
* Añadida la opcion de buffer para no tener que leer el archivo cada vez.
* Modificacion para interpretar numeros negativos en 'offset_start' y
   'offset_end' interpretandose desde el final del archivo hacia el principio.
* Añadida la funcion findMime que busca el Magic directamente desde un string.
* Modificaciones y optimizaciones al codigo en general.
* Eliminados los tipos de pattern ahora se usa uno solo (escaped strings)


He modificado el codigo de forma que sea más eficiente. Ademas he añadido el reconocimiento para los nuevos formatos de la suite de office (testeado con OpenOffice.org), los archivos de texto "plano" (.txt) tambien serán reconocidos. Por otra parte los archivos unidos mediante "copy /b file1.jpg + file2.rar" no seran reconocidos porque el file2.rar esta dentro del file1.jpg justamente desde donde el file1.jpg termina, por lo que el "magic" no cambia. Ahora, podria hacer un "parche" como lo hice para los ".txt" textos planos aunque no se si ayudaria el reconocer ese tipo de archivos...ademas de la insertidumbre de ponerle un nombre "mime" y una "extension".

El link de descarga será el mismo.

BlackZeroX

#6
Es una gran lista la que tienes, aqui te dejo la pagina de los MIME TYPE.
http://www.iana.org/assignments/media-types/index.html

Dulces Lunas!¡.
The Dark Shadow is my passion.

karmany

Buena aportación.

Dos cosas:

  • Sería interesante que añadieras el compilado o un demo para que podamos ser beta-testers

  • No sé si la tienes implementada, o tal vez lleve demasiado tiempo hacerlo, pero una buena opción podría ser la extracción de tipos de archivo. Muchos ficheros contienen otros embebidos.

Gracias por compartir.

Yoghurt

Cita de: karmany en 21 Julio 2012, 09:32 AM

  • Sería interesante que añadieras el compilado o un demo para que podamos ser beta-testers
Este codigo es para ser integrado en Visual Basic aunq podria hacer una beta para que sea probado, asi no tendríamos que desconfiar y servira para encontar errores pues no puedo probarlo con tantos archivos, asi que lo haré ;)

Cita de: karmany en 21 Julio 2012, 09:32 AM

  • No sé si la tienes implementada, o tal vez lleve demasiado tiempo hacerlo, pero una buena opción podría ser la extracción de tipos de archivo. Muchos ficheros contienen otros embebidos.
Mmm... Si, me he encontrado con estos casos como los archivos de recursos de algun juego (o el .rar dentro de un .jpg). Tengo una "utilidad" para extraer de forma "rustica" por decirlo asi archivos que estan incrustados dentro de otro archivo con ayuda de este metodo. Lo hice para detectar y extraer PNG, GIF, JPG, BMP, AVI, WAV, MIDI, SWF, OGG, AU y MP3 con tag ID3. Le he puesto xtract y lo encuentras en: http://sdrv.ms/LG1BWQ

Yoghurt

#9
Y listo... He subido un compilado sencillo para testear los archivos, he puesto 3 botones los cuales ayudarán a recolectar información valiosa sobre errores de acuerdo a si:

* No ha reconocido un archivo que es conocido por el programa o por la persona.
* Ha dado mala informacion sobre el tipo de archivo.
* Y si decean que se reconozca o incluya en el codigo algun archivo que deceen.


La información recopilada consta de los primeros 64 bits del archivo en cuestion (escrita en texto hexadecimal) para una revision acerca del problema/detalle o examen para detectar el archivo. La información no es enviada automaticamente solo es escrita en el archivo "info_plase_send_mail.info" junto a la aplicacion por lo que deberá adjuntar el archivo via e-mail. Para quienes decean contribuir favor de usar estos emails, dreaderfunkonak@gmail.com / abrahamaraon@hotmail.com de antemano gracias.


>> El enlaze de descarga es el mismo.