Recupera rapidamente codice Python da file .pyc, visualizza header e metadati, copia o scarica il sorgente ricostruito, tutto in locale.
Features
- Decompilazione accurata: Ricostruisce codice Python formattato, con indentazione e blocchi logici preservati
- Metadati immediati: Mostra versione CPython, magic number, timestamp e dimensione per verifiche rapide
- Supporto multi-versione: Gestisce bytecode da Python 2.7 fino alle release più recenti, riconoscendo gli opcode corretti
- Export senza compromessi: Copia lo snippet generato o scarica il file sorgente per documentazione, audit e patch
Usage Guide
- Carica il .pyc: Seleziona o trascina il file compilato dal tuo progetto Python
- Avvia la decompilazione: Premi “Genera” per ricostruire il codice sorgente mantenendo la struttura
- Esporta il risultato: Copia nello clipboard oppure scarica il file .py per ulteriori analisi
Technical Details
Come nasce il bytecode
Quando un modulo viene importato, CPython compila il sorgente in oggetti `code` serializzati con marshal e li archivia in __pycache__ insieme al magic number che identifica la versione.
Pipeline di decompilazione
Il tool utilizza librerie come uncompyle6/pycdc per ricostruire AST ad alto livello, semplificare blocchi e rigenerare Python leggibile rispettando indentazione e clausole di controllo.
Limiti e best practice
La decompilazione può perdere commenti e nomi di variabili temporanee; integrare con analisi del bytecode e test automatici riduce il rischio di regressioni.
Frequently Asked Questions
- Che cos'è un file .pyc e come viene generato?
- È il bytecode compilato da CPython quando un modulo viene importato. Contiene un header (magic number, timestamp/hash) e l'oggetto codice serializzato. Il file è salvato in __pycache__ per evitare ricompilazioni successive e accelerare l'avvio.
- Il codice decompilato è identico al sorgente originale?
- No: commenti, formattazione, alcune variabili temporanee e costrutti particolari possono andare perduti, ma la logica rimane equivalente. È consigliabile revisionare manualmente lo snippet prodotto prima di riutilizzarlo.
- Quali versioni di Python sono supportate?
- Il convertitore riconosce automaticamente la versione dal magic number e utilizza algoritmi specifici per Python 2.7–3.12. Release molto obsolete o sperimentali potrebbero richiedere librerie dedicate.
- La decompilazione è legale?
- Dipende dalla licenza e dalla giurisdizione. È generalmente consentita per recuperare il proprio codice, analisi di sicurezza o studio accademico; può violare termini d'uso se applicata a software proprietario senza autorizzazione.
Related Documentation
- Guida ufficiale al bytecode Python - Documentazione `dis` con opcode, argomenti e commenti sulle istruzioni
- PEP 3147 – Gestione della cache .pyc - Descrive il repository __pycache__ e la nomenclatura dei file compilati
- Reverse Engineering Python Applications - Best practice per analizzare e proteggere applicazioni distribuite in bytecode
- Linee guida legali IEEE su reverse engineering - Panoramica su implicazioni legali e scenari consentiti della decompilazione
- Repo pycdc - Implementazione C++ open source per decompilare .pyc in modo veloce e scriptabile