Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
polypyus — Historiador de firmware solo binario que aprende a localizar funciones en binarios sin procesar extrayendo funciones conocidas de binarios similares, permitiendo una rápida coincidencia de funciones sin desensamblado para el análisis de firmware embebido. | Kitploit
Herramientas/GitHubGitHub/seemoo-lab/polypyus
Seguridad de Sistemas EmbebidosIngeniería InversaAnálisis de BinariosAnálisis de Firmware
GitHubseemoo-lab/polypyus

polypyus

Historiador de firmware solo binario que aprende a localizar funciones en binarios sin procesar extrayendo funciones conocidas de binarios similares, permitiendo una rápida coincidencia de funciones sin desensamblado para el análisis de firmware embebido.

Ver Repositorio
2322556hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PyTest

Polypyus

Polypyus Historiador de Firmware

Polypyus aprende a localizar funciones en binarios sin procesar extrayendo funciones conocidas de binarios similares. Por lo tanto, es un historiador de firmware. Polypyus trabaja sin desensamblar estos binarios, lo cual es una ventaja para binarios complejos de desensamblar y donde las herramientas comunes pasan por alto funciones. Además, el enfoque exclusivamente binario lo hace muy rápido y se ejecuta en unos pocos segundos. Sin embargo, este enfoque requiere que los binarios sean de la misma arquitectura y tengan opciones de compilador similares.

Polypyus se integra en el flujo de trabajo de herramientas existentes como Ghidra, IDA, BinDiff y Diaphora. Por ejemplo, puede importar funciones previamente anotadas y aprender de ellas, y también exportar funciones encontradas para importarlas en IDA. Dado que Polypyus utiliza umbrales bastante estrictos, en nuestros experimentos solo encontró coincidencias correctas. Si bien esto genera menos resultados que en las herramientas existentes, es un buen punto de partida para cargar estas coincidencias en IDA para mejorar sus resultados de autoanálisis y luego ejecutar BinDiff sobre ellos.

Lo que resuelve Polypyus

Al trabajar con binarios de firmware sin procesar, concretamente varias versiones de firmware Bluetooth de Broadcom y Cypress, encontramos que el autoanálisis de IDA a menudo identificaba incorrectamente los inicios de funciones. En IDA Pro 6.8 el autoanálisis es un poco más agresivo, lo que genera más resultados pero también más falsos positivos. En general, IDA Pro 7.2 era más pesimista, pero pasaba por alto muchas funciones. Esto provocó que solo hubiera unas pocas coincidencias de BinDiff entre nuestros firmwares en IDA Pro 6.8 y ninguna coincidencia útil en IDA Pro 7.2.

Curiosamente, BinDiff a menudo fallaba al identificar funciones que, excepto por las ramas, eran idénticas en bytes. Tenga en cuenta que Polypyus busca exactamente estas funciones idénticas en bytes. Suponemos que BinDiff falla en estas funciones debido a un gráfico de llamadas diferente producido por funciones faltantes y falsos positivos. A veces, IDA ya reconocía estas funciones, pero a menudo IDA no las reconocía como código o no las marcaba como función. Tenga en cuenta que Diaphora tiene problemas similares, ya que exporta funciones identificadas por IDA antes de procesarlas posteriormente. A continuación se muestra un punto de referencia sobre el binario de firmware Bluetooth CYW20735B1 que compara varios desensambladores y cómo las fallas del desensamblador generan problemas de diferenciación posteriores.

Comparativa entre IDA Pro, Ghidra, Binary Ninja, radare2, BinDiff y Diaphora

Además, aunque descubrimos que Amnesia encuentra muchas funciones, también encuentra muchos falsos positivos. Sin embargo, muchas funciones tienen una configuración de marco de pila similar al principio. Por lo tanto, Polypyus tiene una opción para aprender inicios de funciones comunes a partir de los binarios de entrada anotados y aplicar esto a otros binarios para identificar funciones sin emparejar su nombre. Este paso opcional solo se aplica a las regiones en las que no se localizaron funciones previamente; de esta manera, el método de inicios de funciones comunes y la búsqueda principal de funciones no entran en conflicto.

Dado que estos emparejadores trabajan sobre el binario sin procesar, no dependen de un desensamblador. Esto también tiene un inconveniente importante: si hubiera diferentes opciones de compilador o una arquitectura de destino diferente, Polypyus no detectará funciones similares. Además, si bien las coincidencias identificadas son muy confiables, la identificación del inicio de función es un poco menos confiable, así que use esta última con cuidado. A continuación, puede ver que los kits de evaluación de Cypress son muy similares entre sí, pero el firmware de MacBook es muy diferente.

Comparativa en cuatro firmwares diferentes

Cómo funciona

Polypyus crea emparejadores binarios difusos comparando funciones comunes en una colección de binarios de firmware anotados.

Actualmente, se admiten las siguientes anotaciones:

  • Un archivo patch.elf de WICED Studio, que es un archivo ELF especial que contiene solo definiciones de símbolos.
  • Un archivo .symdefs tal como lo producen la mayoría de los compiladores ARM.
  • Un archivo .csv con un formato documentado en la carpeta firmware.

Estas anotaciones contienen la dirección, el tamaño y el nombre de las funciones conocidas. Cuantas más similitudes tengan los binarios de entrada en la colección de historial, mejor será el rendimiento y los resultados de Polypyus. Dadas varias funciones ligeramente diferentes, Polypyus crea emparejadores muy buenos.

Cómo instalarlo

Polypyus requiere Python 3 >= 3.6. Recomendamos el uso de un virtualenv para la siguiente instalación. Clone este repositorio y en esta carpeta ejecute:

pip install .

Cómo ejecutarlo

Después de la instalación, están disponibles los siguientes comandos:

  • polypyus-gui
  • polypyus-cli

Usando Polypyus

Polypyus está disponible a través de una interfaz gráfica y una de línea de comandos. Tanto la GUI polypyus-gui como la CLI polypyus-cli toman estos argumentos durante la invocación:

  --verbose es el nivel de verbosidad. Por defecto, muestra advertencias -v muestra información -vv muestra información de depuración.
  --project establece la ubicación del archivo de proyecto. Es una ruta de archivo o ":memory:".
  --help    Muestra el mensaje de ayuda.

La opción de proyecto le facilita almacenar su trabajo para diferentes contextos en diferentes archivos y también volver a abrirlos.

Usando la GUI

El flujo de trabajo general de la GUI va del lado izquierdo de la ventana al derecho. Primero, se agregan binarios al historial. Luego, siguen las anotaciones de símbolos para las entradas en el historial. Después, se pueden agregar binarios de destino. Para el emparejamiento, presione Create matchers from history. Una vez creados los emparejadores, se pueden seleccionar destinos individuales o se pueden emparejar todos los destinos seleccionando batch match. Finalmente, los hallazgos se pueden exportar a un archivo .csv.

A continuación, puede ver un video de demostración donde Polypyus solo toma unos segundos para aprender de dos binarios de entrada, anotarlos, crear emparejadores y aplicar coincidencias a un nuevo binario.

Video GUI

Usando la CLI

La ventaja de usar la CLI es su capacidad para automatizarse. Por ahora, el formato de salida de la CLI está sujeto a cambios. Sin embargo, aquí hay un ejemplo de su invocación:

polypyus-cli --history firmware/history/20819-A1.bin --annotation firmware/history/20819-A1_patch.elf --history firmware/history/20735B1.bin --annotation firmware/history/20735B1_patch.elf --project test.sqlite
polypyus-cli --target firmware/history/20739B1.bin --project test.sqlite
Descargar herramienta