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

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

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

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

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

Категории

Все категории
Loading categories
octopus — Инструмент анализа безопасности для модуля WebAssembly (wasm) и смарт-контрактов блокчейна (BTC/ETH/NEO/EOS) | Kitploit
Инструменты/GitHubGitHub/fuzzinglabs/octopus
Статический анализДинамический анализ (песочница)Обратная инженерияФаззингАнализ Бинарных ФайловArchived
GitHubfuzzinglabs/octopus

octopus

Инструмент анализа безопасности для модуля WebAssembly (wasm) и смарт-контрактов блокчейна (BTC/ETH/NEO/EOS)

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

Популярное

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

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

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

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

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

Octopus

made-with-python MIT license

Огромная благодарность QuoScient за спонсирование этого проекта.

Octopus — это фреймворк для анализа безопасности WebAssembly-модулей и смарт-контрактов блокчейна.

Цель Octopus — предоставить простой способ анализа закрытых WebAssembly-модулей и байт-кода смарт-контрактов для более глубокого понимания их внутреннего поведения.

Возможности

  • Обозреватель (Explorer): Реализация JSON-RPC-клиента Octopus для взаимодействия с блокчейн-платформами
  • Дисассемблер (Disassembler): Octopus может преобразовывать байт-код в ассемблерное представление
  • Анализ потока управления (Control Flow Analysis): Octopus может генерировать граф потока управления (CFG)
  • Анализ потока вызовов (Call Flow Analysis): Octopus может генерировать граф потока вызовов (на уровне функций)
  • Преобразование в промежуточное представление (IR conversion, SSA): Octopus может упрощать ассемблер в представление статического единичного присваивания (SSA)
  • Символическое выполнение (Symbolic Execution): Octopus использует символическое выполнение для поиска новых путей в программе

Платформы / Архитектуры

Octopus поддерживает следующие типы программ/смарт-контрактов:

  • WebAssembly-модули (WASM)
  • Скрипты Bitcoin (BTC script)
  • Смарт-контракты Ethereum (EVM bytecode & Ewasm)
  • Смарт-контракты EOS (WASM)
  • Смарт-контракты NEO (AVM bytecode)
BTCETH (EVM)ETH (WASM)EOSNEOWASM
Explorer✔️✔️✔️✔️✔️⭕
Disassembler✔️✔️✔️✔️✔️✔️
Control Flow Analysis✖️✔️✔️✔️✔️✔️
Call Flow Analysis✖️➕✔️✔️➕✔️
IR conversion (SSA)✖️✔️➕➕✖️✔️
Symbolic Execution✖️➕➕➕✖️➕
  • PyPI package ✔️
  • Docker ✔️

✔️ ГОТОВО / ➕ В РАБОТЕ / ✖️ ЗАПЛАНИРОВАНО / ⭕ Н/П

Требования

Octopus поддерживается в Linux (желательно Ubuntu 16.04) и требует Python >=3.5 (желательно 3.6).

Зависимости:

  • Построение графов: graphviz
  • Обозреватель: requests
  • Символическое выполнение: z3-solver
  • Wasm: wasm

Быстрый старт

  • Установите системные зависимости```

Install system dependencies

sudo apt-get update && sudo apt-get install python-pip graphviz xdg-utils -y

- Установка Octopus:```
# Download Octopus
git clone https://github.com/pventuzelo/octopus
cd octopus

# Install Octopus library/CLI and its dependencies
python3 setup.py install

или```

but prefer the first way to install if possible

pip3 install octopus

- Запустить тесты```
# Run tests for all platforms (disassembly, CFG, ...)
./run_tests.sh
# Run tests that require internet access (explorer tests)
./run_explorer_tests.sh

# Run tests for only one platforms
# {btc, eth, eos, neo, wasm}_run_tests.sh
cd octopus/tests/
./wasm_run_tests.sh

Docker контейнер

Docker контейнер, предоставляющий набор инструментов, доступен на docker hub. В терминале выполните следующие команды:``` docker pull smartbugs/octopus docker run -it smartbugs/octopus cd octopus python3 octopus_eth_evm.py -s -f examples/ETH/evm_bytecode/61EDCDf5bb737ADffE5043706e7C5bb1f1a56eEA.bytecode

## Инструменты командной строки

* WebAssembly: [octopus_wasm.py](https://github.com/fuzzinglabs/octopus/blob/master/octopus_wasm.py)
* Ethereum (EVM): [octopus_eth_evm.py](https://github.com/fuzzinglabs/octopus/blob/master/octopus_eth_evm.py)

## Подробные примеры использования API

<details><summary>WebAssembly</summary>
<p>

#### Дизассемблер

Дизассемблирование модуля Wasm:```python
from octopus.arch.wasm.disassembler import WasmDisassembler

FILE = "examples/wasm/samples/helloworld.wasm"

with open(FILE, 'rb') as f:
    module_bytecode = f.read()

disasm = WasmDisassembler()
# return list of functions instructions (list)
print(disasm.disassemble_module(module_bytecode))
#[[<octopus.arch.wasm.instruction.WasmInstruction at 0x7f85e4904278>,<octopus.arch.wasm.instruction.WasmInstruction at 0x7f85e4904f60>,<octopus.arch.wasm.instruction.WasmInstruction at 0x7f85e4904ef0>]]

print()
# return text of functions code
print(disasm.disassemble_module(module_bytecode, r_format='text'))
# func 0
# i32.const 0
# call 0
# end

Дизассемблирование байт-кода wasm:```python from octopus.arch.wasm.disassembler import WasmDisassembler

bytecode in WebAssembly is the function code (i.e. function body)

bytecode = b'\x02\x7fA\x18\x10\x1cA\x00\x0f\x0b'

create a WasmDisassembler object

disasm = WasmDisassembler(bytecode)

disassemble bytecode into a list of WasmInstruction

attributes r_format='list' by default

print(disasm.disassemble())

#[<octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904eb8>, <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904278>, <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904390>, <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904ef0>, <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904f60>, <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4901048>] print() print(disasm.disassemble(r_format='reverse'))

#{0: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4901048>, 1: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904240>, 2: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904f60>, 3: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904ef0>, 4: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904278>, 5: <octopus.arch.wasm.instruction.WasmInstruction object at 0x7f85e4904390>} print() print(disasm.disassemble(r_format='text'))

block -1

i32.const 24

call 28

i32.const 0

return

end

#### ModuleAnalyzer```python
from octopus.arch.wasm.analyzer import WasmModuleAnalyzer

FILE = "examples/wasm/samples/hello_wasm_studio.wasm"

with open(FILE, 'rb') as f:
    module_bytecode = f.read()

# return list of functions instructions (list)
# attributes analysis=True by default
analyzer = WasmModuleAnalyzer(module_bytecode)
Скачать инструмент