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

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

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

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

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

Категории

Все категории
Loading categories
web3-decoder — Расширение Burp Suite для декодирования Web3 JSON-RPC трафика, включая вызовы функций смарт-контрактов, ответы и разрешение ABI с поддержкой прокси-контрактов и multicall. | Kitploit
Инструменты/GitHubGitHub/nccgroup/web3-decoder
Анализ уязвимостейОбратная инженерияСбор информацииВеб-безопасностьТестирование на ПроникновениеБезопасность API
GitHubnccgroup/web3-decoder

web3-decoder

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

Репозиторий
115182 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Web3 Decoder

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

Загрузка и установка

Загрузите последний JAR-файл расширения — по этой ссылке всегда доступен самый свежий релиз:

⬇ web3-decoder.jar (последняя версия)

Более старые версии находятся на странице релизов.

Затем загрузите его в Burp Suite:

  1. Перейдите в Extensions → Installed → Add.
  2. Установите тип расширения Java и выберите загруженный web3-decoder.jar.
  3. Нажмите Next — вкладка Web3 и вкладки редактора Web3 Request/Web3 Response появятся после загрузки.

Требуется версия Burp с встроенным JRE 21 (текущие версии Burp Suite). JAR-файл самодостаточен — все зависимости (web3j и т.д.) включены в него.

Сборка из исходного кода

root@kitploit:~
./gradlew jar

JAR-файл расширения всегда записывается по постоянному пути — web3-decoder/build/libs/web3-decoder.jar — независимо от версии, поэтому вы можете один раз указать на него Burp и позволить ему автоматически перезагружаться при пересборках. Процесс релиза описан в docs/RELEASING.md.

Скриншоты

Так выглядят наши улучшенные вкладки редактора Web3 после успешного декодирования ваших JSON-RPC запросов и ответов:

Декодированные запросы и ответы Web3

Ниже — вкладка Web3 в новом дизайне, со всеми настройками, обнаруженными ABI и не только! (Спасибо Claude Design!)

Вкладка Web3

Документация

Подробная документация находится в папке docs/:

  • Архитектура — слои, компоненты и ключевые потоки декодирования/кодирования (со схемами).
  • Структура проекта — структура каталогов и обязанности пакетов.
  • Технологический стек — зависимости, сборка/упаковка, среда выполнения и CLI-режим.
  • Возможности — полный каталог возможностей с указателями на реализацию.

API-ключи блокчейн-обозревателей

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

Новый интерфейс позволяет управлять сетями, блокчейн-обозревателями и API-ключами.

Добавление ABI контракта вручную

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

Реализованные возможности

  • Интеграция с Burp
    • Вкладка редактора Web3 Request для JSON-RPC запросов (скрывается для трафика без eth_call / eth_sendRawTransaction).
    • Вкладка редактора Web3 Response для соответствующих JSON-RPC ответов.
    • Отдельная вкладка набора Web3 с инструментами для сетей/ABI/calldata.
    • Строки истории прокси с аннотацией в заметке в виде декодированной сигнатуры функции (декодирование выполняется в фоновом потоке и сохраняется в активной строке истории).
  • Интерфейс декодированного редактора
    • Обе вкладки редактора по умолчанию показывают структурированное дерево, а JSON-представление доступно одним переключателем — JSON остаётся источником истины для повторного кодирования.
    • JSON-представление сохраняет синтаксическую и семантическую подсветку, номера строк, сопоставление скобок, проверку валидности в реальном времени и строку поиска.
  • Декодирование JSON-RPC запросов
    • Декодирует calldata из eth_call в function + типизированные args.
    • Поддерживает одиночные и пакетные JSON-RPC запросы.
    • Для пакетных запросов каждый элемент отображается со статусом (decoded, skipped, ) и причиной при пропуске/ошибке.

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

Полный актуальный список встроенных сетей находится в web3-decoder/src/main/resources/chains.json — расширение теперь включает мультичейн-набор Etherscan v2 (Ethereum, Sepolia, BNB Smart Chain, Polygon, Base, Arbitrum, Linea, Blast, Optimism, Avalanche, Gnosis, Scroll, Taiko, Berachain и многие другие, включая их тестнеты). Интерфейс также позволяет добавлять собственные сети во время выполнения — подойдёт любая сеть, чей блокчейн-обозреватель предоставляет API в стиле Etherscan. Сведения об управлении сетями (включая миграцию устаревших chain ID) см. в разделе Возможности.

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

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

Чтобы декодировать вызовы функций, нам нужен ABI (Application Binary Interface) контракта, который содержит все функции, которые можно вызывать в контракте, а также их входные и выходные параметры. Расширение ищет ABI в следующем порядке:

  1. Кэшированный ABI для сети + адреса контракта (постоянное хранение в рамках проекта Burp).
  2. Встроенные ABI для известных контрактов (например, Multicall3).
  3. Блокчейн-обозреватель (API в стиле Etherscan) для верифицированных контрактов.
  4. Пул обнаруженных ABI — ABI, извлечённые пассивным сканером из фронтенд-бандлов dapp, индексируются по 4-байтовому селектору функции. Не зависят от сети.
  5. Запасной вариант 4byte — поиск сигнатуры по селектору в api.4byte.sourcify.dev с построением синтетического ABI из любого подходящего кандидата.

Если chain ID не может быть определён (например, конечная точка не отвечает на eth_chainId), шаги, привязанные к сети (1–3), пропускаются, и декодер всё равно пытается выполнить не зависящие от сети шаги (4 и 5).

Внешние сервисы и источники данных

Для декодирования трафика расширение обращается к нескольким внешним источникам. Они необязательны, и вы можете отключить их на вкладке Web3. Все исходящие запросы отправляются через собственный HTTP-стек Burp (api.http().sendRequest), поэтому они учитывают настройки вышестоящего прокси/TLS в Burp и отображаются в трафике Burp.

Примечание о конфиденциальности: при поиске ABI адрес контракта отправляется настроенному блокчейн-обозревателю, а запасной вариант 4byte отправляет селектор функции в api.4byte.sourcify.dev. Загруженные ABI кэшируются локально, поэтому при повторном декодировании запросы не повторяются. Большинству обозревателей (например, etherscan.io) требуется API-ключ для более чем ~1 запроса / 5 секунд — управляйте ключами на вкладке Web3.

Пассивный детектор ABI читает тела HTTP-ответов, которые Burp уже перехватил, и работает полностью локально — само обнаружение не создаёт трафика.

Скачать инструмент
error
  • Декодирование JSON-RPC ответов
    • Декодирует result для ранее декодированных запросов eth_call.
    • Поддерживает одиночные и пакетные ответы, сопоставляя записи по JSON-RPC id (или по индексу как запасной вариант).
  • Повторное кодирование и редактирование
    • Вы можете редактировать декодированные аргументы в редакторе запросов и записывать их обратно в закодированный calldata.
    • Отдельный инструмент calldata может декодировать и повторно кодировать данные вне истории запросов.
  • Поиск и кэширование ABI
    • Приоритет поиска ABI: кэшированный ABI → встроенный → блокчейн-обозреватель (совместимый с Etherscan) → пул пассивно обнаруженных → 4byte.
    • Загруженные ABI автоматически кэшируются для будущего декодирования.
    • Источник ABI отслеживается (cache, builtin, etherscan, detected или 4byte) в декодированном выводе.
  • Пассивное обнаружение ABI (новое)
    • PassiveScanCheck в Burp сканирует тела HTTP-ответов (как правило, минифицированные JS-бандлы dapp) на наличие Solidity ABI и сохраняет всё найденное в пуле в рамках проекта, индексируемом по селектору функции.
    • Обрабатывает как строгий JSON, так и форму JS-объектных литералов, встречающуюся в минифицированных бандлах, включая булевы сокращения !0 / !1, генерируемые Terser/esbuild/Svelte.
    • Когда цепочка cache → builtin → etherscan не срабатывает, декодер обращается к пулу обнаруженных ABI, прежде чем перейти к 4byte. Декодированный вывод помечается decodeSource: "detected".
    • Работает, даже когда eth_chainId не может быть определён: пул обнаруженных ABI и 4byte не зависят от сети, поэтому декодер всё равно пытается их использовать, а не отказывается сразу.
    • Каждый новый ABI создаёт информационное уведомление Burp («Solidity contract ABI detected») с полным списком методов — каждая функция/событие/ошибка с её канонической сигнатурой и 4-байтовым селектором — и URL, где ABI был найден.
  • Запасное декодирование через 4byte
    • Если поиск ABI не удался, выполняется поиск селектора функции в api.4byte.sourcify.dev.
    • Из сигнатур-кандидатов генерируются синтетические определения ABI, используемые для декодирования/повторного кодирования.
  • Декодирование с учётом прокси
    • Обнаруживает контракты реализации для паттернов делегирующих прокси и декодирует по ABI реализации.
    • Реализованные детекторы прокси: слот ERC1967 и устаревший слот ZeppelinOS/OpenZeppelin.
  • Рекурсивное декодирование Multicall
    • Декодирует вложенные вызовы для распространённых вариантов Multicall: aggregate, tryAggregate, aggregate3, aggregate3Value, blockAndAggregate, tryBlockAndAggregate.
    • Рекурсивно декодирует вложенные вызовы с ограничением глубины и статусом для каждого узла.
  • Интерфейс управления сетями и обозревателями
    • Добавление/изменение/удаление определений сетей (chain ID, имя, обозреватель).
    • Управление API-ключами обозревателей для каждой сети.
    • Поддержка общего API-ключа для семейства Etherscan с переопределением для конкретной сети.
    • Загружает сети по умолчанию из chains.json и сохраняет настройки в параметрах Burp.
    • Включает миграцию устаревших chain ID на современные замены (для сохранённых конфигураций).
  • Интерфейс управления кэшированными ABI
    • Добавление кэшированного ABI вручную (вставка JSON) или загрузка из настроенного обозревателя.
    • Удаление записей кэшированных ABI.
    • Открытие кэшированных ABI в редакторе, проверка JSON и сохранение изменений.
  • Интерфейс просмотра обнаруженных ABI (новое)
    • Боковая панель на вкладке Web3, перечисляющая все ABI, накопленные пассивным сканером.
    • Каждая строка показывает краткий отпечаток, количество функций и URL, где ABI был впервые обнаружен.
    • Нажмите на строку, чтобы просмотреть JSON ABI в режиме только для чтения в редакторе ABI; ненужные записи можно удалить из пула.
  • Панель декодирования / повторного кодирования calldata
    • Декодирование calldata с использованием chain ID и адреса контракта.
    • Необязательная поддержка RPC URL для декодирования с учётом прокси в отдельном инструменте.
    • Отображает детали декодирования вложенных multicall, когда это применимо.
  • Декодирование JSON-RPC вызовов eth_sendRawTransaction (и их внутренних функций)
  • СервисКонечная точкаНазначение
    JSON-RPC узел (конечная точка уже в вашем трафике)проксируемый RPC URLeth_chainId для определения активной сети и eth_getStorageAt для чтения слотов реализации прокси (ERC-1967 / устаревший ZeppelinOS).
    Etherscan (v2 multichain)https://api.etherscan.io/v2/api?chainid=…Получение ABI верифицированных контрактов. Если v2 не поддерживает сеть, используется устаревший хост обозревателя сети (/api).
    База сигнатур 4bytehttps://api.4byte.sourcify.devПоиск сигнатур-кандидатов для неизвестного 4-байтового селектора функции, когда ABI недоступен (затем из совпадения строится синтетический ABI).