Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
web3-decoder — Extension Burp Suite pour décoder le trafic Web3 JSON-RPC, y compris les appels de fonctions de contrats intelligents, les réponses et la résolution ABI, avec prise en charge des proxys et des multicalls. | Kitploit
Outils/GitHubGitHub/nccgroup/web3-decoder
Analyse des VulnérabilitésRétro-ingénierieCollecte d'InformationsSécurité WebTests d'IntrusionSécurité des API
GitHubnccgroup/web3-decoder

web3-decoder

Extension Burp Suite pour décoder le trafic Web3 JSON-RPC, y compris les appels de fonctions de contrats intelligents, les réponses et la résolution ABI, avec prise en charge des proxys et des multicalls.

Voir le dépôt
11518il y a 2 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Web3 Decoder

Web3 Decoder est une extension Burp Suite qui aide à analyser ce qui se passe avec les opérations impliquant les contrats intelligents du web3. Il s'agit principalement d'appels JSON-RPC vers les nœuds Ethereum et les nœuds d'autres réseaux compatibles (comme Polygon, Arbitrum, BSC...)

Téléchargement et installation

Téléchargez le dernier JAR de l'extension — ce lien fournit toujours la version la plus récente :

⬇ web3-decoder.jar (dernière version)

Les versions plus anciennes sont sur la page des versions.

Puis chargez-le dans Burp Suite :

  1. Allez dans Extensions → Installed → Add.
  2. Définissez Extension type sur Java et sélectionnez le web3-decoder.jar téléchargé.
  3. Cliquez sur Next — les onglets Web3 et les onglets d'éditeur Web3 Request/Web3 Response apparaissent une fois le chargement terminé.

Nécessite une version de Burp livrée avec JRE 21 (versions actuelles de Burp Suite). Le JAR est autonome — toutes les dépendances (web3j, etc.) sont incluses.

Compilation depuis les sources

root@kitploit:~
./gradlew jar

Le JAR de l'extension est toujours écrit dans un chemin constant — web3-decoder/build/libs/web3-decoder.jar — quelle que soit la version, vous pouvez donc pointer Burp une seule fois et le laisser se recharger automatiquement lors des reconstructions. La publication est documentée dans docs/RELEASING.md.

Captures d'écran

Voici à quoi ressemblent nos onglets d'éditeur Web3 améliorés après le décodage réussi de vos requêtes et réponses JSON-RPC :

Requêtes et réponses Web3 décodées

Ci-dessous, l'onglet Web3 redessiné, avec tous les paramètres, les ABI détectés, et plus encore ! (Merci Claude Design !)

Onglet Web3

Documentation

La documentation détaillée se trouve dans le dossier docs/ :

  • Architecture — couches, composants et flux clés de décodage/encodage (avec diagrammes).
  • Structure du projet — organisation des répertoires et responsabilités paquet par paquet.
  • Pile technique — dépendances, compilation/empaquetage, exécution et mode CLI.
  • Fonctionnalités — catalogue complet des capacités avec pointeurs d'implémentation.

Clés API des explorateurs de blocs

La plupart des explorateurs de blocs pris en charge, comme etherscan.io, exigent une clé API pour autoriser plus d'une requête toutes les 5 secondes.

La nouvelle interface vous permet de gérer les chaînes, les explorateurs de blocs et les clés API.

Ajout manuel de l'ABI d'un contrat

L'extension met en cache les ABI téléchargés depuis les explorateurs de blocs comme Etherscan. Vous pouvez également les ajouter directement depuis l'onglet Web3, en les obtenant automatiquement depuis l'explorateur de blocs, ou en les ajoutant manuellement.

Fonctionnalités implémentées

  • Intégration Burp
    • Onglet d'éditeur Web3 Request pour les requêtes JSON-RPC (masqué sur le trafic sans eth_call / eth_sendRawTransaction).
    • Onglet d'éditeur Web3 Response pour les réponses JSON-RPC correspondantes.
    • Onglet dédié Web3 dans la suite avec outils de chaîne/ABI/calldata.
    • Lignes de l'historique du proxy annotées avec la signature de fonction décodée dans leur note (décodées hors thread, persistées sur la ligne d'historique en direct).
  • Expérience de l'éditeur décodé
    • Les deux onglets d'éditeur proposent par défaut une vue arborescente structurée, avec une vue JSON à un clic — le JSON reste la source de vérité pour le ré-encodage.
    • La vue JSON conserve la coloration syntaxique et sémantique, les numéros de ligne, l'appariement des parenthèses, la validité en direct et une barre de recherche.
  • Décodage des requêtes JSON-RPC
    • Décode le calldata de eth_call en function + args typés.
    • Prend en charge les charges utiles JSON-RPC simples et par lots.
    • Pour les charges utiles par lots, chaque élément est signalé avec un statut (decoded, skipped, ) et la raison en cas d'omission/échec.

Chaînes prises en charge jusqu'à présent

La liste complète et actuelle des chaînes incluses se trouve dans web3-decoder/src/main/resources/chains.json — l'extension inclut désormais l'ensemble multichaîne Etherscan v2 (Ethereum, Sepolia, BNB Smart Chain, Polygon, Base, Arbitrum, Linea, Blast, Optimism, Avalanche, Gnosis, Scroll, Taiko, Berachain, et bien d'autres, y compris leurs testnets). L'interface vous permet également d'ajouter vos propres chaînes à l'exécution — toute chaîne dont l'explorateur de blocs expose des API de style Etherscan fonctionnera. Voir Fonctionnalités pour les détails de gestion des chaînes (y compris la migration des ID de chaîne obsolètes).

Fonctionnement

Requête JSON-RPC eth_chainId vers le nœud utilisé pour détecter la chaîne sur laquelle nous travaillons et, selon la chaîne, sélectionne une API d'explorateur de blocs en recherchant dans le fichier chains.json.

Pour décoder les appels de fonction, nous avons besoin de l'ABI (Application Binary Interface) du contrat, qui contient toutes les fonctions pouvant être appelées dans le contrat ainsi que leurs entrées et sorties. L'extension résout les ABI dans cet ordre :

  1. ABI en cache pour la chaîne + l'adresse du contrat (persistance au niveau du projet Burp).
  2. ABI intégrés pour les contrats bien connus (par exemple Multicall3).
  3. Recherche dans l'explorateur de blocs (API de style Etherscan) pour les contrats vérifiés.
  4. Pool d'ABI détectés — les ABI que le scanner passif a extraits des bundles frontaux de dapps, indexés par sélecteur de fonction 4 octets. Indépendant de la chaîne.
  5. Repli 4byte — recherche sélecteur → signature auprès de api.4byte.sourcify.dev, avec un ABI synthétique construit à partir de toute correspondance candidate.

Si l'ID de chaîne ne peut pas être déterminé (par exemple, le point de terminaison ne répond pas à eth_chainId), les étapes limitées à la chaîne (1 à 3) sont ignorées et le décodeur essaie quand même les étapes indépendantes de la chaîne (4 et 5).

Services externes et sources de données

Pour décoder le trafic, l'extension communique avec quelques sources externes. Elles sont facultatives et vous pouvez les désactiver depuis l'onglet Web3. Toutes les requêtes sortantes sont envoyées via la pile HTTP de Burp elle-même (api.http().sendRequest), elles respectent donc les paramètres de proxy/TLS en amont de Burp et apparaissent dans le trafic de Burp.

Note de confidentialité : Les recherches d'ABI envoient l'adresse du contrat à l'explorateur de blocs configuré, et le repli 4byte envoie le sélecteur de fonction à api.4byte.sourcify.dev. Les ABI téléchargés sont mis en cache localement afin que les décodages répétés ne refassent pas de requête. La plupart des explorateurs (par exemple etherscan.io) nécessitent une clé API pour plus d'environ 1 requête / 5 secondes — gérez les clés depuis l'onglet Web3.

Le détecteur passif d'ABI lit les corps de réponses HTTP que Burp a déjà capturés et s'exécute entièrement localement — aucune requête n'est générée par la détection elle-même.

Télécharger l’outil
error
  • Décodage des réponses JSON-RPC
    • Décode le result pour les requêtes eth_call précédemment décodées.
    • Prend en charge les réponses simples et par lots, en faisant correspondre les entrées par id JSON-RPC (ou par repli sur l'index).
  • Ré-encodage et flux de modification
    • Vous pouvez modifier les arguments décodés dans l'éditeur de requête et les réécrire en calldata encodé.
    • L'outil autonome de calldata peut décoder et ré-encoder en dehors de l'historique des requêtes.
  • Résolution et mise en cache des ABI
    • Priorité de recherche d'ABI : ABI en cache → intégré → explorateur de blocs (compatible Etherscan) → pool détecté passivement → 4byte.
    • Les ABI téléchargés sont automatiquement mis en cache pour les décodages futurs.
    • La source de l'ABI est suivie (cache, builtin, etherscan, detected ou 4byte) dans la sortie décodée.
  • Détection passive d'ABI (nouveau)
    • Un PassiveScanCheck Burp analyse les corps de réponses HTTP (généralement des bundles JS de dapps minifiés) à la recherche d'ABI Solidity et stocke tout ce qu'il trouve dans un pool limité au projet, indexé par sélecteur de fonction.
    • Gère à la fois le JSON strict et la forme littérale d'objet JS trouvée dans les bundles minifiés, y compris les raccourcis booléens !0 / !1 émis par Terser/esbuild/Svelte.
    • Lorsque la séquence existante cache → intégré → etherscan échoue, le décodeur consulte le pool détecté avant de retomber sur 4byte. La sortie décodée est étiquetée decodeSource: "detected".
    • Fonctionne même lorsque eth_chainId ne peut pas être déterminé : le pool détecté et 4byte sont indépendants de la chaîne, le décodeur les essaie donc quand même plutôt que de refuser catégoriquement.
    • Chaque nouvel ABI déclenche un problème Burp informatif (« Solidity contract ABI detected ») avec la liste complète des méthodes — chaque fonction/événement/erreur avec sa signature canonique et son sélecteur 4 octets — et l'URL où l'ABI a été trouvé.
  • Décodage par repli 4byte
    • Si la recherche d'ABI échoue, la recherche du sélecteur de fonction est effectuée auprès de api.4byte.sourcify.dev.
    • Des définitions d'ABI synthétiques sont générées à partir des signatures candidates et utilisées pour les flux de décodage/ré-encodage.
  • Décodage compatible proxy
    • Détecte les contrats d'implémentation pour les schémas de proxy par délégation et décode à l'aide de l'ABI de l'implémentation.
    • Détecteurs de proxy implémentés : slot ERC1967 et ancien slot ZeppelinOS/OpenZeppelin.
  • Décodage récursif Multicall
    • Décode les appels imbriqués pour les variantes Multicall courantes : aggregate, tryAggregate, aggregate3, aggregate3Value, blockAndAggregate, tryBlockAndAggregate.
    • Décode récursivement les appels imbriqués avec limite de profondeur et statut par nœud.
  • Interface de gestion des chaînes et des explorateurs
    • Ajouter/modifier/supprimer les définitions de chaînes (ID de chaîne, nom, explorateur).
    • Gestion des clés API d'explorateur par chaîne.
    • Prise en charge d'une clé API partagée de la famille Etherscan avec remplacement par chaîne.
    • Charge les chaînes par défaut depuis chains.json et persiste les personnalisations dans les préférences de Burp.
    • Inclut la migration des ID de chaîne obsolètes vers des remplacements modernes (pour les configurations persistées).
  • Interface de gestion des ABI en cache
    • Ajouter manuellement un ABI en cache (coller le JSON) ou le récupérer depuis l'explorateur configuré.
    • Supprimer les entrées d'ABI en cache.
    • Ouvrir les ABI en cache dans l'éditeur, valider le JSON et enregistrer les modifications.
  • Interface de navigation des ABI détectés (nouveau)
    • Panneau côte à côte sous l'onglet Web3 listant chaque ABI que le scanner passif a accumulé.
    • Chaque ligne montre une courte empreinte, le nombre de fonctions et l'URL où l'ABI a été vu pour la première fois.
    • Cliquez sur une ligne pour afficher le JSON de l'ABI en lecture seule dans l'éditeur d'ABI ; supprimez les entrées indésirables du pool.
  • Panneau Décode / Ré-encode de calldata
    • Décode le calldata en utilisant le contexte d'ID de chaîne + adresse de contrat.
    • Prise en charge facultative d'URL RPC pour le décodage compatible proxy dans l'outil autonome.
    • Affiche les détails du décodage multicall imbriqué lorsque cela s'applique.
  • Décodage des appels JSON-RPC eth_sendRawTransaction (et de leurs fonctions internes)
  • ServicePoint de terminaisonUtilisé pour
    Nœud JSON-RPC (le point de terminaison déjà présent dans votre trafic)l'URL RPC proxyfiéeeth_chainId pour détecter la chaîne active, et eth_getStorageAt pour lire les slots d'implémentation du proxy (ERC-1967 / ZeppelinOS hérité).
    Etherscan (v2 multichaîne)https://api.etherscan.io/v2/api?chainid=…Récupération des ABI de contrats vérifiés. Repli sur l'hôte d'explorateur hérité de la chaîne (/api) lorsque la v2 ne prend pas en charge cette chaîne.
    Base de données de signatures 4bytehttps://api.4byte.sourcify.devRésolution d'un sélecteur de fonction 4 octets inconnu en signatures candidates lorsqu'aucun ABI n'est disponible (un ABI synthétique est ensuite construit à partir de la correspondance).