Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
ll-34 — Emulatore PDP-11/34 a livello di circuito | Kitploit
Strumenti/GitHubGitHub/dbrll/ll-34
Sicurezza Sistemi EmbeddedReverse EngineeringDebuggerSicurezza HardwareApprendimento e FormazioneRisorse CurateAnalisi del Firmware
GitHubdbrll/ll-34

ll-34

Emulatore PDP-11/34 a livello di circuito

Vedi Repository
6941713 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

ll/34

ll/34 è un emulatore a livello circuitale per il PDP-11/34A (1976), che esegue una CPU virtuale ricostruita a partire dagli schemi, dal microcodice e dalle acquisizioni logiche di un vero PDP-11/34A.

Fu originariamente progettato come replica digitale della vera CPU per assistere nella risoluzione dei problemi a livello di segnale. La CPU virtuale KD11-EA consiste essenzialmente in una traduzione in C degli schemi e in ricerche nelle tabelle ROM. Tutte le ROM combinatorie sono state reverse-engineered e il generatore di clock è modellato con precisione.

È stato scelto il livello circuitale (tabelle di verità ROM + logica combinatoria) invece del livello gate (Verilog) perché è sufficientemente a basso livello per riprodurre i bug hardware, ma abbastanza veloce da eseguire programmi.

Dispositivi emulati

  • Backplane UNIBUS (preciso a livello di temporizzazione e segnale)
  • CPU KD11-EA (a livello circuitale)
  • Scheda di boot M9301 con ROM di boot e diagnostiche originali
  • Scheda seriale DL11 (temporizzazione precisa)
  • Clock di linea KW11 (50/60 Hz)
  • Console programmatore (inclusa la modalità manutenzione per il troubleshooting della CPU)
  • Unità RK05 (emulazione ad alto livello del controller RK11)
  • Unità RL01 e RL02 (emulazione ad alto livello del controller RL11)
  • Lettore di nastro
  • Terminale VT100 con modalità stdio, porta TCP o PTY

Architettura

Tutti i dispositivi sono collegati al backplane UNIBUS (unibus.c), che esegue la decodifica degli indirizzi, la temporizzazione e i cicli di bus.

Internamente, la CPU è composta dai seguenti componenti:

FileDescrizione
ucode_rom.hMemoria di microcodice 512x48 bit (PROM bipolari), basata sul Verilog e sui dump di Bitsavers. Ogni micro-parola controlla l'ALU, il scratchpad, l'interfaccia di bus e il branching per un micro-ciclo.
combo_roms.hROM combinatorie (E51-E83, E107), decodifica IR (E59/E60/E63/E69/E70/E71/E74), selezione funzione ALU (E61/E82/E83), priorità trap/servizio (E52/E53) e logica dei codici di condizione (E68/E107), tutte ricostituite dagli schemi e dalle acquisizioni logiche. Le ROM a collettore aperto fanno un wire-OR sul bus MPC.
kd11ea.cMotore del datapath. Avanza nel microcodice un micro-parola per ciclo. I gate 74xx di base sono simulati usando operatori logici C (!, &&, >> ecc.). L'ALU bit-slice 74S181 è completamente modellata (4 slice, 16 bit).
mmu.cGestione della memoria. Spazi di indirizzi kernel/utente, rilocazione a 18 bit (3 sommatori 74S283), 16 coppie PAR/PDR, registri di abort SR0/SR2 con logica di freeze.
clockgen.cGeneratore di clock. Modella la linea di ritardo E106 (feedback TAP 30/90/120, bus di attesa TRAN INH). Cicli brevi: 180 ns, cicli lunghi: 240 ns, i trasferimenti di bus si allungano fino al ritorno di SSYN.
clock.cTemporizzazione in tempo reale. Mantiene il tempo simulato sincronizzato con il tempo reale.
int.cArbitro degli interrupt. Coda di priorità BR4-BR7, approssima l'ordine di concessione a catena di margherita del UNIBUS.

Console programmatore (Ctrl-P)

Emula gli interruttori e gli indicatori del pannello frontale del PDP-11/34A. Attiva quando la CPU è in arresto (accensione, istruzione HALT o Ctrl-P).

Permette di inizializzare il bus, avviare la CPU, eseguire passo-passo il codice, esaminare e depositare dati a indirizzi arbitrari e uscire dall'emulatore.

Il frontend è disaccoppiato dal motore, quindi è disponibile anche una GUI del pannello frontale fotorealistica in WebAssembly.

Console di debug (Ctrl-E)

La console di debug fornisce un debugger interattivo sia a livello di microcodice che a livello di istruzioni:

  • s [n]: esegue passo-passo n micro-istruzioni con dump completo dello stato (MPC, ALU, bus, registri)
  • b addr: imposta un breakpoint sul PC (ottale), bl per elencare, bd n per eliminare
  • g: riprende l'esecuzione
  • u [addr] [n]: disassembly delle istruzioni
  • c [addr] [n]: dump della memoria (ottale)
  • mmu: mostra lo stato della MMU (PAR/PDR kernel e utente, modalità corrente marcata)
  • r: dump dei registri

Analizzatore logico (Ctrl-L)

La risoluzione dei problemi di ll-34 durante il suo sviluppo si è rivelata così simile alla risoluzione dei problemi sul hardware reale che è stato implementato un analizzatore logico interno per tracciare i segnali e sondare il datapath. Questo si è dimostrato determinante per scovare sottili bug nelle ROM e nella temporizzazione della CPU virtuale. Può anche essere utilizzato come riferimento per risolvere problemi sul hardware reale, proprio come l'hardware funzionante ha aiutato a sviluppare l'emulatore.

L'analizzatore logico permette di sondare 102 punti sui principali segnali della CPU, mappati a pin fisici dei chip (notazione KD1:Exx:pin corrispondente agli schemi DEC K1-5 fino a K2-9). Gli alias logici (MPC, ALU_OUT, IR, PSW…) sono forniti per comodità.

La frequenza di campionamento è il clock reale della CPU (5.555.556 Hz) con una risoluzione di 180 ns per campione. Un divisore configurabile riduce la frequenza di campionamento per finestre di acquisizione più lunghe.

Le acquisizioni usano un buffer circolare (fino a 64K campioni) con trigger configurabile su qualsiasi segnale, posizione del trigger regolabile (rapporto pre/post) ed esportazione CSV per analisi offline.

Le acquisizioni logiche sono state ampiamente utilizzate durante il progetto per mappare e fare debug di percorsi di multiplexing poco compresi.

Programmi di esempio

Scarica lo strumento