Разбившийся дрон может рассказать целую историю. Сегодня рассмотрим, как файлы ArduPilot раскрывают намерения оператора, реальное поведение в полёте, точное место крушения и многое другое.
ArduPilot — программное обеспечение с открытым исходным кодом, предназначенное для управления беспилотными аппаратами . Оно позволяет осуществить точечную настройку и автоматизировать работу различного беспилотного оборудования начиная от колесной техники и заканчивая БПЛА. ArduPilot устанавливается на плату полётного контроллера, и эта плата становится «мозгом» аппарата. После прошивки и настройки она может управлять перемещением, навигацией, а также широким спектром датчиков и периферийных устройств.

Это делает ArduPilot интересным объектом для цифровой криминалистики. Когда один из таких аппаратов разбивается, он может оставить ценные артефакты.

Подпишись на наш канал в телеграме , там ты найдешь огромное количество качественного контента, без инфошума и воды!
Криминалистически ценные файлы
Есть два основных криминалистически ценных файла, которые можно извлечь из дронов. Первый — это файл .bin. Полетные данные хранятся в логах DataFlash, обычно на SD-карте или во внутренней флеш-памяти, а Mission Planner позволяет скачать эти логи после полёта. Данные содержат GPS координаты, высоту, скорость, состояние батареи, системные события и множество других полей телеметрии. Иными словами, это память дрона обо всём полёте.
Второй файл — это .plan. Это файл миссии с путевыми точками, хранящийся в формате JSON. Режим Plan View в QGroundControl предназначен для планирования и загрузки этих миссий, а сам файл плана может содержать элементы миссии, а также дополнительные геоданные. Если вы восстановите его, то сможете увидеть маршрут, по которому оператор намеревался вести дрон.
Чтобы извлечь .bin файлы, извлеките microSD карту из полетного контроллера, вставьте её в ПК с помощью картридера и перейдите в каталог APM/LOGS/. В этой папке содержатся полетные логи .bin, которые можно скопировать для анализа.
Если полетный контроллер всё ещё включается, вы также можете восстановить файл .plan, подключив аппарат к Mission Planner через USB. Откройте экран Flight Plan, нажмите Read (иногда отображается как Download from APM), а затем сохраните полученную миссию на ПК в виде файла .plan.
Вместе эти два файла образуют полезную криминалистическую пару. Файл .plan показывает намерения, а файл .bin показывает реальные данные.
Анализ
Для анализа нам понадобятся восстановленные файлы и QGroundControl для визуализации.
Мы пропустим процесс установки QGroundControl, поскольку он хорошо описан в документации.

Визуализация
После открытия приложения нажмите на логотип в левом верхнем углу, а затем выберите Plan Flight — режим планирования миссии.

После открытия восстановленного файла .plan, вы сразу увидите предполагаемый маршрут, по которому должен был следовать дрон.

Маршрут миссии в данном случае состоит из путевых точек (spline waypoints). Путевые точки предназначены для того, чтобы аппарат летел по плавным, изогнутым траекториям, а не по резким углам (полезно для стабильной видеосъемки и визуально чистого перемещения).
При нажатии на отдельные путевые точки каждая из них раскрывает сведения о высоте, направлении и времени.
В нашем примере, когда дрон достиг 18-й путевой точки, он был запрограммирован подняться на 100 метров и удерживаться на месте в течение 30 секунд, чтобы заснять Цитадель в Будапеште.

Помните, что это лишь запланированная миссия. Она не доказывает, что дрон выполнил маршрут. Для этого нам нужен файл лога .bin.

Чтение файла лога
Логи .bin используются для реконструкции полёта дрона. Мы можем извлечь необходимую информацию с помощью скрипта mavlogdump.py, а затем выполнить поиск по полученному текстовому выводу.
kali > wget https://github.com/ArduPilot/pymavlink/blob/master/tools/mavlogdump.py
kali > python3 -m venv venv; source venv/bin/activate
kali > pip3 install pymavlink
kali > python3 mavlogdump.py log.bin | tee output.txt

Мы видим множество записей, поэтому необходима фильтрация. Первое полезное, что мы можем посмотреть, — точка взлёта.
kali > cat output.txt | grep -ai takeoff -A 50 | grep -ai lat
Широта и долгота должны совпадать с маршрутом, показанным в плане миссии.
В логе также отслеживаются события, связанные с крушением, и скорость в момент удара.
kali > cat output.txt | grep -ai “Hit” -B 50 -A 100 | grep -aiE “Lat|Hit”

Вы можете увидеть, что он двигался со скоростью (Spd) 3,2 м/с, перед ударом его скорость возросла, и он столкнулся с землей приблизительно на 12 м/с в точке 47.4903055, 17.046047 (Lat, Lng). Высота (Alt) составляла 121,76 метра.
Вы также можете вычислить, сколько времени аппарат провел в воздухе, сравнив временные метки взлёта и удара.
kali > cat output.txt | grep -aiE "takeoff|hit"

Здесь вы можете увидеть, что он находился в полете примерно 11 минут.
Наконец, лог может раскрыть информацию о прошивке, идентификаторе аппарата и типе планера.
kali > tail output.txt

Заключение
Файл .plan показывает замысел миссии, тогда как файлы .bin детально фиксируют полёт. Вместе они позволяют реконструировать маршрут, тайминг, изменения высоты и скорости, конечную точку. Поскольку ArduPilot используется в столь широком спектре систем — от дронов до катеров, подводных аппаратов и наземных транспортных средств — эти криминалистические методы очень высоко ценятся.
Подпишись на наш канал в телеграме , там ты найдешь огромное количество качественного контента, без инфошума и воды!
*Информация в данной статье представлена исключительно в образовательных целях. Автор не несёт ответственности за возможные последствия применения советов или рекомендаций, изложенных в материале.