Вертолёт с linux на борту
или Пингвины умеют летать
Недавно вошло в моду играть в компьютерные игры, отчасти перенося действие в реальность. Тому пример AR.Drone. Это достаточно дорогая игрушка, которая должна идти в комплекте с известной яблочной продукцией. Некоторые энтузиасты переписали данное приложение под платформу Maemo 5, которая стоит на Nokia N900. Все ссылки я опубликую в конце статьи. Для начала приведу характеристики устройства с официального сайта:
Сообщение от
None
ВОЗДУХОПЛАВАТЕЛЬНАЯ СТРУКТУРА
Пропеллеры высокой производительности (специально разработанные для
AR.Drone)
Перекрестие, выполненное из углеродистого волокна
ДВИГАТЕЛИ И ПИТАНИЕ
4 бесщёточных двигателя, (35,000 об./мин., мощность: 15Вт)
Литий-полимерный аккумулятор (3 ячейки, 11.1В, 1000 мА·ч)
Разрядная ёмкость: 10C
Время заряда батареи: 90 минут
ПЕРЕДНЯЯ КАМЕРА: ШИРОКОУГОЛЬНАЯ КАМЕРА
Угол обзора камеры 93°, CMOS
Кодирование и потоковая передача видео на iPhone
Разрешение камеры 640x480 пикселей (VGA)
Обнаружение других AR.Drone
- Подтверждение выстрелов в другой AR.Drone
- Оценка расстояния
- Расстояние обнаружения: 5 метров (16.4 фута)
Система трехмерного обнаружения
- Расположение виртуальных объектов
- Вычисление признаков виртуальных объектов
- Расстояние обнаружения: от 30 см до 5 м (от 1 фута до 16.4 фута)
Видео обратная связь на экране iPod touch /iPhone
УЛЬТРАЗВУКОВОЙ ВЫСОТОМЕР
Частота излучения: - 40 кГц
Диапазон 6 м (19.7 фута)
Вертикальное выравнивание
ВЕРТИКАЛЬНАЯ КАМЕРА: ВЫСОКО СКОРОСТНАЯ КАМЕРА
Угол обзора 64°, CMOS
Частота 60 кадров в секунду
Выравнивание даже при небольшом ветре
АВТОПИЛОТ
Автопилот AR.Drone позволяет легко взлетать и садиться.
После взлета, автопилот выравнивает квадракоптер на расстоянии 50 см до поверхности.
Когда вы убираете пальцы с экрана iPod Touch®/iPhone®,
автипилот переводит AR.Drone в парящий режим. Автопилот также принимает коммандование,
когда соединение Wi-Fi утеряно. Он выравнивает AR.Drone перед посадкой.
Если во время управления квадракоптером вам поступит входящий звонок, то автопилот
выравняет его и аккуратно посадит на поверхность через несколько секунд.
ВСТРОЕННАЯ ВЫЧИСЛИТЕЛЬНАЯ СИСТЕМА
ARM9 468 MHz
DDR 128 Mbyte @ 200MHz
Wifi b/g
USB 2.0, high speed
Linux OS
ИНЕРЦИАЛЬНАЯ СИСТЕМА УПРАВЛЕНИЯ
С M.E.M.S.
3-х координатный акселерометр
2-х осевой гироскоп
1-но координатный курсовой прецизионный гироскоп
ХАРАКТЕРИСТИКИ
Скорость: 5 м/с; 18 км/ч
(16.4 фут/с; 11.2 миль/ч)
Вес:
- 380 г с корпусов для полетов на улице
- 420 г с корпусом для полетов в помещении
Время полета: примерно 12 минут
СИСТЕМА ЗАЩИТЫ
Корпус из полипропилен с пенным наполнителем
Автоматическая блокировка лопастей
в случае попадания предмета
Батарея UL2054
Интерфейс управления с кнопкой
аварийного выключения двигателей
РАЗМЕРЫ
С корпусом:
52.5 x 51.5 см (20.7 x 20.3 дюймов)
Без корпуса:
45 x 29 см (17.7 x 11.4 дюймов)
Вот с таким чудом технического прогресса мы имеем дело. Его можно приобрести примерно за 13 - 15 тысяч рублей. Как вы уже поняли, устройство имеет беспроводной интерфейс, через который, собственно, оно и общается с пользователем. Вы наверняка найдете большое количество видео на youtube о том, как кто-то играет в эти виртуально-реальные игрушки.
Поскольку играть мы явно не собираемся, то давайте рассмотрим саму систему, а именно linux, на которой базируется данная игрушка.
После включения устройство поднимает wi-fi точку. Приконнектившись к ней, можно просканировать наше устройство.
Nmap показал два открытых порта -
21/tcp open ftp
23/tcp open telnet
Это уже что-то. Коннектимся к телнету, и видим первый сюрприз - без необходимости ввода пароля мы попадаем в консоль с правами рута. Для начала убедимся что мы root -
# whoami
root
Теперь взглянем на оборудование:
# cat /proc/cpuinfo
Processor: ARM926EJ-S rev 5 (v5l)
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 length: 32
I sets: 256
D size: 16384
D assoc: 4
D line length: 32
D sets: 128
Hardware: Mykonos Parrot platform
Revision: 0904
Serial: 0000000000000000
Кто бы мог подумать, ARM архитектура на встроенном linux’е! 128 метров - не так уж мало для вертолета с пингвином на борту. Едем дальше. Увидев список запущенных процессов, невозможно не заметить два интересных процесса -
# ps -aux
...
960 root 2736 S /bin/sh /bin/check_update.sh
961 root 11824 S /bin/program.elf
...
program.elf - Скорее всего, это основной процесс системы, на которой держится вся игровая-лётная система. Так же на целевом устройстве по умолчанию установлен редактор vi. Но чтобы прочитать файл /bin/check_update.sh, я заюзал обычный cat.
# cat /bin/check_update.sh | less
Даже бросив поверхностный взгляд, можно понять, что данный скрипт проверяет наличие обновлений в домашнем каталоге пользователя. В принципе, ничего интересного, но ведь никто не говорил, что нельзя редактировать скрипты? А эта тема (программирование для Вертолета на linux) требует уже детального разбора, поэтому я не буду здесь описывать весь процесс. Давайте посмотрим сетевые соединения:
# netstat -p
Далее несложно увидеть, что открыты три UPD порта - 5554, 5555, 5556 и TCP - 5559. Как ни странно, но все они относятся одному процессу -
/bin/program.elf. Можно предположить, что два порта служат для передачи потокового видео с передней и задней камеры, еще один - для удалённого управления самим устройством. “Методом тыка” можно разобраться, какой порт к чему относится.
Нельзя не отметить, что какая-никакая, а система защиты есть. Если для управления устройством вы используете программу для яблоководов - FreeFlight. В настройках программы можно указать один вариант защиты - чтобы доступ к устройству по wifi был только у вас, а то наверняка найдутся хулиганы, которые тоже захотят попользоваться
В заключение этой маленькой статьи я хочу сказать о возможностях упомянутого устройства, которые вы можете реализовать. Никто не мешает прикрутить GPS-логгер и запустить сканирование на предмет беспроводных сетей. Можно прикрутить aircrack и начать операцию “Беспалевный взлом wi-fi сети с вертолёта”. А можно вообще автоматизировать полеты и заставить его прилетать к вам утром и отправлять на icq или e-mail новости it, сграбленные за ночь. Но нельзя упускать из внимания безопасность данного дивайся. Почему бы не поднять на компьютере сканирование wi-fi сети с именем “AR.Drone” и, после ее обнаружения, присоединиться и отослать сигналы управления устройством на UPD порт? Тогда есть шанс утром обнаружить у себя на балконе новенький Вертолет! При операционной системе linux пределу фантазии нет границ.
P.S. Обещанные ссылки:
официальный сайт
Клиент для нокии
хороший обзор
официальный русский сайт
P.S.S.
© cyber-punk