Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
openocd — Mirror ufficiale di OpenOCD in sola lettura (nessuna pull request) | Kitploit
Strumenti/GitHubGitHub/openocd-org/openocd
Sicurezza Sistemi EmbeddedReverse EngineeringDebuggerHacking HardwareSicurezza HardwareSicurezza Hardware e IoTAnalisi del Firmware
GitHubopenocd-org/openocd

openocd

Mirror ufficiale di OpenOCD in sola lettura (nessuna pull request)

Vedi Repository
2.3k1.0k2 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

Benvenuto in OpenOCD

OpenOCD fornisce supporto per programmazione e debug on-chip con un'architettura a strati dell'interfaccia JTAG e supporto TAP, inclusi:

  • riproduzione (X)SVF per facilitare il boundary scan automatizzato e la programmazione FPGA/CPLD;
  • supporto target di debug (es. ARM, MIPS): single-stepping, breakpoints/watchpoints, profiling gprof, ecc;
  • driver per chip flash (es. CFI, NAND, flash interna);
  • interprete Tcl integrato per scripting facile.

Diverse interfacce di rete sono disponibili per interagire con OpenOCD: telnet, Tcl e GDB. Il server GDB permette a OpenOCD di funzionare come 'target remoto' per il debug a livello di codice sorgente di sistemi embedded utilizzando il programma GNU GDB (e altri che parlano il protocollo GDB, es. IDA Pro).

Questo file README contiene una panoramica dei seguenti argomenti:

  • istruzioni per l'avvio rapido,
  • come trovare e costruire ulteriore documentazione di OpenOCD,
  • elenco dell'hardware supportato,
  • il processo di installazione e compilazione,
  • suggerimenti per il packaging.

Avvio rapido per gli impazienti

Se possiedi una scheda popolare, avvia semplicemente OpenOCD con la sua configurazione, ad esempio:

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

Se colleghi un adattatore particolare con un target specifico, devi includere sia l'interfaccia JTAG che le configurazioni del target, ad esempio:

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

Dopo l'avvio di OpenOCD, connetti GDB con

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

Installazione di OpenOCD

Il modo più semplice per installare OpenOCD è tramite il gestore pacchetti del tuo sistema operativo.

  • Debian / Ubuntu

    root@kitploit:~
    sudo apt install openocd
    
  • Fedora

    root@kitploit:~
    sudo dnf install openocd
    
  • macOS (via Homebrew)

    root@kitploit:~
    brew install open-ocd
    
  • Windows (via MSYS2)

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

Questi pacchetti sono spesso più stabili rispetto alla versione di sviluppo Git, dove avviene lo sviluppo attivo. I 'Packagers' creano rilasci binari di OpenOCD dopo che gli sviluppatori pubblicano nuovi rilasci del codice sorgente. Le versioni obsolete di OpenOCD non sono adatte per diagnosticare problemi nella release corrente. Gli utenti dovrebbero mantenersi in contatto con i manutentori della distribuzione o i venditori di interfacce per garantire che gli aggiornamenti appropriati vengano forniti regolarmente.

Se usi uno di questi pacchetti binari, devi contattare il Packager per supporto o per versioni binarie più recenti. Gli sviluppatori di OpenOCD non forniscono supporto diretto per binari pacchettizzati.

Una nota per i Packager di OpenOCD

Sei un PACKAGER di OpenOCD se:

  • Vendi dongle e includi binari precompilati;
  • Fornisci strumenti o IDE (una soluzione di sviluppo che integra OpenOCD);
  • Costruisci pacchetti (es. file RPM o DEB per una distribuzione GNU/Linux).

Come PACKAGER, sarai il primo a ricevere segnalazioni della maggior parte dei problemi. Quando risolvi quei problemi per i tuoi utenti, la tua soluzione può aiutare a prevenire centinaia (se non migliaia) di altre domande da parte di altri utenti.

Se qualcosa non funziona per te, per favore informa gli sviluppatori di OpenOCD su come migliorare il sistema o la documentazione per evitare problemi futuri, e segui per aiutarci a garantire che il problema sia completamente risolto nelle nostre future release.

Detto questo, gli sviluppatori di OpenOCD vorrebbero anche che tu seguissi alcuni suggerimenti:

  • Invia patch, inclusi i file di configurazione, upstream, partecipa alle discussioni;
  • Abilita tutte le opzioni supportate da OpenOCD, anche quelle non correlate al tuo hardware specifico;
  • Usa il driver dell'adattatore interfaccia 'ftdi' per i dispositivi basati su FTDI.

Documentazione di OpenOCD

Oltre alla documentazione all'interno del repository, gli ultimi manuali possono essere visualizzati online ai seguenti URL:

  • OpenOCD User's Guide: http://openocd.org/doc/html/index.html

  • OpenOCD Developer's Manual: http://openocd.org/doc/doxygen/html/index.html

Questi riflettono le ultime versioni di sviluppo, quindi la sezione seguente introduce come costruire la documentazione completa dal pacchetto.

Per maggiori informazioni, consulta questi documenti o contatta gli sviluppatori iscrivendoti alla mailing list degli sviluppatori OpenOCD: [email protected]

Costruzione della Documentazione di OpenOCD

Per impostazione predefinita, il processo di compilazione di OpenOCD prepara la documentazione in 'formato Info' e la installa nel modo standard, in modo che info openocd possa accedervi.

Inoltre, la Guida per l'Utente di OpenOCD può essere prodotta nei seguenti formati diversi:

Se PDFVIEWER è impostato, questo crea e visualizza la Guida per l'Utente in PDF.

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

Se HTMLVIEWER è impostato, questo crea e visualizza la Guida per l'Utente in HTML.

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

Il Manuale per Sviluppatori di OpenOCD contiene informazioni sull'architettura interna e altri dettagli sul codice:

Nota: assicurati che doxygen sia installato, digita doxygen --version

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

Hardware supportato

Adattatori 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.

Target di debug

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.

Driver 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 per Flash/FRAM/EEPROM, STMSMI, STR7x, STR9x, SWM050, TI CC13xx, TI CC26xx, TI CC32xx, TI MSP432, Winner Micro w600, Xilinx XCF, XMC1xxx, XMC4xxx.

Compilazione di OpenOCD

Il file INSTALL contiene istruzioni generiche per eseguire configure e compilare il codice sorgente di OpenOCD. Quel file è fornito per impostazione predefinita per tutti i pacchetti GNU autotools. Se non hai familiarità con gli autotools GNU, dovresti leggere prima quelle istruzioni.

Nota: se il file INSTALL non è presente, significa che stai usando il codice sorgente da un ramo di sviluppo, non da una release di OpenOCD. In questo caso, segui le istruzioni 'Compilazione di OpenOCD' qui sotto e il file verrà creato dal primo comando ./bootstrap.

Il resto di questo documento cerca di fornire alcune istruzioni per chi cerca un'installazione rapida.

Dipendenze di OpenOCD

GCC o Clang sono attualmente richiesti per compilare OpenOCD. Gli sviluppatori hanno iniziato a imporre avvisi rigorosi sul codice (-Wall, -Werror, -Wextra e altro) e utilizzano funzionalità specifiche di C99: funzioni inline, inizializzatori nominati, mescolanza di dichiarazioni con codice e altri trucchi. Anche se potrebbe essere possibile usare altri compilatori, devono essere abbastanza moderni e potrebbero richiedere l'estensione del supporto per rimuovere condizionalmente le estensioni specifiche di GCC.

Avrai anche bisogno di:

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

Inoltre, per la compilazione da Git:

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

I driver opzionali per adattatori basati su USB richiedono libusb-1.0.

I driver opzionali per adattatori di interfaccia USB-Blaster, ASIX Presto e OpenJTAG richiedono la libreria libftdi.

Il driver opzionale per adattatori CMSIS-DAP richiede la libreria HIDAPI.

Il driver opzionale per adattatori linuxgpiod richiede la libreria libgpiod.

Il driver opzionale per adattatori J-Link richiede la libreria libjaylink.

Il disassemblaggio ARM opzionale richiede la libreria capstone.

Lo script di sviluppo opzionale checkpatch necessita di:

  • perl
  • python
  • python-ply
  • pymarkdownlnt

Compilazione di OpenOCD

Per compilare OpenOCD, usa la seguente sequenza di comandi:

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

Il comando bootstrap è necessario solo quando si compila dal repository Git. Il passo configure genera i Makefile necessari per compilare OpenOCD, di solito con una o più opzioni fornite. Il primo passo 'make' compilerà OpenOCD e posizionerà l'eseguibile finale in './src/'. Il passo finale (opzionale), make install, posiziona tutti i file nella posizione richiesta.

Per vedere l'elenco di tutte le opzioni supportate, esegui ./configure --help

Opzioni di cross-compilazione

La cross-compilazione è supportata nel modo standard degli autotools, devi solo specificare la tripletta del target di cross-compilazione nell'opzione --host, ad esempio per la cross-compilazione per Windows 32-bit con MinGW su Debian:

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

Per far funzionare pkg-config correttamente per la cross-compilazione, potresti aver bisogno di uno script wrapper aggiuntivo come descritto in https://autotools.io/pkgconfig/cross-compiling.html.

Questo è necessario per dire a pkg-config dove cercare le librerie target da cui OpenOCD dipende. In alternativa, puoi specificare direttamente le variabili d'ambiente *_CFLAGS e *_LIBS, vedi ./configure --help per i dettagli.

Per uno script più o meno completo che faccia tutto questo per te, vedi contrib/cross-build.sh.

Dongle per Porta Parallela

Se vuoi accedere alla porta parallela usando l'interfaccia PPDEV devi specificare sia --enable-parport che --enable-parport-ppdev, poiché l'ultima opzione è un'opzione del driver parport.

Lo stesso vale per l'opzione --enable-parport-giveio, devi usare entrambe le opzioni --enable-parport e --enable-parport-giveio se vuoi usare giveio invece del metodo di accesso alla porta parallela ioperm.

Ottenere OpenOCD da Git

Puoi scaricare la versione Git corrente con un client Git a tua scelta dal repository principale: git://git.code.sf.net/p/openocd/code

Potresti preferire usare un mirror:

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

Usando il client a riga di comando Git, potresti usare il seguente comando per impostare una copia locale del repository corrente (assicurati che non ci sia una directory chiamata "openocd" nella directory corrente):

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

Poi puoi aggiornarlo a tuo piacimento usando git pull.

Esiste anche un'interfaccia gitweb, che puoi usare sia per navigare il repository che per scaricare snapshot arbitrari tramite HTTP: http://repo.or.cz/w/openocd.git.

Gli snapshot sono tarball compressi dell'albero dei sorgenti, circa 1.3 MB ciascuno al momento della scrittura.

Delega dei permessi

Eseguire OpenOCD con permessi di root/amministratore è fortemente sconsigliato per motivi di sicurezza.

Per dispositivi USB su GNU/Linux dovresti usare il file contrib/60-openocd.rules. Probabilmente va da qualche parte in /etc/udev/rules.d, ma consulta la documentazione del tuo sistema operativo per esserne sicuro. Non dimenticare di aggiungerti al gruppo "plugdev".

Per adattatori di porta parallela su GNU/Linux e FreeBSD, per favore modifica i permessi dei nodi del dispositivo "ppdev" (parport* o ppi*) di conseguenza.

Per adattatori parport su Windows devi eseguire install_giveio.bat (è anche possibile usare "ioperm" con Cygwin invece) per dare agli utenti ordinari i permessi per accedere direttamente ai registri "LPT".

Scarica lo strumento