¿Qué herramientas están disponibles para ayudar a decodificar formatos de datos binarios desconocidos?
Conozco Hex Workshop y 010 Editor, ambas estructuras de soporte. Estos están bien hasta cierto punto para un formato fijo conocido, pero se vuelven difíciles de usar con algo más complicado, especialmente para formatos desconocidos. Supongo que estoy buscando un módulo para un lenguaje de secuencias de comandos o una herramienta GUI para secuencias de comandos.
Por ejemplo, me gustaría poder encontrar una estructura dentro de un bloque de datos a partir de información limitada conocida, quizás un número mágico. Una vez que haya encontrado una estructura, siga las palabras de longitud y desplazamiento conocidas para encontrar otras estructuras. Luego repita esto de forma recursiva e iterativa cuando tenga sentido.
En mis sueños, ¡quizás incluso identifique automáticamente posibles compensaciones y longitudes en función de lo que ya le he dicho al sistema!
Respuestas:
Aquí hay algunos consejos que me vienen a la mente:
Desde mi experiencia, los lenguajes de secuencias de comandos interactivos (yo uso Python) pueden ser de gran ayuda. Puede escribir un marco simple para lidiar con flujos binarios y algunos algoritmos simples. Luego, puede escribir scripts que tomarán su binario y verificarán varias cosas. Por ejemplo:
Haz un análisis estadístico de varias partes. Los datos aleatorios, por ejemplo, le dirán que esta parte probablemente esté comprimida / cifrada. Los ceros pueden significar un relleno entre partes. Los ceros dispersos pueden significar valores enteros o cadenas Unicode, etc. Intente detectar varias compensaciones. Intente convertir partes del binario en enteros de 2 o 4 bytes o en flotantes, imprímalos y vea si tienen sentido. Escriba algunas funciones que buscarán partes repetidas o muy similares en los datos, de esta manera puede detectar fácilmente los encabezados.
Trate de encontrar tantas cadenas como sea posible, pruebe diferentes codificaciones (cadenas c, cadenas pascal, utf8 / 16, etc.). Hay algunas buenas herramientas para eso (creo que Hex Workshop tiene una herramienta así). Las cadenas pueden decirte mucho.
¡Buena suerte!
fuente
Para Mac OS X, hay una nueva gran herramienta que es incluso mejor que mi iBored: Synaliyze It! ( http://www.synalysis.net/ )
En comparación con iBored , es más adecuado para archivos no bloqueados, al mismo tiempo que brinda un control total sobre las estructuras, incluida la capacidad de secuencia de comandos (con Lua). Y también visualiza mejor las estructuras.
fuente
Tupni ; que yo sepa, no está disponible directamente en Microsoft Research, pero hay un documento sobre esta herramienta que puede ser de interés para alguien que desee escribir un programa similar (tal vez de código abierto):
Tupni: Ingeniería inversa automática de formatos de entrada ( biblioteca digital @ ACM )
fuente
Mi propia herramienta "iBored", que lancé recientemente, puede hacer parte de esto. Escribí la herramienta para visualizar y depurar formatos del sistema de archivos (UDF, HFS, ISO9660, FAT, etc.), e implementé la búsqueda, copia e incluso soporte de estructura y plantillas. El soporte de estructura es bastante sencillo y las plantillas son una forma de identificar estructuras de forma dinámica.
Todo es programable en un dialecto Visual BASIC, lo que le permite probar valores, leer bloques específicos y todo.
La herramienta es gratuita, funciona en todas las plataformas (Win, Mac, Linux), pero como es una herramienta personal que acabo de lanzar al público para compartirla, no está muy documentada.
Sin embargo, si desea probarlo y desea dar su opinión, podría agregar más funciones útiles.
Incluso lo abriría en código abierto, pero como está escrito en REALbasic , dudo que mucha gente se una a un proyecto así.
Enlace: página de inicio de iBored
fuente
Todavía uso ocasionalmente un antiguo editor hexadecimal llamado AX, Advanced Hex Editor. Parece haber desaparecido en gran medida de Internet ahora, aunque Google aún debería poder encontrarlo por usted. La última versión que conozco fue la 3.4, pero en realidad solo he usado la versión 2.1 gratuita para uso personal.
Su característica más interesante, y la que más he usado para descifrar varios formatos de juegos y gráficos, es su modo de vista gráfica. Eso básicamente le muestra el archivo con cada byte convertido en un píxel codificado por colores. Y por simple que parezca, a veces ha hecho que mis intentos de ingeniería inversa sean mucho más fáciles.
Sin embargo, supongo que hacerlo a simple vista es todo lo contrario a hacer un análisis automático, y el modo gráfico no será de mucha utilidad para encontrar y seguir compensaciones ...
La versión posterior tiene algunas características que parecen adaptarse a sus necesidades (scripts, buscador de regularidad, generador de gramática), pero no tengo idea de lo buenas que son.
fuente
Hay Hachoir, que es una biblioteca de Python para analizar cualquier formato binario en campos y luego examinar los campos. Tiene muchos analizadores para formatos comunes, pero también puede escribir analizadores propios para sus archivos (por ejemplo, cuando trabajo con código que lee o escribe archivos binarios, generalmente escribo primero un analizador Hachoir para tener una ayuda de depuración). Sin embargo, parece que el proyecto está bastante inactivo ahora.
fuente
Mi proyecto icebuddha.com admite esto usando Python para describir el formato en el navegador.
fuente
Un corte y pasta de mi respuesta a una pregunta similar:
Una herramienta es WinOLS , que está diseñada para interpretar y editar imágenes binarias de la computadora de administración del motor del vehículo (principalmente los datos numéricos en sus tablas de búsqueda). Tiene soporte para varios formatos endian (aunque no PDP, creo) y visualiza datos en varios anchos y compensaciones, define áreas de matriz (mapas) y visualiza en 2D o 3D con todo tipo de opciones de escala y compensación. También tiene un buscador de mapas automático heurístico / estadístico, que podría funcionar para usted.
Es una herramienta comercial, pero la demostración gratuita le permitirá hacer todo menos guardar los cambios en el binario y utilizar las funciones de gestión del motor que no necesita.
fuente