Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
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
Herramientas/GitHubGitHub/uwctcjnwlk/web3-decoder
Análisis de VulnerabilidadesIngeniería InversaSeguridad WebPruebas de PenetraciónSeguridad de APIs
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 Repositorio
215419hace 9 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Web3 Decoder

Web3 Decoder es una extensión de Burp Suite diseñada para analizar operaciones de blockchain e interacciones con contratos inteligentes. Procesa llamadas JSON-RPC a Ethereum y redes compatibles (incluyendo Polygon, Arbitrum, BSC, y otras)

Claves API de exploradores de bloques

La mayoría de los exploradores de bloques compatibles, como etherscan.io, requieren una clave API para permitir más de 1 solicitud cada 5 segundos.

Para añadir tus claves API tienes 2 opciones:

  • Puedes añadir tus claves API modificando el archivo .api_keys.json
  • Puedes añadir variables de entorno con los mismos nombres que los del archivo API_KEYS.json
    • p. ej.: export ETHERSCAN_API=TUCLAVEAPI

Añadir manualmente el ABI de un contrato

La extensión almacena en caché los ABIs descargados de los exploradores de bloques como etherscan dentro de una carpeta llamada .abi_caches en formato JSON. Simplemente puedes añadir un nuevo archivo dentro de esa carpeta, con la siguiente convención de nombres:

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

Por ejemplo:

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

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

Atención usuarios de Windows y macOS:

Esta documentación aplica a Windows y Linux; los usuarios de macOS pueden usar el archivo DMG.

Comprueba que Git y Python estén instalados en tu sistema.

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

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

Inicia una sesión de terminal como administrador.

Binarios precompilados y virtualenv de Python3

Esta extensión requiere librerías de python3 como web3.py que desafortunadamente no están disponibles para python 2.7 para usarse directamente con Jython 2.7. Como un 'hack', la funcionalidad principal está escrita en una librería de python 3 que es ejecutada por la extensión a través de un entorno virtual de python (hablando de algo sucio...)

He creado binarios precompilados de la librería de python3 utilizada, para Linux, Windows y Mac OSX. La extensión usará estos binarios si no es capaz de ejecutar la librería. Para un mejor rendimiento o desarrollo, puedes crear un virtualenv, e instalar de la siguiente manera:

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

La extensión hará llamadas a la librería usando el virtualenv creado.

Una vez creado el virtualenv, puedes añadir la extensión de python seleccionando el archivo burp_web3_decoder.py en la pestaña Extender de Burp Suite

Características y TODOs

  • Pestaña de Editor de Burp añadida a Solicitudes y Respuestas compatibles
  • Decodificación de llamadas JSON-RPC eth_call
  • Decodificación de llamadas JSON-RPC eth_sendRawTransaction (y sus funciones internas)
  • Decodificación de resultados de respuesta de eth_call
  • Soporte para re-codificación de funciones decodificadas de eth_call
  • Descarga automática del ABI del contrato inteligente llamado desde las APIs de etherscan (si el contrato está verificado)
  • Decodificación de entradas de funciones tanto en eth_call como en eth_sendRawTransaction
  • Decodificación de entradas de funciones que usan contratos "Delegate Proxy"
  • Decodificación de entradas de funciones llamadas a través de contratos "Multicall"
  • Adición manual de ABIs de contratos para contratos que no están verificados en etherscan
    • Permitir hacer esto desde la interfaz de Burp, en lugar de escribir el JSON a un archivo
  • Binarios precompilados para permitir que la extensión funcione sin configuración
  • Soporte para otras redes compatibles (Polygon, Arbitrum, Fantom, BSC, etc.)
  • Soporte para re-firmar una rawTransaction decodificada modificada (requiere entrada de privateKey)

Cadenas soportadas hasta ahora

Todas las cadenas soportadas se pueden encontrar en el archivo chains.json. Estas son cadenas que tienen un explorador de bloques con las mismas APIs que etherscan. Si quieres añadir más exploradores de bloques, agrégalos al archivo chains.json, pruébalo, ¡y haz un pull request!

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

Ejemplos

Para más ejemplos, incluyendo llamadas de proxy y multicall, consulta el EXAMPLES.md

eth_call:

Crudo: image

Decodificado: image

eth_sendRawTransaction (prueba de 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"
      }
    }
  }
]

Cómo funciona

Solicitud JSON-RPC eth_chainId al nodo en uso para detectar en qué cadena estamos trabajando, y dependiendo de la cadena, selecciona una API de explorador de bloques, buscando en el archivo chains.json.

Como ejemplo de uso, para decodificar llamadas de funciones, necesitamos el ABI (Interfaz Binaria de Aplicación) del contrato, que contiene todas las funciones que se pueden llamar en el contrato y sus entradas y salidas. Por ahora, funciona con contratos verificados en el explorador de bloques, o añadiendo manualmente el ABI. En futuras versiones, exploraremos la posibilidad de generar automáticamente un ABI buscando los selectores de funciones en bases de datos públicas.

El siguiente diagrama de "flujo" muestra de forma simplificada el proceso que sigue la librería eth_decoder al decodificar llamadas JSON-RPC eth_call:

image

Limitaciones conocidas

  • La decodificación de transacciones crudas en Windows puede tener funcionalidad limitada debido a la compatibilidad de librerías
Descargar herramienta