Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

БИВСиСС 4

.docx
Скачиваний:
0
Добавлен:
24.04.2026
Размер:
971.39 Кб
Скачать

Министерство науки и высшего образования Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

Кафедра комплексной информационной безопасности электронно-вычислительных систем (КИБЭВС)

ПОЛУЧЕНИЕ ДАННЫХ ЦЕЛЕВОГО УСТРОЙСТВА ЧЕРЕЗ ПЕРИФЕРИЙНЫЕ ИНТЕРФЕЙСЫ

Отчет по лабораторной работе №4

по дисциплине «Безопасность интернета вещей и сенсорных систем»

Студент гр.

____________

Руководитель

Ст. преподаватель каф. КИБЭВС

Калинин Е.О.

____________

Введение

Цель работы: изучение способов получения доступа к целевому устройству через такие интерфейсы как UART, SPI, I2C. Освоить методологию перехвата и анализа данных на физическом уровне в системах Интернета вещей на примере шины I2C: выполнить настройку и использование Bus Pirate для считывания информации с шины, провести дешифровку обмена между МК и сенсором, интерпретировать и оценить их значимость с позиции возможных векторов атак на IoT–устройство.

1 ХОД РАБОТЫ

Первоочередно бы осуществлен процесс выбора режима работы Bus Pirate и включения встроенных источников питания, что представлено на рисунке 1.1.

Рисунок 1.1 – Выбор режима работы Bus Pirate

Сначала подается команда «m» – вход в меню выбора режима. После выбора режима необходимо установить скорость шины. Ввод 4 соответствует максимальной скорости – 400 кГц. Команда W включает источники питания Bus Pirate 3.3 V и 5 V на выходных пинах. Команда v выводит состояние пинов: показываются уровни напряжений на выводах, что позволяет убедиться в наличии питания и корректной подтяжки линий шины.

После включения питания в таблице Pinstates видно, что на выводах 3.3 V и 5 V присутствуют соответствующие напряжения, а линии SCL/SDA находятся в высоком логическом уровне H, что соответствует состоянию «шина свободна» для интерфейса I2C.

Далее происходит включение встроенных подтягивающих резисторов Bus Pirate и запуск макроса поиска устройств на шине, что представлено на рисунке 1.2.

Рисунок 1.2 – Включение подтягивающих резисторов Bus Pirate

Команда P включает внутренние подтягивающие резисторы – Pull-up resistors ON, подключая линию Vpu к SDA и SCL через резисторы. Для шины I2C это важно, так как драйверы устройств имеют открытый сток, и логическая «1» формируется именно за счёт подтяжки.

Повторный вызов v позволяет убедиться, что на выводе VPU появилось напряжение около 2.4 V, а уровни на линиях SCL и SDA перешли в состояние H при отсутствии активности на шине.

Макросное меню вызывается через (0) и происходит сканирование в результате которого были обнаружены устройства по адресам: 0x88(0x44 W) и 0x89(0x44 R) – 8‑битные адреса записи и чтения устройства с 7‑битным адресом 0x44, которым является датчик освещённости (OPT3001) на плате UMDK-LIT как в примере методички.

Далее происходит обмен с датчиком освещённости по адресу 0x44, а именно запись нового значения в конфигурационный регистр и последующее чтение этого же регистра для проверки, что представлено на рисунке 1.3.

Рисунок 1.3 – Запись и чтение регистра датчика освещённости

Команда «I2C>[0x88 0x01 0xC8 0x11]» состоит из «0x88» – 8‑битный адрес записи устройства (0x44 << 1), «0x01» – номер конфигурационного регистра светового датчика и «0xC8 0x11» – два байта данных, записываемые в регистр.

В методичке приведён пример изменения стандартного значения регистра конфигурации с 0xC810 на 0xC811, что соответствует включению другого режима работы датчика. При выполнении команды каждый байт сопровождается подтверждением ACK, что означает успешную запись.

Команда «I2C>[0x88 0x01] [0x89 r:2]» разбита на две части, где [0x88 0x01] – установка указателя внутреннего адреса на регистр 0x01, а [0x89 r:2] – чтение двух байт с 8‑битным адресом чтения 0x89. В ответ датчик возвращает два байта, содержащие текущее значение регистра.

Далее для работы был подключен датчик измерения температуры, влажности и давление BME280, что представлено на рисунке 1.4.

Рисунок 1.4 – Подключение датчика BME280 к Bus Pirate

Для проверки того, что по адресу «0x76» действительно находится датчик BME280 из регистра идентификатора читается значение chip ID, что представлено на рисунке 1.5.

Рисунок 1.5 – Чтение идентификации типа подключенного датчика

Выполняется команда «I2C>[0xEC 0xD0]», где 0xEC – 8‑битный адрес записи (0x76 << 1), а 0xD0 - адрес регистра идентификатора ID в карте регистров BME280.

После записи адреса регистра внутренний адресный указатель датчика устанавливается на 0xD0 и происходит чтение командой «I2C>[0xED r]», где0xED – 8‑битный адрес чтения, а r – чтение одного байта по текущему адресу.

В ответ датчик возвращает значение 0x60, что согласно даташиту микросхемы BME280 регистр 0xD0 является только для чтения и содержит постоянный код, записанный производителем. Он служит для программной идентификации типа подключенного датчика.

Далее происходит полная последовательность инициализации датчика BME280, а именно настройка измерений влажности, температуры и давления, конфигурацию фильтра и частоты обновления, а также чтение восьми байт сырых данных из регистров результатов, что представлено на рисунке 1.6.

Рисунок 1.6 – Чтение идентификации типа подключенного датчика

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

  • Команда «I2C>[0xEC 0xF2 0x01»] записывает в регистр 0xF2 значение 0x01, что включает измерение влажности.

  • Команда «I2C>[0xEC 0xF4 0x27]» записывает значение 0x27 в регистр 0xF4, выставляя MODE = 11b – нормальный режим измерений.

  • Команда «I2C>[0xEC 0xF5 0xA0]» настраивает регистр 0xF5 значением 0xA0, что устанавливает время ожидания между измерениями.

Таким образом, после этих трёх команд BME280 непрерывно измеряет давление, температуру и влажность и включает сглаживание шума встроенным фильтром.

Чтение блока данных происходит при помощи следующих команд

  1. Команда «I2C>[0xEC 0xF7]» устанавливает указатель на первый регистр данных 0xF7, содержащий старший байт необработанного давления.

  2. Команда I2C>[0xED r:8] читает восемь байт подряд, начиная с 0xF7, где

    • байты 0-2 (0x4E 0xAD 0x00) – необработанные данные давления;

    • байты 3-5 (0x83 0xB9 0x00) – необработанные данные температуры;

    • байты 6-7 (0x7B 0xD1) – необработанные данные влажности.

Эти значения требуют последующей обработки с использованием калибровочных коэффициентов, хранящихся в регистрах 0x88.. 0xA1 и 0xE1..0xF0.

Окончательные физические величины (Па, °C и %RH) вычисляются по формулам, приведённым в даташите BME280.

Также была рассмотрена функция сниффера в рамках работы, что представлено на рисунке 1.7.

Рисунок 1.7 – Сниффинг данных с регистров

Заключение

В ходе выполнения лабораторной работы было произведено изучение способов получения доступа к целевому устройству через такие интерфейсы как UART, SPI, I2C. Освоена методология перехвата и анализа данных на физическом уровне в системах Интернета вещей на примере шины I2C.

Томск 2026

Соседние файлы в предмете Безопасность интернета вещей и сенсорных систем