Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/uwctcjnwlk/web3-decoder
Анализ уязвимостейОбратная инженерияВеб-безопасностьТестирование на ПроникновениеБезопасность API
GitHubuwctcjnwlk/web3-decoder

web3-decoder

Расширение Burp Suite для декодирования вызовов Ethereum JSON-RPC и взаимодействий со смарт-контрактами, поддерживающее несколько сетей и автоматическое получение ABI.

Репозиторий
2154199 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Web3 Decoder

Web3 Decoder — это расширение для Burp Suite, предназначенное для анализа операций с блокчейном и взаимодействий со смарт-контрактами. Оно обрабатывает JSON-RPC вызовы к Ethereum и совместимым сетям (включая Polygon, Arbitrum, BSC и другие)

API-ключи блокчейн-эксплореров

Большинство поддерживаемых блокчейн-эксплореров, таких как etherscan.io, требуют API-ключ для выполнения более чем 1 запроса каждые 5 секунд.

Чтобы добавить свои API-ключи, у вас есть 2 варианта:

  • Вы можете добавить свои API-ключи, изменив файл .api_keys.json
  • Вы можете добавить переменные окружения с теми же именами, что и в файле API_KEYS.json
    • например: export ETHERSCAN_API=YOURAPIKEY

Ручное добавление ABI контракта

Расширение кэширует загруженные ABI из блокчейн-эксплореров, таких как etherscan, в папке с именем .abi_caches в формате JSON. Вы можете просто добавить новый файл в эту папку, следующего соглашения об именовании:

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

Например:

root@kitploit:~
# Ethereum Mainnet (chain ID 1), контракт 0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b
1_0xfbdca68601f835b27790d98bbb8ec7f05fdeaa9b.abi

# Polygon (chain 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

Это расширение требует библиотеки python3, такие как web3.py, которые, к сожалению, недоступны для python 2.7 для непосредственного использования с Jython 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 вы можете добавить python-расширение, выбрав файл burp_web3_decoder.py на вкладке Extender в Burp Suite

Возможности и TODO

  • Вкладка Burp EditorTab добавлена для совместимых запросов и ответов
  • Декодирование JSON-RPC вызовов eth_call
  • Декодирование JSON-RPC вызовов eth_sendRawTransaction (и их внутренних функций)
  • Декодирование результатов ответов от eth_call
  • Поддержка повторного кодирования декодированных функций eth_call
  • Автоматическая загрузка ABI смарт-контракта через API etherscan (если контракт верифицирован)
  • Декодирование входных данных функций как в eth_call, так и в eth_sendRawTransaction
  • Декодирование входных данных функций, использующих контракты «Delegate Proxy»
  • Декодирование входных данных функций, вызываемых через контракты «Multicall»
  • Ручное добавление ABI контрактов для контрактов, не верифицированных в etherscan
    • Разрешить выполнение этого через интерфейс Burp вместо записи JSON в файл
  • Предкомпилированные бинарные файлы для работы расширения без настройки
  • Поддержка других совместимых сетей (Polygon, Arbitrum, Fantom, BSC и т.д.)
  • Поддержка повторной подписи изменённого декодированного rawTransaction (требуется ввод privateKey)

Поддерживаемые сети на данный момент

Все поддерживаемые сети можно найти в файле chains.json. Это сети, у которых есть блокчейн-эксплорер с теми же API, что и у etherscan. Если вы хотите добавить больше блокчейн-эксплореров, добавьте их в файл chains.json, протестируйте и сделайте pull request!

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

Примеры

Дополнительные примеры, включая proxy и 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"
      }
    }
  }
]

Как это работает

JSON-RPC запрос eth_chainId к используемому узлу для определения сети, с которой мы работаем, и в зависимости от сети выбирается API блокчейн-эксплорера путём поиска в файле chains.json.

В качестве примера использования: для декодирования вызовов функций нам нужен ABI (Application Binary Interface) контракта, который содержит все функции, которые можно вызывать в контракте, а также их входные и выходные данные. На данный момент это работает с верифицированными контрактами в блокчейн-эксплорере или с ручным добавлением ABI. В будущих версиях мы рассмотрим возможность автоматической генерации ABI путём поиска селекторов функций в публичных базах данных.

Следующая диаграмма «потока» упрощённо показывает процесс, который библиотека eth_decoder выполняет при декодировании JSON-RPC вызовов eth_call:

image

Известные ограничения

  • Декодирование raw-транзакций в Windows может иметь ограниченную функциональность из-за совместимости библиотек
Скачать инструмент