Яндекс.Метрика

    Ни о чём

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

    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. А пока что это одна из слабых сторон, которая не должна мешать развитию одной из самых увлекательных современных игрушек.