# Da byte ASCII a ideogrammi CJK: codifica reversibile

> Tool di steganografia online basato su mojibake: ogni byte è mappato su un codepoint Unicode superiore casuale. Illeggibile ma reversibile.

Strumento gratuito nel browser (nessun upload): https://www.mauriziofonte.it/strumenti/mojibake

Ogni byte dell'input viene codificato come un **codepoint Unicode superiore** scelto casualmente. Ad esempio una `A` (U+0041) può diventare U+5E41 (un ideogramma CJK). Il testo risultante è illeggibile a prima vista, ma la decodifica estrae il codepoint di ogni carattere **modulo 256** per recuperare il byte originale. Interno tutto UTF-8, Unicode-safe.

## Domande frequenti

### A cosa serve davvero uno strumento di mojibake?

Principalmente dimostrazioni didattiche di steganografia (nascondere l'esistenza del messaggio, non il contenuto) e red team awareness. Esempio di use-case reale: un file di testo che contiene commenti apparentemente 'ideogrammi CJK random' ma che in realtà sono stringhe leggibili una volta decodificate. Utile per CTF, training di sicurezza, o semplicemente per curiosità sui codepoint Unicode.

### Perché il risultato è diverso ogni volta per lo stesso input?

Perché il 'valore k' (l'offset Unicode alto) è casuale ad ogni carattere. Solo il preset Braille produce output deterministico (perché il range ha un solo valore alto disponibile, 0x28). Tutti gli altri preset randomizzano e producono output diversi ogni volta. La decodifica funziona comunque, perché è basata sul modulo 256 del codepoint, non sul valore alto.

### Supporta emoji e caratteri non-ASCII nell'input?

Sì. L'input viene prima convertito in UTF-8 (quindi un 'è' italiano diventa 2 byte, un'emoji 4 byte), poi ogni byte viene offuscato. In decodifica, i byte vengono riuniti e reinterpretati come UTF-8. Emoji 🎯 🔒, accenti italiani (perché, città, più), CJK, arabo, ebraico: tutti supportati.

### È sicuro per nascondere password o informazioni sensibili?

NO. Ripeto: non è crittografia. Chiunque con un JavaScript console può decodificare il tuo output in 3 secondi. Se devi proteggere informazioni sensibili, usa crittografia simmetrica con chiave segreta (AES-256-GCM via libsodium) o un password manager decente.

### Come funziona tecnicamente?

Il testo viene codificato in byte UTF-8 con `TextEncoder`; ogni byte diventa poi un codepoint del blocco Unicode scelto (es. ideogrammi CJK): il byte originale resta negli 8 bit bassi e la parte alta del codepoint viene scelta casualmente dentro il blocco. La decodifica fa l'inverso: da ogni carattere estrae il byte basso (`codepoint & 0xFF`) e ricostruisce la stringa UTF-8 con `TextDecoder`. L'effetto visivo imita il mojibake classico da conversione errata di charset, ma la trasformazione è uno shift reversibile sui codepoint, senza alcun passaggio ISO-8859-1.

---
Uno strumento di Maurizio Fonte, senior backend engineer. Tutti gli strumenti: https://www.mauriziofonte.it/strumenti/
