The Cyber Swiss Army Knife - un'app web per crittografia, codifica, compressione e analisi dei dati
# CyberChef
[](https://github.com/gchq/CyberChef/actions?query=workflow%3A%22Master+Build%2C+Test+%26+Deploy%22)
[](https://www.npmjs.com/package/cyberchef)
[](https://github.com/gchq/CyberChef/blob/master/LICENSE)
[](https://gitter.im/gchq/CyberChef?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
#### *Il coltellino svizzero informatico*
CyberChef è una web app semplice e intuitiva per eseguire ogni tipo di operazione "cyber" all'interno di un browser web. Queste operazioni includono semplici codifiche come XOR e Base64, crittografie più complesse come AES, DES e Blowfish, creazione di binary ed hexdump, compressione e decompressione dei dati, calcolo di hash e checksum, parsing di IPv6 e X.509, modifica delle codifiche dei caratteri e molto altro.
Lo strumento è progettato per consentire sia agli analisti tecnici che a quelli non tecnici di manipolare i dati in modi complessi senza dover gestire strumenti o algoritmi complessi. È stato concepito, progettato, costruito e migliorato progressivamente da un analista nel proprio tempo di innovazione del 10% nell'arco di diversi anni.
## Indice
- [Sito web ufficiale](#sito-web-ufficiale)
- [Esecuzione locale](#esecuzione-locale)
- [Con Docker](#con-docker)
- [Dal sorgente](#dal-sorgente)
- [Come funziona](#come-funziona)
- [Funzionalità](#funzionalità)
- [Collegamento profondo](#collegamento-profondo)
- [Supporto browser](#supporto-browser)
- [Supporto Node.js](#supporto-nodejs)
- [Sicurezza](#sicurezza)
- [Contribuire](#contribuire)
- [Licenza](#licenza)
## Sito web ufficiale
[Il sito web ufficiale di CyberChef si trova qui][1] - buon divertimento!
## Esecuzione locale
Puoi eseguire CyberChef con Docker (nessun toolchain richiesto) o compilarlo dal sorgente con Node.js.
### Con Docker
**Prerequisiti**
- [Docker](https://www.docker.com/products/docker-desktop/)
- Docker Desktop deve essere aperto e in esecuzione sul tuo computer
#### Opzione 1: crea l'immagine Docker manualmente
1. Crea l'immagine Docker
```bash
docker build --tag cyberchef --ulimit nofile=10000 .
```
2. Esegui il container Docker
```bash
docker run -it -p 8080:8080 cyberchef
```
3. Vai su `http://localhost:8080` nel tuo browser
#### Opzione 2: usa l'immagine Docker precompilata
Se preferisci saltare il processo di creazione, puoi usare l'immagine precompilata
```bash
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
```
Come prima, vai su `http://localhost:8080` nel tuo browser.
Questa immagine viene creata e pubblicata tramite i nostri [GitHub Workflows](https://github.com/gchq/cyberchef/blob/master/.github/workflows/releases.yml).
### Dal sorgente
Se vuoi sviluppare CyberChef o eseguirlo senza Docker, puoi compilarlo direttamente con Node.js.
**Prerequisiti**
- [Node.js](https://nodejs.org/) `v24` (vedi [Supporto Node.js](#supporto-nodejs))
> [!NOTE]
> Puoi usare [nvm](https://github.com/nvm-sh/nvm) per gestire le versioni di Node.js e utilizzare la versione di sviluppo corrente in [questo progetto](https://github.com/gchq/cyberchef/blob/master/.nvmrc) per evitare conflitti con altri progetti sul tuo computer.
**Configurazione**
```bash
git clone https://github.com/gchq/CyberChef.git
cd CyberChef
npm install
```
**Attività comuni**
| Comando | Descrizione |
| --- | --- |
| `npm start` | Avvia il server di sviluppo con ricaricamento automatico su `http://localhost:8080`. |
| `npm run build` | Genera una build di produzione nella directory `build/prod`. |
| `npm test` | Esegue le suite di test Node.js e delle operazioni. |
| `npm run testui` | Esegue i test del browser (UI). |
| `npm run lint` | Verifica il codice rispetto alle regole di linting. |
| `npm run newop` | Crea una nuova operazione tramite lo script interattivo di avvio rapido. |
Se incontri un errore di memoria insufficiente durante la creazione di ricette di grandi dimensioni, aumenta la dimensione dell'heap di Node con `npm run setheapsize`.
## Come funziona
Ci sono quattro aree principali in CyberChef:
1. La casella **input** in alto a destra, dove puoi incollare, digitare o trascinare il testo o il file su cui vuoi operare.
2. La casella **output** in basso a destra, dove verrà visualizzato il risultato della tua elaborazione.
3. L'elenco delle **operazioni** all'estrema sinistra, dove puoi trovare tutte le operazioni di cui CyberChef è capace in elenchi categorizzati, oppure tramite ricerca.
4. L'area della **ricetta** al centro, dove puoi trascinare le operazioni che vuoi utilizzare e specificare argomenti e opzioni.
Puoi usare quante operazioni vuoi, in modi semplici o complessi. Alcuni esempi sono i seguenti:
- [Decodificare una stringa codificata in Base64][2]
- [Convertire una data e un'ora in un fuso orario diverso][3]
- [Analizzare un indirizzo IPv6 Teredo][4]
- [Convertire i dati da un hexdump, poi decomprimerli][5]
- [Decrittare e disassemblare shellcode][6]
- [Visualizzare più timestamp come date complete][7]
- [Eseguire operazioni diverse su dati di tipo diverso][8]
- [Usare parti dell'input come argomenti per le operazioni][9]
- [Eseguire la decrittazione AES, estraendo l'IV dall'inizio del flusso cifrato][10]
- [Un modo più semplice per eseguire la stessa decrittazione AES][13]
- [Rilevare automaticamente più livelli di codifica annidata][12]
## Funzionalità
- Trascina e rilascia
- Le operazioni possono essere trascinate dentro e fuori dall'elenco della ricetta, oppure riorganizzate.
- I file fino a 2GB possono essere trascinati sulla casella di input per caricarli direttamente nel browser.
- Auto Bake
- Ogni volta che modifichi l'input o la ricetta, CyberChef eseguirà automaticamente il "bake" per te e produrrà l'output immediatamente.
- Questa funzione può essere disattivata e gestita manualmente se influisce sulle prestazioni (ad esempio se l'input è molto grande).
- Rilevamento automatico della codifica
- CyberChef utilizza [una serie di tecniche](https://github.com/gchq/CyberChef/wiki/Automatic-detection-of-encoded-data-using-CyberChef-Magic) per tentare di rilevare automaticamente le codifiche dei tuoi dati. Se trova un'operazione adatta che dia un senso ai tuoi dati, visualizza l'icona 'magic' nel campo Output, su cui puoi fare clic per decodificare i tuoi dati.
- Breakpoint
- Puoi impostare breakpoint su qualsiasi operazione della tua ricetta per mettere in pausa l'esecuzione prima di eseguirla.
- Puoi anche scorrere la ricetta un'operazione alla volta per vedere come appaiono i dati in ogni fase.
- Salvare e caricare ricette
- Se crei una ricetta fantastica che sai di voler riutilizzare, fai semplicemente clic su "Save recipe" e aggiungila al tuo storage locale. Ti aspetterà la prossima volta che visiterai CyberChef.
- Puoi anche copiare l'URL, che include la tua ricetta e l'input, per condividerlo facilmente con altri.
- Ricerca
- Se conosci il nome dell'operazione che vuoi o una parola associata, inizia a digitarla nel campo di ricerca e tutte le operazioni corrispondenti verranno mostrate immediatamente.
- Evidenziazione
- Quando evidenzi del testo nell'input o nell'output, verranno visualizzati i valori di offset e lunghezza e, se possibile, i dati corrispondenti verranno evidenziati rispettivamente nell'output o nell'input (esempio: [evidenzia la parola 'question' nell'input per vedere dove appare nell'output][11]).
- Salva su file e carica da file
- Puoi salvare l'output in un file in qualsiasi momento oppure caricare un file trascinandolo e rilasciandolo nel campo di input. Sono supportati file fino a circa 2GB (a seconda del browser); tuttavia, alcune operazioni potrebbero richiedere moltissimo tempo per essere eseguite su una mole di dati così grande.
- CyberChef è interamente lato client
- Va notato che nessuna parte della configurazione della tua ricetta o dell'input (né testo né file) viene mai inviata al server web di CyberChef: tutta l'elaborazione avviene all'interno del tuo browser, sul tuo computer.
- Grazie a questa funzionalità, CyberChef può essere scaricato ed eseguito localmente. Puoi usare il link nell'angolo in alto a sinistra dell'app per scaricare una copia completa di CyberChef e inserirla in una macchina virtuale, condividerla con altre persone o ospitarla in una rete chiusa.
## Collegamento profondo
Manipolando l'hash dell'URL di CyberChef, puoi modificare le impostazioni iniziali con cui si apre la pagina.
Il formato è `https://gchq.github.io/CyberChef/#recipe=Operation()&input=...`
Gli argomenti supportati sono `recipe`, `input` (codificato in Base64) e `theme`.
## Supporto browser
CyberChef è progettato per supportare
- Google Chrome 50+
- Mozilla Firefox 38+
## Supporto Node.js
CyberChef è progettato per supportare pienamente Node.js `v24` ed è testato anche con Node.js `v26` in previsione della sua prossima disponibilità come release LTS attiva. Per maggiori informazioni, consulta la [pagina wiki "Node API"](https://github.com/gchq/CyberChef/wiki/Node-API)
## Sicurezza
Consulta la [security policy di CyberChef](https://github.com/gchq/cyberchef/blob/master/SECURITY.md).
## Contribuire
Contribuire con una nuova operazione a CyberChef è facilissimo! Lo script di avvio rapido ti guiderà attraverso il processo. Se sai scrivere JavaScript di base, puoi scrivere un'operazione per CyberChef.
Una guida all'installazione, guide pratiche per aggiungere nuove operazioni e temi, descrizioni della struttura del repository, dei tipi di dati disponibili e delle convenzioni di codifica: tutto questo si trova nella [pagina wiki "Contributing"](https://github.com/gchq/CyberChef/wiki/Contributing).
- Invia le tue modifiche al tuo fork.
- Invia una pull request. Se lo fai per la prima volta, ti verrà chiesto di firmare la [GCHQ Contributor Licence Agreement](https://cla-assistant.io/gchq/CyberChef) tramite l'assistente CLA sulla pull request. Ti verrà anche chiesto se sei d'accordo che GCHQ ti contatti per un piccolo ringraziamento per il tuo contributo o per opportunità di lavoro presso GCHQ.
## Licenza
CyberChef è rilasciato sotto la [Licenza Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) ed è coperto da [Crown Copyright](https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/).
[1]: https://gchq.github.io/CyberChef
[2]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[3]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[4]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[5]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[6]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[7]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[8]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[9]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[10]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[11]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[12]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[13]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1