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 les appels Ethereum JSON-RPC et les interactions avec les contrats intelligents, prenant en charge plusieurs chaînes et la récupération automatique des ABI. | Kitploit
Outils/GitHubGitHub/uwctcjnwlk/web3-decoder
Analyse des VulnérabilitésRétro-ingénierieSécurité WebTests d'IntrusionSécurité des API
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Extension Burp Suite pour décoder les appels Ethereum JSON-RPC et les interactions avec les contrats intelligents, prenant en charge plusieurs chaînes et la récupération automatique des ABI.

Voir le dépôt
215419il y a 9 joursVé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 conçue pour analyser les opérations blockchain et les interactions avec les contrats intelligents. Elle traite les appels JSON-RPC vers Ethereum et les réseaux compatibles (notamment Polygon, Arbitrum, BSC, et autres)

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.

Pour ajouter vos clés API, vous avez 2 options :

  • Vous pouvez ajouter vos clés API en modifiant le fichier .api_keys.json
  • Vous pouvez ajouter des variables d'environnement portant les mêmes noms que celles du fichier API_KEYS.json
    • ex. : export ETHERSCAN_API=VOTRECLÉAPI

Ajout manuel de l'ABI d'un contrat

L'extension met en cache les ABI téléchargées depuis les explorateurs de blocs comme etherscan dans un dossier nommé .abi_caches au format JSON. Vous pouvez simplement ajouter un nouveau fichier dans ce dossier, en respectant la convention de nommage suivante :

{chain_id}_{contract_address.lower()}.abi

Par exemple :

root@kitploit:~
# Ethereum Mainnet (ID de chaîne 1), contrat 0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b
1_0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b.abi

# Polygon (ID de chaîne 137), contrat 0x447646e84498552e62ecf097cc305eabfff09308
137_0x447646e84498552e62ecf097cc305eabfff09308.abi

Attention utilisateurs Windows & macOS :

Cette documentation s'applique à Windows et Linux ; les utilisateurs macOS peuvent utiliser le fichier DMG.

Vérifiez la présence de Git et Python sur votre système.

https://git-scm.com/install/windows

https://www.python.org/ftp/python/3.13.12/python-3.13.12-amd64.exe

Démarrez une session de terminal en tant qu'administrateur.

Binaires précompilés et environnement virtuel Python3

Cette extension nécessite des bibliothèques python3 comme web3.py qui, malheureusement, ne sont pas disponibles pour python 2.7 pour être utilisées directement avec Jython 2.7. En guise de « hack », la fonctionnalité principale est écrite dans une bibliothèque python 3 qui est exécutée par l'extension via un environnement virtuel python (pour parler de bricolage...)

J'ai créé des binaires précompilés de la bibliothèque python3 utilisée, pour Linux, Windows et Mac OSX. L'extension utilisera ces binaires si elle n'est pas en mesure d'exécuter la bibliothèque. Pour de meilleures performances ou pour le développement, vous pouvez créer un virtualenv et installer comme suit :

root@kitploit:~
cd "web3-decoder"
virtualenv -p python3 venv
source venv/bin/activate
pip install web3 py-evm

L'extension effectuera des appels à la bibliothèque en utilisant le virtualenv créé.

Une fois le virtualenv créé, vous pouvez ajouter l'extension Python en sélectionnant le fichier burp_web3_decoder.py dans l'onglet Extender de Burp Suite

Fonctionnalités et tâches à venir

  • Onglet d'édition Burp ajouté aux requêtes et réponses compatibles
  • Décodage des appels JSON-RPC eth_call
  • Décodage des appels JSON-RPC eth_sendRawTransaction (et de leurs fonctions internes)
  • Décodage des résultats de réponse de eth_call
  • Prise en charge du ré-encodage des fonctions décodées de eth_call
  • Téléchargement automatique de l'ABI du contrat intelligent appelé via les API etherscan (si le contrat est vérifié)
  • Décodage des entrées de fonction à la fois dans eth_call et eth_sendRawTransaction
  • Décodage des entrées de fonction utilisant des contrats « Delegate Proxy »
  • Décodage des entrées de fonction appelées via des contrats « Multicall »
  • Ajout manuel d'ABI de contrats pour les contrats non vérifiés sur etherscan
    • Permettre de le faire depuis l'interface Burp, au lieu d'écrire le JSON dans un fichier
  • Binaires précompilés pour permettre à l'extension de fonctionner sans configuration
  • Prise en charge d'autres réseaux compatibles (Polygon, Arbitrum, Fantom, BSC, etc.)
  • Prise en charge de la re-signature d'une rawTransaction décodée modifiée (nécessite la saisie de la clé privée)

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

Toutes les chaînes prises en charge se trouvent dans le fichier chains.json. Ce sont des chaînes qui disposent d'un explorateur de blocs avec les mêmes API qu'etherscan. Si vous souhaitez ajouter d'autres explorateurs de blocs, ajoutez-les au fichier chains.json, testez-les, et faites une pull request !

  • Ethereum Mainnet
  • Ropsten
  • Rinkeby
  • Goerli
  • Optimism
  • Cronos
  • Kovan
  • BSC
  • Huobi ECO
  • Polygon
  • Fantom
  • Arbitrum
  • Sepolia
  • Aurora
  • Avalanche

Exemples

Pour plus d'exemples, y compris les appels proxy et multicall, consultez le fichier EXAMPLES.md

eth_call :

Brut : image

Décodé : image

eth_sendRawTransaction (test Uniswap v2) :

root@kitploit:~
{
    "method": "eth_sendRawTransaction", 
    "params": [
        "0x02f9015b820539808459682f00850df8475800830493e0947a250d5630b4cf539739df2c5dacb4c659f2488d880de0b6b3a7640000b8e47ff36ab500000000000000000000000000000000000000000000009e0950598867d8000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002105eaa660ff62b14a5e093fc348e13ab63af2e600000000000000000000000000000000000000000000000000000000623b16570000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0fc001a005cfdf9ff11dea2d3e8781cb6ba140ae6e86a0922bfa75938b6f2456f513e24ca057f02b3f7125edb59e22651d503bc296153860e3843f9d495ad21d898c8e20c3"
    ], 
    "id": 4700418092893, 
    "jsonrpc": "2.0"
}

Décodé :

root@kitploit:~
[
  {
    "chain_id": 1337, 
    "access_list": [], 
    "nonce": 0, 
    "r": 2628844986784880378434698689940765181553490914879903463877191830852582236748, 
    "s": 39775559607776431912363889945449043629789293388076288013264795388376358199491, 
    "max_priority_fee_per_gas": 1500000000, 
    "gas": 300000, 
    "max_fee_per_gas": 60000000000, 
    "from": "0x2105Eaa660ff62b14a5e093fc348e13ab63AF2E6", 
    "y_parity": 1, 
    "to": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", 
    "value": 1000000000000000000,
    "data": "0x7ff36ab500000000000000000000000000000000000000000000009e0950598867d8000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000002105eaa660ff62b14a5e093fc348e13ab63af2e600000000000000000000000000000000000000000000000000000000623b16570000000000000000000000000000000000000000000000000000000000000002000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f", 
    "decoded_function": {
      "args": {
        "amountOutMin": 2915256698432979992576, 
        "path": [
          "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", 
          "0x6B175474E89094C44Da98b954EedeAC495271d0F"
        ], 
        "to": "0x2105Eaa660ff62b14a5e093fc348e13ab63AF2E6", 
        "deadline": 1648039511
      }, 
      "function": "swapExactETHForTokens(uint256,address[],address,uint256)", 
      "to": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
      "abi": {
        "outputs": [
          {
            "internalType": "uint256[]", 
            "type": "uint256[]", 
            "name": "amounts"
          }
        ], 
        "inputs": [
          {
            "internalType": "uint256", 
            "type": "uint256", 
            "name": "amountOutMin"
          }, 
          {
            "internalType": "address[]", 
            "type": "address[]", 
            "name": "path"
          }, 
          {
            "internalType": "address", 
            "type": "address", 
            "name": "to"
          }, 
          {
            "internalType": "uint256", 
            "type": "uint256", 
            "name": "deadline"
          }
        ], 
        "stateMutability": "payable", 
        "type": "function", 
        "name": "swapExactETHForTokens"
      }
    }
  }
]

Comment cela fonctionne

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

À titre d'exemple d'utilisation, 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. Pour l'instant, cela fonctionne avec les contrats vérifiés dans l'explorateur de blocs, ou en ajoutant manuellement l'ABI. Dans les versions futures, nous explorerons la possibilité de générer automatiquement une ABI en recherchant les sélecteurs de fonction dans des bases de données publiques.

Le diagramme « flux » suivant montre de manière simplifiée le processus que la bibliothèque eth_decoder suit lors du décodage des appels JSON-RPC eth_call :

image

Limitations connues

  • Le décodage des transactions brutes sous Windows peut avoir une fonctionnalité limitée en raison de la compatibilité des bibliothèques
Télécharger l’outil