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

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

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

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

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

Категории

Все категории
Loading categories
spidump — Инструмент для восстановления образов SPI flash по захватам логического анализатора | Kitploit
Инструменты/GitHubGitHub/wrongbaud/spidump
Безопасность встроенных системБезопасность IoTОбратная инженерияФорензикаЦифровая криминалистикаАппаратный ХакингАппаратная БезопасностьУтилиты и фреймворкиБезопасность оборудования и IoTАнализ Прошивок
GitHub
4125 дней назадЕщё не проверено

Популярное

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

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

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

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

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

spidump

Инструмент для восстановления образов SPI flash по захватам логического анализатора

Репозиторий

spidump — захват и реконструкция трассировки SPI/QSPI

spidump разбирает захваты логического анализатора при чтении устройством своей SPI/QSPI NOR флеш-памяти при загрузке и реконструирует образ флеш-памяти из трафика чтения — без необходимости прямого чтения чипа. Набор команд флеш-памяти смоделирован с помощью Scapy, поэтому транзакция чтения — это один и тот же логический объект независимо от того, пришла ли она по одному проводу или по четырём.

Поддерживаемые форматы захвата (автоопределение по заголовку)

ФорматЗаголовокПримечания
Таблица анализатора "SPI" Saleae Logic 2name,type,start_time,...,mosi,misoстроки enable/result/disable, один result на байт
Сырая побайтовая таблица SaleaeTime [s],Packet ID,MOSI,MISOодна строка на байт, сгруппировано по Packet ID
Экспорт QSPI-AnalyzerTime [s],Packet ID, Transaction State, DATA, Lines Usedконечный автомат: 1=cmd, 2=addr, 3=dummy, 4=data

Плагин QSPI-Analyzer для Saleae Logic / KingstVIS декодирует кадрирование в quad-режиме (например, 0x6B Fast Read Quad Output, 1-1-4), которое обычный SPI-анализатор не может.

Использование

root@kitploit:~
# Стандартный захват однопроводного SPI (экспорт анализатора Logic 2 SPI)
python main.py examples/bigger-boot.csv -o recovered_flash.bin -v

# Захват Quad SPI (экспорт QSPI-Analyzer) — та же команда, формат определяется автоматически
python main.py big-quad-spi-analyzed-dump.txt -o quad.bin -v

# Объединение однопроводного плеча (U-Boot) с quad-плечом (rootfs) в один образ.
# Устройства, которые загружаются по одному проводу, а затем переключаются на QSPI, оставляют каждый регион в
# отдельном захвате; --merge сшивает их. Чтения, ширина линии данных которых не
# соответствует опкоду (например, quad-чтения, неверно декодированные однопроводным анализатором),
# отбрасываются автоматически, поэтому смешанный захват не может испортить результат.
python main.py single_lane_boot.csv --merge quad_boot.txt -o full.bin -v

# Сырые экспорты без кадрирования по chip-select (Packet ID постоянный) разбиваются по
# паузам простоя автоматически (4x медианного периода байта); переопределите порог с помощью
# --gap SECONDS, или --gap 0 для принудительной группировки по Packet ID
python main.py raw_boot.csv --gap 2e-6 -o raw.bin -v

# Принудительно задать размер флеш-памяти / байт заполнения, если автоопределение размера ошибочно
python main.py capture.txt --flash-size 0x1000000 --fill 0xFF -o out.bin

-v выводит определённый формат, гистограмму транзакций по опкодам, выбранный размер флеш-памяти и покрытие чтения. Непрочитанные регионы заполняются 0xFF (состояние стёртой NOR), поэтому вывод можно безопасно подавать прямо в binwalk.

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

Чтение флеш-памяти — это одна и та же логическая транзакция независимо от ширины шины: опкод, адрес и последовательность байтов данных. Две трассировки ниже читают одни и те же четыре байта (магию SquashFS hsqs по адресу 0x2D0000, взятые из bigger-boot.csv) в однопроводном и quad-режиме:

Однопроводный SPI 0x03 READ

Quad SPI 0x6B FAST_READ_QUAD_OUT

(Перегенерировать с помощью python docs/diagrams/mkwave.py; требуется wavedrom-cli, а для PNG — rsvg-convert.)

  1. Фронтенд-парсер превращает захват в нормализованные записи чтения {cmd, addr, data, lines}.
  2. SPIFlashCmd (Scapy) моделирует заголовок опкода / адреса / dummy; опкоды чтения (одиночные и quad: 0x03 0x0B 0x6B 0xEB 0x6C 0x0C …) — все просто записи в READ_COMMANDS.
  3. reconstruct_image воспроизводит каждое чтение в bytearray, отслеживая покрытие.

Загрузка читает только то, что ей нужно, поэтому покрытие частичное по замыслу — вы восстанавливаете регионы, которых устройство действительно касалось (загрузчик, ядро, смонтированный rootfs). Для устройства, которое загружается по одному проводу, а затем переключается на quad, захватите оба плеча и сшейте их.

Скачать инструмент