So dekodieren Sie eine gzip-Base64-Zeichenkette
- Fügen Sie das Base64 in die Eingabe ein oder legen Sie eine
.gz-,.zz- oder.deflate-Datei ab. Leerzeichen und Zeilenumbrüche werden ignoriert. - Lassen Sie Format auf Automatisch. Die Statuszeile nennt, was erkannt wurde, zum Beispiel „gzip erkannt“.
- Text erscheint im Ausgabefeld, JSON wird formatiert. Bei binärer Ausgabe wird der Dateityp erkannt, und es gibt eine Schaltfläche Herunterladen.
- Bei gzip-Eingaben zeigen die Metadaten außerdem Originalname und Änderungszeit, sofern der Absender sie gespeichert hat.
gzip, zlib und Deflate unterscheiden
Alle drei nutzen dieselbe DEFLATE-Komprimierung und unterscheiden sich nur in der Hülle. Das sieht man an den ersten Base64-Zeichen:
| Beginnt mit | Format | Typische Quelle |
|---|---|---|
H4sI | gzip (1F 8B 08) | gzip, GZIPOutputStream, HTTP-Bodys, CloudWatch Logs |
eJ | zlib, Standardstufe (78 9C) | zlib.compress(), PHP gzcompress(), PDF-Streams |
eNo–eNr | zlib, beste Komprimierung (78 DA) | Stufe 7–9 |
eAE–eAH, eF4–eF7 | zlib, schnellste und niedrige Stufen (78 01, 78 5E) | Stufe 1 bis 5 |
| kein festes Präfix | Raw Deflate | SAML-Redirect-Binding, PHP gzdeflate(), ZIP-Einträge |
SDRzSU | gzip, zweimal Base64-kodiert | Helm-Release-Secrets |
Raw Deflate hat keine Signatur, daher probiert die automatische Erkennung es erst, wenn gzip und zlib scheitern. Auch Brotli hat keine Signatur und kommt zuletzt an die Reihe, sofern der Browser es unterstützt.
Payloads aus der Praxis
AWS CloudWatch Logs: Subscription-Events erreichen Lambda als {"awslogs": {"data": "H4sI…"}}. Fügen Sie den Wert von data ein, um das JSON mit logGroup, logStream und logEvents zu lesen.
Helm-3-Release-Secrets enthalten Base64 von gzip-komprimiertem JSON, das Kubernetes noch einmal Base64-kodiert. In der Shell:
kubectl get secret sh.helm.release.v1.myapp.v3 -o jsonpath='{.data.release}' \
| base64 --decode | base64 --decode | gunzip | jq -r .manifest
Im Browser dekodieren Sie die äußere Schicht mit dem Kubernetes-Secret-Decoder oder dem Base64-Decoder und fügen das Ergebnis H4sI… dann auf dieser Seite ein.
SAML-Redirect-Nachrichten sind Raw Deflate. Sie lassen sich auch hier dekodieren, der SAML-Decoder übernimmt aber zusätzlich die URL-Dekodierung und fasst das XML zusammen.
Dekodieren in Python und 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
Für Raw Deflate verwenden Sie in Python zlib.decompress(raw, -15) und in Node zlib.inflateRawSync(). Siehe Base64 in Python und Base64 in Node.js.
Fehler und Grenzen
- „Das ist gültiges Base64, aber keine gzip-, zlib- oder Raw-Deflate-Daten.“ Die Zeichenkette wurde nie komprimiert. Versuchen Sie den Base64-Decoder oder, bei Binärdaten, Base64 in Datei.
- „Das sind keine gültigen gzip-Daten, oder sie sind abgeschnitten.“ Ein Teil der Zeichenkette fehlt, oft abgeschnitten durch ein Zeilenlimit im Log. Kopieren Sie sie erneut aus der Quelle.
- „Zusätzliche Bytes nach dem komprimierten Stream wurden ignoriert.“ Hinter dem Ende des Streams wurde etwas angehängt. Die Daten davor bleiben erhalten.
- „Die entpackten Daten sind größer als 256.0 MB, daher wurde das Entpacken abgebrochen (mögliche Zip-Bombe).“ Die Ausgabe ist begrenzt, um vor Dekomprimierungsbomben zu schützen. Für so große Daten nehmen Sie lokal
gunzip. - Mehrteilige gzip-Dateien (mehrere aneinandergehängte gzip-Streams) werden nicht unterstützt.
Häufige Fragen
Was bedeutet H4sI am Anfang einer Base64-Zeichenkette?
Es ist die Base64-Form von 1F 8B 08, der gzip-Signatur mit dem Byte für die Methode Deflate. Eine Zeichenkette, die mit H4sI beginnt, enthält gzip-Daten: Dekodieren Sie das Base64 und entpacken Sie die Bytes mit gunzip.
Wie dekodiere ich Base64-gzip auf der Kommandozeile?
echo 'H4sI…' | base64 --decode | gunzip unter Linux und macOS. Bei zlib-Daten (eJ…) lehnt gunzip den Header ab; verwenden Sie nach dem Base64-Schritt python3 -c 'import sys,zlib; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))'.
Warum bekomme ich nach dem Base64-Dekodieren Binärdaten?
Die Daten wurden vor dem Kodieren komprimiert, deshalb liefert ein einfacher Base64-Decoder die komprimierten Bytes. Fügen Sie die Zeichenkette hier ein, dann wird sie in einem Schritt dekodiert und entpackt.
Kann das Tool .zip- oder .tar.gz-Dateien öffnen?
Eine .tar.gz wird zum .tar-Archiv entpackt, das Sie herunterladen können. ZIP-Archive sind ein anderes Containerformat; mit Base64 in ZIP können Sie sie auflisten und speichern.