Pull to refresh

Ar. Drone: Linux на борту

Reading time 4 min
Views 2K
image
AR. Drone от Parrot добился колоссальных успехов с момента выпуска в сентябре 2010, и постоянно поражает игровые сообщества и сообщества разработчиков. Более того, покопавшись в нем можно обнаружить, что AR. Drone работает под Linux. Что же делает этот гаджет?
Подключить его к компьютеру очень просто, потому что это устройство WiFi. Он выглядит специальной сетью, к которой затем можно присоединиться с любого компьютера, имеющего беспроводную сетевую карту. Если вы уже соединили его с мобильным устройством, IP-адрес не будет назначатся при подключении к сети, и к нему невозможно будет подсоединиться. Чтобы обойти эту проблему, запустите мобильное устройство и отключите функцию спаривания в настройках приложения Free Flight, или просто нажмите кнопку Разорвать пару (Unpair) на устройстве.
Что можно почерпнуть из этой игрушки, не разбирая ее на части? Так как мы в его сети и знаем его IP-адрес, сканирование портов будет хорошей отправной точкой. Выполнив это, узнаем, какие порты открыты и доступны, а также поймем, какой доступ мы получим для подключения к устройству.
Запуск nmap показал два порта:

21/tcp open ftp
23/tcp open telnet


Попытавшись установить подключение к свободному порту telnet, мы попадаем в Bash без необходимости ввода пароля. Информация по входу показывает, что нам удалось подключиться к установке Linux c BusyBox и что есть доступный номер версии, поэтому можем проверить интимные подробности и вопросы безопасности, если это будет необходимо.
Дальнейшее рассмотрение показывает, что нас на самом деле непринужденно сбросили под root без пароля, и мы получили полный доступ к устройству.

#echo $USER
root


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

#cat /proc/cpuinfo
Processor: ARM926EJ-S rev 5 (v5I)
BogoMIPS: 233.47
Features: swp half thumb fastmult edsp java
CPU implementer: 0x41
CPU architecture: 5TEJ
CPU variant: 0x0
CPU part: 0x926
CPU revision: 5
Cache type: write-back
Cache clean: cp15 c7 ops
Cache lockdown: format C
Cache format: Harvard
I size: 32768
I assoc: 4
I line linght: 32
I sets: 256
D size: 16384
D assoc: 4
D line lenght: 32
D sets: 128
Hardware: Mykonos Parrot platform
Revision: 0904
Serial: 0000000000000000


А также информацию относительно памяти:
#cat /proc/meminfo
MemTotal:126072 kB
MemFree: 105652 kB
Buffers: 0 kB
Cached: 3604 kB


Здесь 128 МБ оперативной памяти на борту — немного больше, чем вы ожидаете найти на столь маленькой штучке. Памяти и вычислительной мощности хватает для встроенного устройства, и мы знаем, что на нем как минимум работают демоны FTP и telnet. Давайте посмотрим список процессов и увидим, что есть внутри еще интересного.
Взглянув на список процессов, мы обнаруживаем кроме двух вышеперечисленных демонов еще DHCP-сервер и syslogger. Кроме того, есть два интересных процесса, которые выглядят специфичными для этого устройства, один из них отвечает за обработку всех элементов управления и вывода видео обратно на ваше мобильное устройство:

960 root 2736 S /bin/sh /bin/check_update.sh
961 root 11824 S /bin/program.elf


С виду этот процесс program.elf похож на хостинг основного кода устройства. Здесь недоступен исходный код, и он, вероятно, был прикомпилирован к материнской плате, чтобы закрыть исходный код от пользователей.
Процесс check_update.sh выглядит доступным для чтения:

#cat /bin/check_update.sh

Похоже, что он контролирует каталог прошивки в поисках новых версий для обновления. Итак, остался только один процесс — program.elf. Он, вероятно, отвечает за всю коммуникацию и взаимодействие с мобильными устройствами.
По выдаче netstat видно, есть ли открытые порты, и если да, то какие и к какому адресу они привязаны.
Команда netstat -p показывает, что у нас есть открытый порт ТСР на 5559 и три UDP-порта — 5554, 5555, 5556. Все они принадлежат процессу program.elf. С учетом функциональности AR. Drone, на это есть целый ряд возможных причин. Один порт нужен для управления самим устройством, еще два — для видеоканалов передней и нижней камер. Это охватывает UDP-порты, но чтобы более точно определить, для чего какой порт предназначен, надо будет присмотреться попристальнее.
Примечательно, что единственным механизмом безопасности, встроенным в устройство, является техника спаривания устройств, доступная в настройках приложения: Free Flight. Ее нужно включать для предотвращения действий хулиганов по WiFi, которые могут захватить устройство, когда оно находится в полете.
AR. Drone великолепно оборудован — имеет встроенный Linux, много оперативной памяти и надежную механическую часть для обеспечения полета. То, что на самом деле открывает ряд возможностей для этой захватывающей воображение игрушки, доступно на встроенной установке Linux BusyBox. С копией Linux, летающей под вашим контролем, вы получаете возможность делать много необычных вещей.
Выполняя простые сканирования портов и проверки открытых портов и процессов, можно передавать пакеты с устройства и обратно, что потенциально позволяет создавать потоковое видео и механизмы контроля, которые используются на выбранном языке или платформе.
Чего хочется ожидать от сообщества AR. Drone — это основного приложения с открытым кодом для управления устройством. Это открыло бы железо на использование любого варианта Linux. А пока что это одна из слабых сторон, которая не должна мешать развитию одной из самых увлекательных современных игрушек.
Tags:
Hubs:
+24
Comments 18
Comments Comments 18

Articles