Se hai mai provato a lasciare Google Authenticator, probabilmente conosci il problema.
Tocchi “Trasferisci codici”, scansioni il QR sul nuovo dispositivo e il gioco è fatto. Tutto liscio, finché resti dentro l’app di Google. Ma prova a spostare gli stessi codici TOTP su un altro autenticatore, su una cassaforte di password, o semplicemente su un file di testo da stampare e chiudere in una cassaforte fisica, e non puoi. Il QR di esportazione è opaco. Contiene tutti i tuoi segreti, ma non puoi leggerli senza Google Authenticator dall’altra parte.
Non è davvero una funzione di sicurezza. È un problema di portabilità.
Cosa c’è davvero in quel QR
Il QR di esportazione di Google Authenticator è un URI che assomiglia a otpauth-migration://offline?data=.... Il blob data è un protocol buffer (protobuf) codificato in base64 che contiene ogni voce TOTP: nome, emittente, segreto, algoritmo, cifre, periodo. È un formato di dati standard. Niente di esotico. Niente che richieda l’app di un fornitore specifico per essere decodificato.
Il formato è documentato da anni, analizzato in modo esaustivo e descritto soprattutto da Alex Bakker. Su GitHub esistono già decoder da riga di comando in Python e Go. Mancava qualcosa che un utente non tecnico potesse usare in sicurezza: uno strumento web semplice, interamente lato client, verificabile, a cui non ci si pensi due volte prima di affidare i propri segreti. È il vuoto che abbiamo colmato.
Lo strumento
free-tools.heimlane.com/ga-decoder/ prende il QR di esportazione e ti mostra che cosa contiene davvero: un elenco chiaro dei tuoi account, con i segreti che puoi copiare in qualsiasi altro autenticatore o cassaforte.

Come funziona
Tre modi per fornirgli il QR, a seconda di ciò che hai a disposizione:
- Scansiona con la fotocamera. Apri la pagina su un portatile e mostra il QR alla webcam. Il decoder lo legge in tempo reale senza inviare l’immagine da nessuna parte.
- Carica un’immagine. Va benissimo anche uno screenshot del QR dal telefono (dove l’app lo permette). Trascinalo sulla pagina.
- Incolla l’URI. Se hai già la stringa grezza
otpauth-migration://offline?data=..., incollala direttamente.
Tre modi per leggere il risultato, a seconda di dove stai migrando:
- QR da scansionare di nuovo per la tua nuova app di autenticazione. Un QR per account; inquadra ciascuno con la fotocamera della nuova app.
- Segreti base32 copiabili per qualsiasi strumento che accetti direttamente un seed TOTP: cassaforti di password, token hardware, qualsiasi autenticatore serio.
- JSON o CSV in blocco quando hai decine di voci e vuoi automatizzare la migrazione con uno script, oppure stamparle per chiuderle in una cassaforte fisica.
Sono gestite sia le esportazioni a più lotti (quando Google divide un archivio voluminoso su più QR) sia le voci HOTP.

Alcuni principi che abbiamo incorporato
Niente lascia il tuo browser. Il decoder è una pagina statica. Scansiona il QR in locale, esegue il parsing protobuf in locale e non invia nulla da nessuna parte. Nessun backend, nessuna telemetria, nessuna analytics.
Il codice sorgente è aperto. Il codice completo è su GitHub, con licenza MIT.
Sottodominio isolato. Il decoder risiede su free-tools.heimlane.com, un’origine separata dal sito principale e da Heimlane Vault. Nessuna telemetria, nessuna analytics, nessun modulo da compilare per accedere.
Rivelazione voce per voce. I segreti restano nascosti dietro un clic, così una condivisione dello schermo o uno screenshot accidentale non li espone, nemmeno se qualcuno sbircia da dietro le tue spalle. Una volta rivelate, le schede si nascondono di nuovo dopo 30 secondi.
Perché questo strumento
È uno strumento che volevamo noi per primi, e che abbiamo costruito inizialmente perché gli utenti di Heimlane Vault potessero estrarre i propri codici TOTP da Google Authenticator e portarli in Vault senza perdere nulla. Abbiamo pensato che molte persone avrebbero voluto lo stesso, utenti di Vault o no, e così l’abbiamo reso gratuito, pubblico e open source.
È anche il riflesso di come la pensiamo in Heimlane: i tuoi segreti sono tuoi, i formati che li contengono non dovrebbero intrappolarti, e i tuoi dati non dovrebbero mai essere monetizzati. Il decoder porta questi valori in circa 200 KB di HTML e JavaScript statici.
Complimenti a Google per aver messo a disposizione un’esportazione (più di quanto possano dire diverse altre app di autenticazione), e a chi ha documentato il formato prima di noi. Noi l’abbiamo solo reso accessibile.
→ Apri il decoder di esportazione di Google Authenticator
Se cerchi un posto dove conservarli insieme a password e passkey, anche Heimlane Vault lo fa.
