
Burp-Suite-Erweiterung zum Dekodieren von Web3-JSON-RPC-Traffic, einschließlich Smart-Contract-Funktionsaufrufen, Antworten und ABI-Auflösung mit Proxy- und Multicall-Unterstützung.
Web3 Decoder ist eine Burp-Suite-Erweiterung, die dabei hilft zu analysieren, was bei den Operationen mit Smart Contracts des Web3 vor sich geht. Dabei handelt es sich hauptsächlich um JSON-RPC-Aufrufe an Ethereum-Knoten und Knoten anderer kompatibler Netzwerke (wie Polygon, Arbitrum, BSC...)
Lade die neueste Erweiterungs-JAR herunter – dieser Link liefert immer die neueste Version:
Ältere Versionen findest du auf der Releases-Seite.
Lade sie dann in Burp Suite:
web3-decoder.jar.Web3-Tab und die Editor-Tabs Web3 Request/Web3 Response.Erfordert eine Burp-Version, die mit JRE 21 gebündelt ist (aktuelle Burp-Suite-Versionen). Die JAR ist eigenständig – alle Abhängigkeiten (web3j usw.) sind enthalten.
./gradlew jar
Die Erweiterungs-JAR wird unabhängig von der Version immer in einen festen Pfad geschrieben – web3-decoder/build/libs/web3-decoder.jar –, sodass du Burp einmal darauf zeigen lassen kannst und sie bei Neubauten automatisch neu geladen wird. Das Releasing ist in docs/RELEASING.md dokumentiert.
So sehen unsere verbesserten Web3-Editor-Tabs nach dem erfolgreichen Dekodieren deiner JSON-RPC-Anfragen und -Antworten aus:

Darunter der neu gestaltete Web3-Tab mit allen Einstellungen, erkannten ABIs und mehr! (Danke an Claude Design!)

Ausführliche Dokumentation befindet sich im Ordner docs/:
Die meisten unterstützten Block-Explorer wie etherscan.io erfordern einen API-Schlüssel, um mehr als 1 Anfrage pro 5 Sekunden zu erlauben.
Die neue Oberfläche ermöglicht dir die Verwaltung der Chains, Block-Explorer und API-Schlüssel.
Die Erweiterung zwischenspeichert die heruntergeladenen ABIs von den Block-Explorern wie Etherscan. Du kannst sie auch direkt aus dem Web3-Tab hinzufügen, indem du sie automatisch vom Block-Explorer abrufst oder manuell hinzufügst.
Web3 Request für JSON-RPC-Anfragen (bei Traffic ohne eth_call / eth_sendRawTransaction ausgeblendet).Web3 Response für passende JSON-RPC-Antworten.Web3-Suite-Tab mit Chain-/ABI-/Calldata-Werkzeugen.eth_call-Calldata in function + typisierte args.decoded, skipped, ) und Grund gemeldet, wenn es übersprungen/fehlgeschlagen ist.Die vollständige, aktuelle Liste der gebündelten Chains befindet sich in
web3-decoder/src/main/resources/chains.json —
die Erweiterung enthält jetzt den Etherscan-v2-Multichain-Satz (Ethereum, Sepolia, BNB Smart
Chain, Polygon, Base, Arbitrum, Linea, Blast, Optimism, Avalanche, Gnosis, Scroll,
Taiko, Berachain und viele weitere, einschließlich ihrer Testnets). Die Oberfläche ermöglicht es dir außerdem,
zur Laufzeit eigene Chains hinzuzufügen – jede Chain, deren Block-Explorer Etherscan-ähnliche
APIs bereitstellt, funktioniert. Weitere Details zur Chain-Verwaltung (einschließlich Migration veralteter
Chain-IDs) findest du in Funktionen.
Die Erweiterung sendet eine eth_chainId-JSON-RPC-Anfrage an den verwendeten Knoten, um zu erkennen, an welcher Chain wir arbeiten, und wählt je nach Chain eine Block-Explorer-API aus, indem sie in der Datei chains.json sucht.
Um Funktionsaufrufe zu dekodieren, benötigen wir die ABI (Application Binary Interface) des Vertrags, die alle Funktionen enthält, die im Vertrag aufgerufen werden können, sowie deren Ein- und Ausgaben. Die Erweiterung löst ABIs in dieser Reihenfolge auf:
api.4byte.sourcify.dev, mit einer synthetischen ABI, die aus passenden Kandidaten erstellt wird.Wenn die Chain-ID nicht ermittelt werden kann (z. B. weil der Endpunkt nicht auf eth_chainId antwortet), werden die chain-bezogenen Schritte (1–3) übersprungen und der Dekodierer versucht trotzdem die chain-agnostischen Schritte (4 und 5).
Um Traffic zu dekodieren, spricht die Erweiterung einige externe Quellen an. Diese sind optional und du kannst sie im Web3-Tab deaktivieren. Alle ausgehenden Anfragen werden über Burps eigenen HTTP-Stack (api.http().sendRequest) gesendet, sodass sie Burps Upstream-Proxy-/TLS-Einstellungen respektieren und im Burp-Traffic erscheinen.
Hinweis zum Datenschutz: ABI-Suchen senden die Vertragsadresse an den konfigurierten Block-Explorer, und der 4byte-Fallback sendet den Funktionsselektor an
api.4byte.sourcify.dev. Heruntergeladene ABIs werden lokal zwischengespeichert, sodass wiederholte Dekodierungen nicht erneut abfragen. Die meisten Explorer (z. B. etherscan.io) benötigen für mehr als ~1 Anfrage / 5 Sekunden einen API-Schlüssel – Schlüssel lassen sich imWeb3-Tab verwalten.Der passive ABI-Detektor liest HTTP-Antwortkörper, die Burp bereits erfasst hat, und läuft vollständig lokal – durch die Erkennung selbst wird kein Traffic erzeugt.
errorresult für zuvor dekodierte eth_call-Anfragen.id ab (oder per Index-Fallback).cache, builtin, etherscan, detected oder 4byte).PassiveScanCheck scannt HTTP-Antwortkörper (typischerweise minifizierte Dapp-JS-Bundles) nach Solidity-ABIs und speichert alles Gefundene in einem projektbezogenen Pool, der nach Funktionsselektor indiziert ist.!0 / !1-Booleschen Kurzformen, die von Terser/esbuild/Svelte erzeugt werden.decodeSource: "detected" gekennzeichnet.eth_chainId nicht ermittelt werden kann: Der erkannte Pool und 4byte sind chain-agnostisch, daher versucht der Dekodierer sie trotzdem, anstatt grundsätzlich abzulehnen.api.4byte.sourcify.dev durchgeführt.ERC1967-Slot und Legacy-ZeppelinOS/OpenZeppelin-Slot.aggregate, tryAggregate, aggregate3, aggregate3Value, blockAndAggregate, tryBlockAndAggregate.chains.json und speichert Anpassungen in den Burp-Einstellungen.Web3-Tab, das jede ABI auflistet, die der passive Scanner angesammelt hat.eth_sendRawTransaction-JSON-RPC-Aufrufen (und ihrer inneren Funktionen)| Dienst | Endpunkt | Verwendet für |
|---|
| JSON-RPC-Knoten (der Endpunkt, der bereits in deinem Traffic vorhanden ist) | die proxierte RPC-URL | eth_chainId zur Erkennung der aktiven Chain und eth_getStorageAt zum Lesen der Proxy-Implementierungsslots (ERC-1967 / Legacy-ZeppelinOS). |
| Etherscan (v2 Multichain) | https://api.etherscan.io/v2/api?chainid=… | Abrufen verifizierter Vertrags-ABIs. Fallback auf den Legacy-Explorer-Host einer Chain (/api), wenn v2 diese Chain nicht unterstützt. |
| 4byte-Signaturdatenbank | https://api.4byte.sourcify.dev | Auflösung eines unbekannten 4-Byte-Funktionsselektors zu Kandidatensignaturen, wenn keine ABI verfügbar ist (aus dem Treffer wird dann eine synthetische ABI erstellt). |