Como decodificar uma string Base64 gzip
- Cole o Base64 na entrada, ou arraste um arquivo
.gz,.zzou.deflate. Espaços e quebras de linha são ignorados. - Deixe o Formato em Detectar automaticamente. O status informa o que foi encontrado, por exemplo “Detectado: gzip”.
- A saída em texto aparece no painel de saída, e JSON é formatado. Uma saída binária tem o tipo de arquivo detectado e ganha um botão Baixar.
- Para entrada gzip, os metadados também mostram o nome original do arquivo e a data de modificação, quando o remetente os gravou.
Como distinguir gzip, zlib e deflate
Os três usam a mesma compressão DEFLATE e diferem só no invólucro, que aparece nos primeiros caracteres do Base64:
| Começa com | Formato | Origem típica |
|---|---|---|
H4sI | gzip (1F 8B 08) | gzip, GZIPOutputStream, corpos HTTP, CloudWatch Logs |
eJ | zlib, nível padrão (78 9C) | zlib.compress(), gzcompress() do PHP, streams de PDF |
eNo–eNr | zlib, melhor compressão (78 DA) | nível 7–9 |
eAE–eAH, eF4–eF7 | zlib, níveis mais rápidos e baixos (78 01, 78 5E) | nível 1 a 5 |
| sem prefixo fixo | deflate bruto | binding Redirect do SAML, gzdeflate() do PHP, entradas de ZIP |
SDRzSU | gzip codificado em Base64 duas vezes | Secrets de release do Helm |
O deflate bruto não tem assinatura, então a detecção automática o tenta depois que gzip e zlib falham. O Brotli também não tem assinatura e é tentado por último, quando o navegador tem suporte.
Payloads do mundo real
Os eventos de assinatura do AWS CloudWatch Logs chegam ao Lambda como {"awslogs": {"data": "H4sI…"}}. Cole o valor de data para ler o JSON com logGroup, logStream e logEvents.
Os Secrets de release do Helm 3 guardam o Base64 de um JSON compactado com gzip, que o Kubernetes codifica em Base64 de novo. No shell:
kubectl get secret sh.helm.release.v1.myapp.v3 -o jsonpath='{.data.release}' \
| base64 --decode | base64 --decode | gunzip | jq -r .manifest
No navegador, decodifique a camada externa com o decodificador de Secrets do Kubernetes ou com o decodificador de Base64 e depois cole o resultado H4sI… nesta página.
Mensagens SAML Redirect são deflate bruto. Elas também decodificam aqui, mas o decodificador de SAML ainda desfaz a codificação de URL e resume o XML.
Decodificando em Python e Node.js
import base64, zlib
raw = base64.b64decode(s)
text = zlib.decompress(raw, 47).decode() # 47 = 32 + 15: accept gzip or zlib
const zlib = require("zlib");
const text = zlib.unzipSync(Buffer.from(s, "base64")).toString(); // gzip or zlib
Para deflate bruto, use zlib.decompress(raw, -15) em Python e zlib.inflateRawSync() em Node. Veja Base64 em Python e Base64 em Node.js.
Erros e limites
- “Isto é Base64 válido, mas não são dados gzip, zlib ou deflate bruto.” A string nunca foi compactada. Experimente o decodificador de Base64, ou Base64 para arquivo para dados binários.
- “Estes não são dados gzip válidos, ou estão truncados.” Falta parte da string, muitas vezes cortada por um limite de linha de log. Copie de novo da origem.
- “Bytes extras após o stream compactado foram ignorados.” Algo foi acrescentado depois do fim do stream. Os dados anteriores são mantidos.
- “Os dados descompactados são maiores que 256.0 MB, então a descompactação foi interrompida (possível zip bomb).” A saída tem um teto, como proteção contra bombas de descompressão. Para algo desse tamanho, use o
gunziplocalmente. - Arquivos gzip com vários membros (vários streams gzip concatenados) não são suportados.
Perguntas frequentes
O que significa H4sI no início de uma string Base64?
É a forma Base64 de 1F 8B 08, a assinatura do gzip com o byte do método deflate. Uma string que começa com H4sI são dados gzip: decodifique o Base64 e passe os bytes pelo gunzip.
Como decodificar Base64 gzip na linha de comando?
echo 'H4sI…' | base64 --decode | gunzip no Linux e no macOS. Para dados zlib (eJ…), o gunzip recusa o cabeçalho; use python3 -c 'import sys,zlib; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))' depois do passo do Base64.
Por que recebo uma saída binária depois de decodificar o Base64?
Os dados foram compactados antes de serem codificados, então um decodificador de Base64 comum devolve os bytes compactados. Cole a string aqui e ela é decodificada e descompactada de uma vez.
Dá para abrir arquivos .zip ou .tar.gz aqui?
Um .tar.gz é descompactado para o arquivo .tar, que você pode baixar. Arquivos ZIP são outro tipo de contêiner; use Base64 para ZIP para listar e salvar o conteúdo.