Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
web3-decoder — Estensione Burp Suite per decodificare chiamate JSON-RPC di Ethereum e interazioni con smart contract, con supporto per più chain e recupero automatico degli ABI. | Kitploit
Strumenti/GitHubGitHub/uwctcjnwlk/web3-decoder
Analisi delle VulnerabilitàReverse EngineeringSicurezza WebPenetration TestingSicurezza delle API
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Estensione Burp Suite per decodificare chiamate JSON-RPC di Ethereum e interazioni con smart contract, con supporto per più chain e recupero automatico degli ABI.

Vedi Repository
2154199 giorni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Web3 Decoder

Web3 Decoder è un'estensione per Burp Suite progettata per analizzare operazioni blockchain e interazioni con smart contract. Elabora chiamate JSON-RPC verso Ethereum e reti compatibili (inclusi Polygon, Arbitrum, BSC e altre).

Chiavi API degli esploratori di blocchi

La maggior parte degli esploratori di blocchi supportati, come etherscan.io, richiede una chiave API per consentire più di 1 richiesta ogni 5 secondi.

Per aggiungere le tue chiavi API hai 2 opzioni:

  • Puoi aggiungere le tue chiavi API modificando il file .api_keys.json
  • Puoi aggiungere variabili d'ambiente con gli stessi nomi di quelli presenti nel file API_KEYS.json
    • es.: export ETHERSCAN_API=YOURAPIKEY

Aggiunta manuale dell'ABI di un contratto

L'estensione memorizza nella cache gli ABI scaricati dagli esploratori di blocchi come etherscan all'interno di una cartella denominata .abi_caches in formato JSON. Puoi semplicemente aggiungere un nuovo file in quella cartella, con la seguente convenzione di denominazione:

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

Ad esempio:

root@kitploit:~
# Ethereum Mainnet (chain ID 1), contratto 0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b
1_0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b.abi

# Polygon (chain id 137), contratto 0x447646e84498552e62ecf097cc305eabfff09308
137_0x447646e84498552e62ecf097cc305eabfff09308.abi

Attenzione utenti Windows e macOS:

Questa documentazione si applica a Windows e Linux; gli utenti macOS possono utilizzare il file DMG.

Verifica la presenza di Git e Python sul tuo sistema.

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

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

Avvia una sessione del terminale come amministratore.

Binari precompilati e virtualenv Python3

Questa estensione richiede librerie python3 come web3.py che purtroppo non sono disponibili per python 2.7 per essere utilizzate direttamente con Jython 2.7. Come 'escamotage', la funzionalità principale è scritta in una libreria python 3 che viene eseguita dall'estensione tramite un ambiente virtuale python (che schifezza...)

Ho creato binari precompilati della libreria python3 utilizzata, per Linux, Windows e Mac OSX. L'estensione utilizzerà questi binari se non riesce a eseguire la libreria. Per prestazioni migliori o per lo sviluppo, puoi creare un virtualenv e installare come segue:

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

L'estensione effettuerà chiamate alla libreria utilizzando il virtualenv creato.

Una volta creato il virtualenv, puoi aggiungere l'estensione Python selezionando il file burp_web3_decoder.py nella scheda Extender di Burp Suite

Funzionalità e TODO

  • Scheda Editor di Burp aggiunta a Richieste e Risposte compatibili
  • Decodifica delle chiamate JSON-RPC eth_call
  • Decodifica delle chiamate JSON-RPC eth_sendRawTransaction (e delle loro funzioni interne)
  • Decodifica dei risultati delle risposte da eth_call
  • Supporto per la ri-codifica delle funzioni decodificate di eth_call
  • Download automatico dell'ABI dello smart contract chiamato tramite le API di etherscan (se il contratto è verificato)
  • Decodifica degli input delle funzioni sia in eth_call che in eth_sendRawTransaction
  • Decodifica degli input delle funzioni che utilizzano contratti "Delegate Proxy"
  • Decodifica degli input delle funzioni chiamate tramite contratti "Multicall"
  • Aggiunta manuale degli ABI dei contratti per contratti non verificati su etherscan
    • Consentire di farlo dall'interfaccia di Burp, invece di scrivere il JSON in un file
  • Binari precompilati per consentire all'estensione di funzionare senza configurazione
  • Supporto per altre reti compatibili (Polygon, Arbitrum, Fantom, BSC, ecc.)
  • Supporto per la ri-firma di una rawTransaction decodificata modificata (richiede l'input della privateKey)

Reti supportate finora

Tutte le reti supportate si trovano nel file chains.json. Queste sono reti che dispongono di un esploratore di blocchi con le stesse API di etherscan. Se vuoi aggiungere altri esploratori di blocchi, aggiungili al file chains.json, testali e fai una pull request!

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

Esempi

Per ulteriori esempi, inclusi proxy e chiamate multicall, consulta EXAMPLES.md

eth_call:

Raw: image

Decodificato: image

eth_sendRawTransaction (test Uniswap v2):

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

Decodificato:

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"
      }
    }
  }
]

Come funziona

Richiesta JSON-RPC eth_chainId al nodo in uso per rilevare su quale rete stiamo lavorando e, a seconda della rete, seleziona un'API di esploratore di blocchi cercando nel file chains.json.

Come esempio di utilizzo, per decodificare le chiamate di funzione, abbiamo bisogno dell'ABI (Application Binary Interface) del contratto, che contiene tutte le funzioni che possono essere chiamate nel contratto e i loro input e output. Per ora, funziona con contratti verificati nell'esploratore di blocchi, oppure aggiungendo manualmente l'ABI. Nelle versioni future, esploreremo la possibilità di generare automaticamente un ABI cercando i selettori di funzione in database pubblici.

Il seguente diagramma di "flusso" mostra in modo semplificato il processo che la libreria eth_decoder segue quando decodifica chiamate JSON-RPC eth_call:

image

Limitazioni note

  • La decodifica delle transazioni raw su Windows potrebbe avere funzionalità limitate a causa della compatibilità delle librerie
Scarica lo strumento