Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
web3-decoder — Burp Suite拡張機能で、Ethereum JSON-RPC呼び出しとスマートコントラクトのやり取りをデコードし、複数のチェーンと自動ABI取得に対応します。 | Kitploit
ツール/GitHubGitHub/uwctcjnwlk/web3-decoder
脆弱性分析リバースエンジニアリングウェブセキュリティペネトレーションテストAPIセキュリティ
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Burp Suite拡張機能で、Ethereum JSON-RPC呼び出しとスマートコントラクトのやり取りをデコードし、複数のチェーンと自動ABI取得に対応します。

リポジトリを見る
2154199日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Web3 Decoder

Web3 Decoder は、ブロックチェーン操作とスマートコントラクトのやり取りを分析するために設計された Burp Suite 拡張機能です。Ethereum および互換性のあるネットワーク(Polygon、Arbitrum、BSC など)への JSON-RPC 呼び出しを処理します。

ブロックエクスプローラー API キー

etherscan.io など、サポートされているほとんどのブロックエクスプローラーでは、5 秒間に 1 回以上のリクエストを許可するために API キーが必要です。

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:~
# Ethereum メインネット (チェーン 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 Virtualenv

この拡張機能には web3.py などの python3 ライブラリが必要ですが、残念ながらこれらは Jython 2.7 で直接使用するための python 2.7 では利用できません。「ハック」として、メイン機能は python 3 ライブラリで記述されており、拡張機能は python 仮想環境を通じてそのライブラリを実行します(汚い話ですが...)

使用される python3 ライブラリのプリコンパイル済みバイナリを、Linux、Windows、Mac OSX 用に作成しました。拡張機能は、ライブラリを実行できない場合にこれらのバイナリを使用します。パフォーマンス向上や開発のためには、virtualenv を作成し、次のようにインストールできます:

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

拡張機能は、作成された virtualenv を使用してライブラリを呼び出します。

virtualenv が作成されたら、Burp Suite の Extender タブで burp_web3_decoder.py ファイルを選択して python 拡張機能を追加できます。

機能と TODO

  • 互換性のあるリクエストとレスポンスに 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 の手動追加
    • JSON をファイルに書き込む代わりに、Burp インターフェースからこれを行うことを許可
  • セットアップなしで拡張機能を動作させるためのプリコンパイル済みバイナリ
  • その他の互換性のあるネットワーク(Polygon、Arbitrum、Fantom、BSC など)のサポート
  • 変更されたデコード済み rawTransaction の再署名のサポート(privateKey の入力が必要)

これまでにサポートされているチェーン

サポートされているすべてのチェーンは chains.json ファイルにあります。これらは、etherscan と同じ API を持つブロックエクスプローラーがあるチェーンです。さらにブロックチェーンエクスプローラーを追加したい場合は、chains.json ファイルに追加してテストし、プルリクエストを作成してください!

  • Ethereum メインネット
  • Ropsten
  • Rinkeby
  • Goerli
  • Optimism
  • Cronos
  • Kovan
  • BSC
  • Huobi ECO
  • Polygon
  • Fantom
  • Arbitrum
  • Sepolia
  • Aurora
  • Avalanche

例

プロキシやマルチコール呼び出しを含むその他の例については、EXAMPLES.md を参照してください。

eth_call:

Raw: image

Decoded: image

eth_sendRawTransaction (Uniswap v2 テスト):

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

Decoded:

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 を手動で追加することで動作します。将来のリリースでは、公開データベースで関数セレクターを検索して ABI を自動生成する可能性を検討します。

次の「フロー」図は、eth_decoder ライブラリが eth_call JSON-RPC 呼び出しをデコードするときに従うプロセスを簡略化して示しています:

image

既知の制限事項

  • Windows での raw トランザクションのデコードは、ライブラリの互換性により機能が制限される場合があります。
ツールをダウンロード