Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/uwctcjnwlk/web3-decoder
漏洞分析逆向工程Web安全渗透测试API 安全
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Burp Suite 扩展,用于解码以太坊 JSON-RPC 调用和智能合约交互,支持多条链并自动获取 ABI。

查看仓库
2154199天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Web3 Decoder

Web3 Decoder 是一款 Burp Suite 扩展,用于分析区块链操作和智能合约交互。它处理针对以太坊及兼容网络(包括 Polygon、Arbitrum、BSC 等)的 JSON-RPC 调用。

区块浏览器 API 密钥

大多数受支持的区块浏览器(如 etherscan.io)都要求提供 API 密钥,以允许每 5 秒超过 1 次请求。

要添加您的 API 密钥,您有 2 种选择:

  • 您可以通过修改 .api_keys.json 文件来添加 API 密钥
  • 您可以添加与 API_KEYS.json 文件中同名的环境变量
    • 例如:export ETHERSCAN_API=YOURAPIKEY

手动添加合约的 ABI

该扩展会将从区块浏览器(如 etherscan)下载的 ABI 缓存到名为 .abi_caches 的文件夹中,格式为 JSON。您可以简单地在该文件夹中添加一个新文件,命名约定如下:

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

例如:

root@kitploit:~
# 以太坊主网(链 ID 1),合约 0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b
1_0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b.abi

# Polygon(链 ID 137),合约 0x447646e84498552e62ecf097cc305eabfff09308
137_0x447646e84498552e62ecf097cc305eabfff09308.abi

Windows 和 macOS 用户请注意:

本文档适用于 Windows 和 Linux;macOS 用户可以使用 。

DMG 文件

检查您系统上的 Git 和 Python。

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

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

以管理员身份启动终端会话。

预编译二进制文件和 Python3 虚拟环境

此扩展需要 python3 库(如 web3.py),遗憾的是这些库不适用于 python 2.7,无法直接与 Jython 2.7 一起使用。作为一种“变通方法”,主要功能是用 python 3 库编写的,该库由扩展通过 python 虚拟环境执行(说起来有点脏...)

我已经为所使用的 python3 库创建了适用于 Linux、Windows 和 Mac OSX 的预编译二进制文件。如果扩展无法执行该库,它将使用这些二进制文件。为了获得更好的性能或进行开发,您可以创建一个虚拟环境,并按如下方式安装:

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

扩展将使用创建的虚拟环境调用该库。

一旦虚拟环境创建完成,您可以通过在 Burp Suite 的 Extender 选项卡中选择 burp_web3_decoder.py 文件来添加 python 扩展。

功能和待办事项

  • 为兼容的请求和响应添加 Burp EditorTab
  • 解码 eth_call JSON-RPC 调用
  • 解码 eth_sendRawTransaction JSON-RPC 调用(及其内部函数)
  • 解码 eth_call 的响应结果
  • 支持重新编码已解码的 eth_call 函数
  • 从 etherscan API 自动下载所调用智能合约的 ABI(如果合约已验证)
  • 解码 eth_call 和 eth_sendRawTransaction 中的函数输入
  • 解码使用“Delegate Proxy”合约的函数输入
  • 解码通过“Multicall”合约调用的函数输入
  • 为未在 etherscan 中验证的合约手动添加合约 ABI
    • 允许从 Burp 界面执行此操作,而不是将 JSON 写入文件
  • 预编译二进制文件,使扩展无需设置即可工作
  • 支持其他兼容网络(Polygon、Arbitrum、Fantom、BSC 等)
  • 支持重新签名修改后的已解码 rawTransaction(需要输入 privateKey)

目前支持的链

所有受支持的链都可以在 chains.json 文件中找到。这些链都有与 etherscan 具有相同 API 的区块浏览器。如果您想添加更多区块链浏览器,请将其添加到 chains.json 文件中,进行测试,然后发起拉取请求!

  • 以太坊主网
  • Ropsten
  • Rinkeby
  • Goerli
  • Optimism
  • Cronos
  • Kovan
  • BSC
  • Huobi ECO
  • Polygon
  • Fantom
  • Arbitrum
  • Sepolia
  • Aurora
  • Avalanche

示例

更多示例(包括代理和 multicall 调用),请参阅 EXAMPLES.md

eth_call:

原始: image

已解码: image

eth_sendRawTransaction(Uniswap v2 测试):

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

已解码:

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

工作原理

向正在使用的节点发送 eth_chainId JSON-RPC 请求,以检测我们正在处理哪条链,并根据该链,通过搜索 chains.json 文件来选择区块浏览器 API。

作为使用示例,要解码函数调用,我们需要合约的 ABI(应用程序二进制接口),其中包含合约中所有可调用的函数及其输入和输出。目前,它适用于区块浏览器中已验证的合约,或通过手动添加 ABI。在未来的版本中,我们将探索通过搜索公共数据库中的函数选择器来自动生成 ABI 的可能性。

以下“流程”图以简化的方式展示了 eth_decoder 库在解码 eth_call JSON-RPC 调用时所遵循的过程:

image

已知限制

  • 在 Windows 上解码原始交易可能因库兼容性问题而功能受限
下载工具