К основному содержимому

Проверка прошивки OneKey Pro с помощью исходного кода

Обновлено сегодня

Эта статья поможет вам проверить, соответствует ли прошивка, установленная на вашем аппаратном кошельке OneKey Pro, прошивке с открытым исходным кодом, опубликованной в официальном репозитории OneKey на GitHub. Сравнивая контрольную сумму SHA-256, вы можете убедиться, что прошивка поступает из надежного источника, и гарантировать безопасность вашего устройства.


Что такое контрольная сумма?

Контрольная сумма — это метод проверки целостности данных. Она вычисляет алфавитно-цифровую последовательность фиксированной длины из файла, которая затем может использоваться для подтверждения того, был ли файл изменен.


⚠️ Важные примечания

  • Микросхема защищенного элемента внутри каждого аппаратного кошелька OneKey предварительно загружена на заводе с официальной проверкой мультиподписи.

  • Если на устройстве установлена неофициальная прошивка, при запуске на устройстве будет отображаться «Неофициальная прошивка».

  • В этой статье приведены дополнительные шаги для подтверждения того, точно ли текущая прошивка соответствует версии, выпущенной на GitHub.


Процесс проверки

Шаг 1: Загрузка и установка последней официальной прошивки

  1. Подключите ваш аппаратный кошелек OneKey к компьютеру с помощью USB-кабеля.

  2. Веб-сайт автоматически определит информацию о вашем устройстве. Затем вы сможете выбрать и установить последнюю прошивку.

  3. Следуйте инструкциям на экране и подтвердите установку на вашем аппаратном кошельке.


Шаг 2: Получение контрольной суммы прошивки устройства

  1. На вашем аппаратном кошельке перейдите в раздел Настройки системы → О устройстве.

  2. В разделе информации о прошивке вы увидите версию прошивки и ее контрольную сумму.

    • Пример: 4.9.0[fccbac8-5ff2c88]

      • fccbac8 → Идентификатор версии прошивки

      • 5ff2c88 → Первые семь символов контрольной суммы прошивки


Шаг 3: Расчет контрольной суммы прошивки с GitHub

  1. Найдите версию прошивки, соответствующую вашему устройству, и загрузите файл .bin в разделе Assets.

⚠️ Примечание: Файл .bin содержит несколько частей:

  • MCU (прошивка основного контроллера)

  • Одна или несколько прошивок защищенного элемента (SE)

  • Информация о подписи

Для проверки необходимо извлечь только прошивку MCU.


Извлечение прошивки

Сохраните следующий скрипт как split_firmware.sh (для macOS/Linux):

#!/bin/bash

if [ $# -ne 1 ]; then
echo "Usage: $0 <binary_file>"
exit 1
fi

INPUT_FILE="$1"


TOTAL_FILE_SIZE=$(stat -f %z "$INPUT_FILE")

MAGIC=$(dd if="$INPUT_FILE" bs=1 count=4 2>/dev/null)

calculate_total_size() {
local offset=$1
local size_bytes=$(dd if="$INPUT_FILE" bs=1 skip="$offset" count=4 2>/dev/null | od -An -tu4)
echo $((size_bytes + 1024))
}

if [[ "$MAGIC" == "TRZF" ]]; then
TOTAL_SIZE=$(calculate_total_size 12)
elif [[ "$MAGIC" == "OKTV" ]]; then
HEAD1_SIZE=$(dd if="$INPUT_FILE" bs=1 skip=4 count=4 2>/dev/null | od -An -tu4)
HEAD1_SIZE=$(echo $HEAD1_SIZE)
FILE_SIZE_BYTES=$(dd if="$INPUT_FILE" bs=1 skip=$((HEAD1_SIZE + 12)) count=4 2>/dev/null | od -An -tu4)
TOTAL_SIZE=$((HEAD1_SIZE + 1024 + FILE_SIZE_BYTES))
else
echo "Unknown file format"
exit 1
fi

dd if="$INPUT_FILE" bs=1 count="$TOTAL_SIZE" of=firmware.bin 2>/dev/null

REMAINING_SIZE=$((TOTAL_FILE_SIZE - TOTAL_SIZE))
if [ $REMAINING_SIZE -gt 0 ]; then
SECOND_HEADER=$(dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" count=4 2>/dev/null)
if [[ "$SECOND_HEADER" == "TF89" ]]; then
dd if="$INPUT_FILE" bs=1 skip="$TOTAL_SIZE" of=se.bin 2>/dev/null
echo "Split successfully: firmware.bin and se.bin extracted."
else
echo "Extra data exists but second file header is not 'TF89'. Only firmware.bin is extracted."
fi
else
echo "No extra data, only firmware.bin extracted."
fi

Запустите скрипт:

chmod +x split_firmware.sh ./split_firmware.sh onekey-firmware.bin

После выполнения вы получите файл firmware.bin (тело прошивки MCU).


Расчет контрольной суммы

Выполните следующую команду в терминале:

tail -c +2561 firmware.bin | shasum -a 256 -b

Это выведет длинный хэш SHA-256, например:

abcdef1234567890-

Возьмите первые семь символов, например, abcdef1.


Шаг 4: Сравнение результатов

  • Сравните первые семь символов рассчитанной контрольной суммы с контрольной суммой, отображаемой на вашем устройстве.

  • Если они совпадают, это означает, что ваша прошивка идентична исходному коду, опубликованному на GitHub.


✅ Почему это важно

  • Вы можете быть уверены, что ваше устройство работает под управлением прошивки, собранной непосредственно из официального репозитория OneKey с открытым исходным кодом.

  • Вместе со встроенной проверкой мультиподписи защищенного элемента это обеспечивает целостность и безопасность прошивки вашего аппаратного кошелька.

Нашли ответ на свой вопрос?