Strumenti per sviluppatori · Decodificatore JWT
Come decodificare manualmente un carico utile JWT con base64 e jq
· Come funziona
jwt riga di comando flusso di lavoro dello sviluppatore
Su una scatola senza testa puoi ancora leggere un token con cut, tr, base64 e jq. Questo post fornisce i comandi, spiega la conversione base64url eseguita da ciascuno ed elenca le insidie.
Leggere un token su SSH — quando un browser non è un'opzione
Un server headless potrebbe lasciarti con una stringa a forma di token e nessuna interfaccia utente del browser. Il lavoro di ispezione richiesto è ancora piccolo: isolare un segmento, tradurre l'ortografia base64url, ripristinare il riempimento, decodificare i byte e analizzare JSON. Il pericolo è operativo piuttosto che computazionale perché la cronologia della shell può preservare una credenziale attiva.
Utilizza un token scaduto o sintetico quando possibile. Se la risposta agli incidenti richiede l'esame di un valore reale, segui i controlli di gestione delle credenziali della tua organizzazione, impedisci che entrino nella cronologia o nei registri condivisi e ruotali dopo l'esposizione. La decodifica da riga di comando rimane solo ispezione; non fornisce alcuna chiave di verifica o politica di fiducia.
Divisione in punti: taglia o sposta per isolare il segmento del carico utile
Un JWS compatto a forma di JWT ha tre campi separati da punti. Il carico utile è il secondo. Una shell può dividerlo con uno strumento che riconosce i delimitatori, ma cita le variabili in modo che la shell non espanda i caratteri o divida gli spazi bianchi. Rimuovi un'etichetta iniziale `Bearer ` prima di selezionare i campi perché quel prefisso appartiene alla sintassi HTTP.
Contare i campi invece di prendere ciecamente il campo due. ToolAcre rifiuta qualsiasi cosa diversa da tre parti e identifica separatamente l'input crittografato in cinque parti. Una pipeline “shell” dovrebbe applicare la stessa cautela strutturale; ricevere un segmento da un input non valido può produrre JSON plausibile nascondendo che il token originale è stato troncato.
Conversione dell'alfabeto — tr per trasformare il trattino e il carattere di sottolineatura nuovamente in più e barra
Le implementazioni Base64 standard della riga di comando prevedono comunemente più e barra dove un segmento JWT può contenere trattino e carattere di sottolineatura. La conversione di `-` in `+` e `_` in `/` mappa i simboli URL-safe nelle loro posizioni standard senza modificare i valori a sei bit rappresentati.
Utilizza un comando di traduzione la cui opzione di analisi non può confondere un trattino iniziale con un flag e mantieni i dati in una variabile tra virgolette o in un input standard. La conversione dell'alfabeto è un lavoro di codifica reversibile. Non decrittografa le attestazioni e il successo non stabilisce che il token provenga dall'emittente indicato.
Ripristino del riempimento: l'aritmetica che aggiunge il numero corretto di segni di uguale
Dopo la traduzione, calcola la lunghezza modulo quattro. Per il resto zero non sono necessari segni di uguale, per il resto due sono necessari due e per il resto tre è necessario uno. Il resto indica un troncamento e dovrebbe arrestare la pipeline. Aggiungere un riempimento arbitrario finché un'utilità non smette di lamentarsi può nascondere il danno anziché diagnosticarlo.
ToolAcre utilizza esattamente questa regola di lunghezza in `base64ToBytes` e rifiuta il resto impossibile. Le utilità della shell variano a seconda che accettino il riempimento omesso, quindi la normalizzazione dell'input rende prima la pipeline esplicita e portabile nel concetto, sebbene i flag di comando possano comunque differire tra i sistemi operativi.
Decodifica e stampa gradevole: base64 -d convogliato in jq
Invia il valore riempito al decoder Base64 della piattaforma e quindi a `jq`. Il primo comando recupera i byte; il secondo richiede che quei byte formino JSON. Un comando Base64 riuscito seguito da un errore di analisi jq significa che la codifica era strutturalmente decodificabile ma il suo contenuto non era un payload JSON.
Questa distinzione rispecchia i percorsi di errore di ToolAcre. Innanzitutto segnala base64url o UTF-8 non validi, quindi segnala separatamente JSON non validi, quindi rifiuta null, array e primitive perché un'intestazione o un payload JWT deve essere un oggetto per questo strumento. Mantenere le fasi separate rende perseguibile un fallimento.
Esempio realizzato: la pipeline completa su un token di esempio, con l'output in ogni fase
Per un esempio sintetico, il segmento del carico utile `eyJzdWIiOiJkZW1vIiwicm9sZSI6InJlYWRlciJ9` non necessita di traduzione o riempimento dell'alfabeto. La decodifica produce formati `{"sub":"demo","role":"reader"}` e jq che si oppongono su più righe. Il ruolo visibile è semplicemente una stringa fornita dal token.
Ora modifica JSON, codificalo di nuovo e allega un terzo segmento qualsiasi. La pipeline stampa ancora l'oggetto modificato. Ciò dimostra perché un comando di decodifica non può servire come controllo di validità: sia le affermazioni legittime che quelle fabbricate attraversano le stesse trasformazioni pubbliche a meno che un verificatore separato non controlli la firma.
Insidie: cronologia della shell che cattura il token, implementazioni base64 che rifiutano il riempimento mancante e token con un "Bearer" iniziale
Gli errori comuni includono il mantenimento del prefisso HTTP, la selezione del campo separato da punti errato, la perdita dei caratteri finali durante la copia e l'utilizzo di un'implementazione Base64 che richiede il riempimento. Un'altra trappola è posizionare l'intero token direttamente sulla riga di comando, dove gli elenchi dei processi o la cronologia potrebbero conservarlo.
Preferisci input standard e variabili temporanee sotto controlli appropriati e non incollare mai un token di produzione in chat, ticket o terminali condivisi per comodità. Ricorda inoltre che il terzo segmento è materiale per la firma binaria anziché JSON, quindi l'invio tramite jq dovrebbe fallire e non ti dice nulla sulla validità della firma.
Conclusione: la stessa decodifica, qualsiasi ambiente: quando hai un browser, il decoder ToolAcre JWT lo fa localmente senza caricare nulla
La pipeline della shell e ToolAcre eseguono la stessa sequenza di sola decodifica in ambienti diversi: suddivisione, normalizzazione, riempimento, decodifica UTF-8 e analisi JSON. Utilizza qualsiasi ambiente che puoi ispezionare e controllare, con i dati non sensibili come impostazione predefinita.
Nessuno dei due percorsi verifica l'autenticità o autorizza un chiamante. Dopo aver letto la forma del payload, passa al verificatore attendibile del servizio e registra le decisioni relative alla crittografia e alle policy. Un comando che produce JSON ha completato un'attività di formattazione, non un giudizio sulla sicurezza.