Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
web3-decoder — Extensión de Burp Suite para decodificar llamadas JSON-RPC de Ethereum e interacciones con contratos inteligentes, con soporte para múltiples cadenas y recuperación automática de ABI. | Kitploit
Ferramentas/GitHubGitHub/uwctcjnwlk/web3-decoder
Análise de VulnerabilidadesEngenharia ReversaSegurança WebTestes de PenetraçãoSegurança de API
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Extensión de Burp Suite para decodificar llamadas JSON-RPC de Ethereum e interacciones con contratos inteligentes, con soporte para múltiples cadenas y recuperación automática de ABI.

Ver Repositório
215419há 9 diasRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Web3 Decoder

Web3 Decoder é uma extensão do Burp Suite projetada para analisar operações de blockchain e interações com contratos inteligentes. Ela processa chamadas JSON-RPC para Ethereum e redes compatíveis (incluindo Polygon, Arbitrum, BSC e outras)

Chaves de API dos Block Explorers

A maioria dos block explorers suportados, como etherscan.io, exige uma chave de API para permitir mais de 1 requisição a cada 5 segundos.

Para adicionar suas chaves de API, você tem 2 opções:

  • Você pode adicionar suas chaves de API modificando o arquivo .api_keys.json
  • Você pode adicionar variáveis de ambiente com os mesmos nomes dos que estão no arquivo API_KEYS.json
    • ex.: export ETHERSCAN_API=YOURAPIKEY

Adicionando manualmente o ABI de um contrato

A extensão armazena em cache os ABIs baixados dos block explorers como o etherscan dentro de uma pasta chamada .abi_caches em formato JSON. Você pode simplesmente adicionar um novo arquivo dentro dessa pasta, com a seguinte convenção de nomenclatura:

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

Por exemplo:

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

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

Atenção Usuários de Windows & macOS:

Esta documentação se aplica a Windows e Linux; usuários de macOS podem usar o arquivo DMG.

Verifique se há Git e Python no seu sistema.

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

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

Inicie uma sessão de terminal como administrador.

Binários Pré-compilados e Virtualenv Python3

Esta extensão requer bibliotecas python3 como web3.py que, infelizmente, não estão disponíveis para python 2.7 para serem usadas diretamente com Jython 2.7. Como um 'hack', a funcionalidade principal é escrita em uma biblioteca python 3 que é executada pela extensão através de um ambiente virtual python (falando em sujeira...)

Criei binários pré-compilados da biblioteca python3 usada, para Linux, Windows e Mac OSX. A extensão usará esses binários se não for capaz de executar a biblioteca. Para melhor desempenho ou desenvolvimento, você pode criar um virtualenv e instalar da seguinte forma:

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

A extensão fará chamadas à biblioteca usando o virtualenv criado.

Uma vez que o virtualenv é criado, você pode adicionar a extensão python selecionando o arquivo burp_web3_decoder.py na aba Extender do Burp Suite

Recursos e TODOs

  • Aba do Editor do Burp adicionada a Requisições e Respostas compatíveis
  • Decodificação de chamadas JSON-RPC eth_call
  • Decodificação de chamadas JSON-RPC eth_sendRawTransaction (e suas funções internas)
  • Decodificação de resultados de resposta de eth_call
  • Suporte para re-codificação de funções decodificadas de eth_call
  • Download automático do ABI do contrato inteligente chamado pelas APIs do etherscan (se o contrato estiver verificado)
  • Decodificação de entradas de funções tanto em eth_call quanto em eth_sendRawTransaction
  • Decodificação de entradas de funções que usam contratos "Delegate Proxy"
  • Decodificação de entradas de funções chamadas via contratos "Multicall"
  • Adição manual de ABIs de contratos que não estão verificados no etherscan
    • Permitir fazer isso pela interface do Burp, em vez de escrever o JSON em um arquivo
  • Binários pré-compilados para permitir que a extensão funcione sem configuração
  • Suporte para outras redes compatíveis (Polygon, Arbitrum, Fantom, BSC, etc.)
  • Suporte para re-assinar uma rawTransaction modificada decodificada (requer entrada da privateKey)

Chains Suportadas até agora

Todas as chains suportadas podem ser encontradas no arquivo chains.json. Estas são chains que possuem um block explorer com as mesmas APIs do etherscan. Se você quiser adicionar mais block explorers, adicione-os ao arquivo chains.json, teste e faça um pull request!

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

Exemplos

Para mais exemplos, incluindo chamadas de proxy e multicall, veja o EXAMPLES.md

eth_call:

Bruto: image

Decodificado: image

eth_sendRawTransaction (teste Uniswap v2):

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

Decodificado:

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

Como funciona

Requisição JSON-RPC eth_chainId ao nó em uso para detectar em qual chain estamos trabalhando e, dependendo da chain, seleciona uma API de block explorer, pesquisando no arquivo chains.json.

Como exemplo de uso, para decodificar chamadas de funções, precisamos do ABI (Application Binary Interface) do contrato, que contém todas as funções que podem ser chamadas no contrato e suas entradas e saídas. Por enquanto, funciona com contratos verificados no block explorer, ou adicionando manualmente o ABI. Em versões futuras, exploraremos a possibilidade de gerar automaticamente um ABI pesquisando os seletores de funções em bancos de dados públicos.

O seguinte diagrama de "fluxo" mostra de forma simplificada o processo que a biblioteca eth_decoder segue ao decodificar chamadas JSON-RPC eth_call:

image

Limitações Conhecidas

  • A decodificação de transações brutas no Windows pode ter funcionalidade limitada devido à compatibilidade de bibliotecas
Baixar ferramenta