Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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
openocd — Espejo oficial de solo lectura de OpenOCD (sin pull requests) | Kitploit
Herramientas/GitHubGitHub/openocd-org/openocd
Seguridad de Sistemas EmbebidosIngeniería InversaDepuradoresHacking de HardwareSeguridad de HardwareSeguridad de Hardware e IoTAnálisis de Firmware
GitHubopenocd-org/openocd

openocd

Espejo oficial de solo lectura de OpenOCD (sin pull requests)

Ver Repositorio
2.3k1.0khace 3 díasRevisado 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
Sitio web

Bienvenido a OpenOCD

OpenOCD proporciona soporte de programación y depuración en chip con una arquitectura en capas de interfaz JTAG y soporte TAP que incluye:

  • Reproducción (X)SVF para facilitar el escaneo de límites automatizado y la programación de FPGA/CPLD;
  • soporte de objetivos de depuración (p.ej. ARM, MIPS): ejecución paso a paso, puntos de interrupción/vigilancia, perfilado gprof, etc;
  • controladores de chips flash (p.ej. CFI, NAND, flash interna);
  • intérprete Tcl integrado para facilitar la creación de scripts.

Varias interfaces de red están disponibles para interactuar con OpenOCD: telnet, Tcl y GDB. El servidor GDB permite que OpenOCD funcione como un 'objetivo remoto' para la depuración a nivel de fuente de sistemas embebidos usando el programa GNU GDB (y otros que hablan el protocolo GDB, p.ej. IDA Pro).

Este archivo README contiene una visión general de los siguientes temas:

  • instrucciones de inicio rápido,
  • cómo encontrar y construir más documentación de OpenOCD,
  • lista del hardware compatible,
  • el proceso de instalación y compilación,
  • consejos de empaquetado.

Inicio rápido para los impacientes

Si tienes una placa popular, simplemente inicia OpenOCD con su configuración, p.ej.:

root@kitploit:~
openocd -f board/stm32f4discovery.cfg

Si estás conectando un adaptador particular con un objetivo específico, necesitas cargar tanto la interfaz JTAG como las configuraciones del objetivo, p.ej.:

root@kitploit:~
openocd -f interface/ftdi/jtagkey2.cfg -c "transport select jtag" \
        -f target/ti/calypso.cfg
root@kitploit:~
openocd -f interface/stlink.cfg -c "transport select swd" \
        -f target/stm32l0.cfg

Después del inicio de OpenOCD, conecta GDB con

root@kitploit:~
(gdb) target extended-remote localhost:3333

Instalación de OpenOCD

La forma más fácil de instalar OpenOCD es a través del gestor de paquetes de tu sistema operativo.

  • Debian / Ubuntu

    root@kitploit:~
    sudo apt install openocd
    
  • Fedora

    root@kitploit:~
    sudo dnf install openocd
    
  • macOS (vía Homebrew)

    root@kitploit:~
    brew install open-ocd
    
  • Windows (vía MSYS2)

    root@kitploit:~
    pacman -S mingw-w64-x86_64-openocd
    

Estos paquetes suelen ser más estables que la rama principal Git de última generación, donde ocurre el desarrollo activo. Los 'empaquetadores' crean versiones binarias de OpenOCD después de que los desarrolladores publiquen nuevas versiones del código fuente. Las versiones antiguas de OpenOCD no son adecuadas para diagnosticar problemas en la versión actual. Los usuarios deben mantenerse en contacto con los mantenedores de su distribución o los vendedores de interfaces para asegurarse de que se proporcionen actualizaciones apropiadas regularmente.

Si usas uno de estos paquetes binarios, debes contactar al empaquetador para obtener soporte o versiones binarias más nuevas. Los desarrolladores de OpenOCD no proporcionan soporte directo para binarios empaquetados.

Una nota para los empaquetadores de OpenOCD

Eres un EMPAQUETADOR de OpenOCD si:

  • Vendes dongles e incluyes binarios preconstruidos;
  • Proporcionas herramientas o IDEs (una solución de desarrollo que integra OpenOCD);
  • Construyes paquetes (p.ej. archivos RPM o DEB para una distribución GNU/Linux).

Como empaquetador, experimentarás los primeros informes de la mayoría de los problemas. Cuando arregles esos problemas para tus usuarios, tu solución puede ayudar a prevenir cientos (si no miles) de otras preguntas de otros usuarios.

Si algo no funciona para ti, por favor trabaja para informar a los desarrolladores de OpenOCD cómo mejorar el sistema o la documentación para evitar problemas futuros, y da seguimiento para ayudarnos a asegurar que el problema se resuelva completamente en nuestras futuras versiones.

Dicho esto, los desarrolladores de OpenOCD también te piden que sigas algunas sugerencias:

  • Envía parches, incluyendo archivos de configuración, aguas arriba, participa en las discusiones;
  • Habilita todas las opciones que OpenOCD soporta, incluso las no relacionadas con tu hardware particular;
  • Usa el controlador de adaptador de interfaz "ftdi" para los dispositivos basados en FTDI.

Documentación de OpenOCD

Además de la documentación en el árbol, los manuales más recientes pueden verse en línea en las siguientes URLs:

  • Guía de usuario de OpenOCD: http://openocd.org/doc/html/index.html

  • Manual del desarrollador de OpenOCD: http://openocd.org/doc/doxygen/html/index.html

Estos reflejan las últimas versiones de desarrollo, por lo que la siguiente sección presenta cómo construir la documentación completa desde el paquete.

Para más información, consulta estos documentos o contacta a los desarrolladores suscribiéndote a la lista de correo de desarrolladores de OpenOCD: [email protected]

Construyendo la documentación de OpenOCD

Por defecto, el proceso de compilación de OpenOCD prepara la documentación en 'formato Info' y la instala de manera estándar, para que info openocd pueda acceder a ella.

Además, la Guía de usuario de OpenOCD puede producirse en los siguientes formatos diferentes:

Si PDFVIEWER está configurado, esto crea y visualiza la Guía de usuario en PDF.

root@kitploit:~
make pdf && ${PDFVIEWER} doc/openocd.pdf

Si HTMLVIEWER está configurado, esto crea y visualiza la Guía de usuario en HTML.

root@kitploit:~
make html && ${HTMLVIEWER} doc/openocd.html/index.html

El Manual del desarrollador de OpenOCD contiene información sobre la arquitectura interna y otros detalles sobre el código:

Nota: asegúrate de que doxygen esté instalado, escribe doxygen --version

root@kitploit:~
make doxygen && ${HTMLVIEWER} doxygen/index.html

Hardware compatible

Adaptadores JTAG

AM335x, ARM-JTAG-EW, ARM-USB-OCD, ARM-USB-TINY, AT91RM9200, axm0432, BCM2835, Bus Blaster, Buspirate, Cadence DPI, Cadence vdebug, Chameleon, CMSIS-DAP, Cortino, Cypress KitProg, DENX, Digilent JTAG-SMT2, DLC 5, DLP-USB1232H, embedded projects, Espressif USB JTAG Programmer, eStick, FlashLINK, FlossJTAG, Flyswatter, Flyswatter2, FTDI FT232R, Gateworks, Hoegl, ICDI, ICEBear, J-Link, JTAG VPI, JTAGkey, JTAGkey2, JTAG-lock-pick, KT-Link, Linux GPIOD, Lisa/L, LPC1768-Stick, Mellanox rshim, MiniModule, NGX, Nuvoton Nu-Link, Nu-Link2, NXHX, NXP IMX GPIO, OOCDLink, Opendous, OpenJTAG, Openmoko, OpenRD, OSBDM, Presto, Redbee, Remote Bitbang, RLink, SheevaPlug devkit, Stellaris evkits, ST-LINK (SWO tracing supported), STM32-PerformanceStick, STR9-comStick, sysfsgpio, Tigard, TI XDS110, TUMPA, Turtelizer, ULINK, USB-A9260, USB-Blaster, USB-JTAG, USBprog, VPACLink, VSLLink, Wiggler, XDS100v2, Xilinx XVC/PCIe, Xverve.

Objetivos de depuración

ARM: AArch64, ARM11, ARM7, ARM9, Cortex-A/R (v7-A/R), Cortex-M (ARMv{6/7/8}-M), FA526, Feroceon/Dragonite, XScale. ARCv2, AVR32, DSP563xx, DSP5680xx, EnSilica eSi-RISC, EJTAG (MIPS32, MIPS64), ESP32, ESP32-S2, ESP32-S3, Intel Quark, LS102x-SAP, RISC-V, ST STM8, Xtensa.

Controladores flash

ADUC702x, AT91SAM, AT91SAM9 (NAND), ATH79, ATmega128RFA1, Atmel SAM, AVR, CFI, DSP5680xx, EFM32, EM357, eSi-RISC, eSi-TSMC, EZR32HG, FM3, FM4, Freedom E SPI, GD32, i.MX31, Kinetis, LPC8xx/LPC1xxx/LPC2xxx/LPC541xx, LPC2900, LPC3180, LPC32xx, LPCSPIFI, Marvell QSPI, MAX32, Milandr, MXC, NIIET, nRF51, nRF52 , NuMicro, NUC910, Nuvoton NPCX, onsemi RSL10, Orion/Kirkwood, PIC32mx, PSoC4/5LP/6, Raspberry RP2040, Renesas RPC HF and SH QSPI, S3C24xx, S3C6400, SiM3x, SiFive Freedom E, Stellaris, ST BlueNRG, STM32, STM32 QUAD/OCTO-SPI for Flash/FRAM/EEPROM, STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx.

Compilando OpenOCD

El archivo INSTALL contiene instrucciones genéricas para ejecutar configure y compilar el código fuente de OpenOCD. Ese archivo se proporciona por defecto para todos los paquetes GNU autotools. Si no estás familiarizado con GNU autotools, entonces deberías leer esas instrucciones primero.

Nota: si el archivo INSTALL no está presente, significa que estás usando el código fuente de una rama de desarrollo, no de una versión de OpenOCD. En este caso, sigue las instrucciones 'Compilando OpenOCD' a continuación y el archivo será creado por el primer comando ./bootstrap.

El resto de este documento intenta proporcionar algunas instrucciones para aquellos que buscan una instalación rápida.

Dependencias de OpenOCD

Actualmente se requiere GCC o Clang para compilar OpenOCD. Los desarrolladores han comenzado a aplicar advertencias de código estrictas (-Wall, -Werror, -Wextra, y más) y a usar características específicas de C99: funciones inline, inicializadores nombrados, mezcla de declaraciones con código, y otros trucos. Si bien es posible usar otros compiladores, deben ser algo modernos y podrían requerir extender el soporte para eliminar condicionalmente las extensiones específicas de GCC.

También necesitarás:

  • make
  • libtool
  • pkg-config >= 0.23 o pkgconf
  • libjim >= 0.79

Adicionalmente, para compilar desde Git:

  • autoconf >= 2.69
  • automake >= 1.14
  • texinfo >= 5.0

Los controladores de adaptadores basados en USB opcionales necesitan libusb-1.0.

Los controladores opcionales de adaptadores de interfaz USB-Blaster, ASIX Presto y OpenJTAG necesitan la librería libftdi.

El controlador opcional de adaptador CMSIS-DAP necesita la librería HIDAPI.

El controlador opcional de adaptador linuxgpiod necesita la librería libgpiod.

El controlador opcional de adaptador J-Link necesita la librería libjaylink.

El desensamblador ARM opcional necesita la librería capstone.

El script de desarrollo opcional checkpatch necesita:

  • perl
  • python
  • python-ply
  • pymarkdownlnt

Compilando OpenOCD

Para compilar OpenOCD, usa la siguiente secuencia de comandos:

root@kitploit:~
./bootstrap
./configure [options]
make
sudo make install

El comando bootstrap solo es necesario cuando se compila desde el repositorio Git. El paso configure genera los Makefiles necesarios para compilar OpenOCD, usualmente con una o más opciones proporcionadas. El primer paso 'make' compilará OpenOCD y colocará el ejecutable final en './src/'. El último paso (opcional), make install, coloca todos los archivos en la ubicación requerida.

Para ver la lista de todas las opciones compatibles, ejecuta ./configure --help

Opciones de compilación cruzada

La compilación cruzada se admite de la manera estándar de autotools, solo necesitas especificar el triplete de destino de compilación cruzada en la opción --host, p.ej. para compilación cruzada para Windows de 32 bits con MinGW en Debian:

root@kitploit:~
./configure --host=i686-w64-mingw32 [options]

Para que pkg-config funcione bien para la compilación cruzada, es posible que necesites un script envolvente adicional como se describe en https://autotools.io/pkgconfig/cross-compiling.html.

Esto es necesario para indicar a pkg-config dónde buscar las librerías de destino de las que depende OpenOCD. Alternativamente, puedes especificar las variables de entorno *_CFLAGS y *_LIBS directamente, consulta ./configure --help para más detalles.

Para un script más o menos completo que haga todo esto por ti, consulta contrib/cross-build.sh.

Dongles de puerto paralelo

Si deseas acceder al puerto paralelo usando la interfaz PPDEV, debes especificar tanto --enable-parport como --enable-parport-ppdev, ya que la última opción es una opción para el controlador parport.

Lo mismo es cierto para la opción --enable-parport-giveio, debes usar tanto la opción --enable-parport como la opción --enable-parport-giveio si deseas usar giveio en lugar del método de acceso al puerto paralelo ioperm.

Obteniendo OpenOCD desde Git

Puedes descargar la versión actual de Git con un cliente Git de tu elección desde el repositorio principal: git://git.code.sf.net/p/openocd/code

Puede que prefieras usar un espejo:

  • http://repo.or.cz/r/openocd.git
  • git://repo.or.cz/openocd.git

Usando el cliente de línea de comandos Git, podrías usar el siguiente comando para configurar una copia local del repositorio actual (asegúrate de que no haya un directorio llamado "openocd" en el directorio actual):

root@kitploit:~
git clone git://git.code.sf.net/p/openocd/code openocd

Luego puedes actualizarlo a tu conveniencia usando git pull.

También hay una interfaz gitweb, que puedes usar para navegar por el repositorio o descargar instantáneas arbitrarias usando HTTP: http://repo.or.cz/w/openocd.git.

Las instantáneas son tarballs comprimidos del árbol de código fuente, de aproximadamente 1.3 MBytes cada una al momento de escribir esto.

Delegación de permisos

Ejecutar OpenOCD con permisos de root/administrador está fuertemente desaconsejado por razones de seguridad.

Para dispositivos USB en GNU/Linux, debes usar el archivo contrib/60-openocd.rules. Probablemente pertenezca a /etc/udev/rules.d, pero consulta la documentación de tu sistema operativo para estar seguro. No olvides agregarte al grupo 'plugdev'.

Para adaptadores de puerto paralelo en GNU/Linux y FreeBSD, cambia los permisos del nodo de dispositivo 'ppdev' (parport* o ppi*) en consecuencia.

Para adaptadores parport en Windows, necesitas ejecutar install_giveio.bat (también es posible usar 'ioperm' con Cygwin en su lugar) para dar permisos a los usuarios comunes para acceder a los registros 'LPT' directamente.

Descargar herramienta