Почти все, кому надо и кому интересно, уже знакомы с Flipper Zero и знают, что это такое.
Для тех же, кто ещё не в курсе, приведу небольшое определение: Flipper Zero — это компактный цифровой мультитул для пентестеров и гиков. А ещё это тамагочи, в котором живет вполне себе дружелюбный кибер-дельфин.
Знакомство с дельфином
В августе прошлого года в одной из малиновых тусовок (канал в telegram по RaspberryPi) я как обычно пролистывал на большой скорости длинную «простыню» обсуждений. И тут мой глаз удивительным образов заметил хорошо знакомые слова — «Flipper Zero». Прочитав сообщение, я узнал, что сей девайс не просто уже существует, но и его можно, наконец, купить в России.
В общем, и завертелось ????
Какое-то время я провел с новой игрушкой, изучая ее возможности, но потом у меня всё же зачесались руки — я стал думать, чего бы ещё полезного можно добавить в такой мультитул для пентестера и гика. Гордо зваться пентестером я пока не могу, а вот к гикам себя вполне заслуженно отношу. И как гику мне во Флиппере очень не хватало UART-терминала.
Да, в стоковой прошивке flipper'а есть замечательный fap (гусары, молчать, это Flipper Application Package) «UART Echo». Он на скорости 115200 baud читает и принимает по uart и выводит на экран.
Но есть печаль — он не умеет слать пользовательские команды в uart и скроллить вывод.
Судя по исходникам прошивки и плагинов, под Flipper принято писать на голом C, без плюсов, хотя разработчики сообщают, что давно уже можно писать и на С++. Сразу же скажу, что ранее вообще ничего не писал и не «ковырял» на C, поэтому прошу не судить строго.
Пишем UART-терминал
Все грандиозные дела у меня принято планировать на новогодние каникулы, так что терминал для Flipper постигла та же участь. Как уже писал выше, опыта в написании кода на C у меня не было и уж тем более под Flipper Zero. В интернетах документации по разработке под Flipper совсем немного, практически всю мудрость приходится черпать из исходников прошивки и плагинов.
Но мир не без добрых людей, для старта есть замечательная статья «Сборка Hello World под Flipper Zero» от Павла Яковлева, за что ему огромное спасибо.
Меня как эникейщика и сисадмина в прошлом иногда преследуют старые фантомные боли привычки — поиск быстрого решения. Поэтому я решил для себя, что написать с нуля — это не мой путь. Ну, как минимум, прямо сейчас.
За основу своего UART_Terminal я взял код проекта WiFi Marauder companion, порядка 60% того, что мне было нужно, уже было реализовано в коде проекта, поэтому выражаю огромную благодарность разработчикам.
Итак, имея основу, мне оставалось сделать вот что:
Выпилить все лишнее.
Добавить возможность выбора BaudRate (2400, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600).
Доработать инициализацию uart.
Сделать свою клавиатуру на основе стоковой.
Добавить быстрые команды (Fast cmd).
Теперь конкретно по UART-терминалу:
UART_Terminal — это приложение Flipper Zero для управления различными устройствами через интерфейс UART.
Возможности:
чтение лога и вывода команд по uart
отправка команд по uart
установка скорости uart
быстрые команды
Подключение:
По умолчанию uart инициализируется на скорости 115200 baud, сразу после запуска.
Быстрые команды. Так как набор текста на flipper'е — занятие не из самых приятных, предусмотрен набор быстрых команд (help, uptime, date, df -h, ps, dmesg, reboot, poweroff).
Клавиатура. В проекте, который был взят мною за основу, для ввода команд вызывалась встроенная в прошивку flipper'а клавиатура. Родная клавиатура содержит только буквы, цифры, пробел и подчеркивание.
Также отсутствовала возможность набора команды / текста с маленькой буквы, то есть, хотите вы этого или нет, но первая буква в наборе будет заглавной. В последней версии прошивки разработчики сообщают, что поправили «фичу» обязательной заглавной буквы, и теперь у пользователя есть возможность набирать текст с маленькой буквы.
В общем, так как родная клавиатура не рассчитана на работу в терминале, мне пришлось скопировать ее код себе в проект, доработать, и вызывать уже свою клавиатуру для ввода команд.
Чтобы разместить больше символов на таком маленьком дисплее, некоторые символы вызываются удерживанием.
Изначально делал только для себя. Как только у меня получилась плюс-минус рабочая версия, я снял на видео процесс работы и выложил в групповой чат telegram сообщества Flipper Zero. Некоторым участникам сообщества идея и ее реализация показались интересными, они попросили поделиться исходным кодом проекта. Так что это моя первая публикация на Хабр и GitHub ????
Резюмируя
В общем-то, я и сам понимаю, что в нормальных условиях работа в консоли с такого крохотного девайса — это боль и извращение. Но если романтизировать, то можно оказаться в разных условиях, где нет ни ноутбука, ни телефона, есть только Flipper, ты и роутер на дне кратера.
А если серьезно, то считаю, что в устройстве, которое зовется мультитулом для пентестеров и гиков, подобный функционал как минимум будет нелишним.
Я в github и telegram @cool4uma
Комментарии (6)
alcochtivo
00.00.0000 00:00+5Заказал себе такую штуку давным-давно, пришла в прошлом году... А я не очень умный был, и хотел написать bluetooth ддосилку для школьников с колонками на улице. В итоге через два месяца ковыряния во внутренностях дельфина и дебрях английской спеки синего зуба - пришёл к выводу, что на дельфине такую штуку не сделать. На этом мои идеи кончились - дельфин лежит выключенным. Домофон на таблетке открывать им оказалось очень не удобно.
TyVik
00.00.0000 00:00+5Я убавляю звук телевизоров в общественных местах.
alcochtivo
00.00.0000 00:00Достойное применение, на самом деле. Но у меня таких мест минимум - удалёнка на урале дело такое, всё больше либо в лесу, либо просто на улице)
sintech
00.00.0000 00:00+1Достойная задача, не сдавайтесь!
Возможно получится подключить внешний модуль bluetooth через gpio.
alcochtivo
00.00.0000 00:00Ни в коем случае не надо считать этот ответ подхалимством. Заглянул в ваш профиль - подбадривание от вас заслуживает того чтобы действительно не сдаваться. Спасибо.
fk0
Реальный мультитул для "пентестеров" это какой-нибудь toughbook. Который можно швырнуть с размаху на пол, облить пивом и вынести поработать на улице зимой (он не выключается как многие потому, что у датчика температуры процессора отрицательные значения не превращаются в пекло в 255 градусов). И батареи хватает день. И всегда есть компорт.
А тюкаться с вводом буковок через джойстик -- мало кому понравится.
Точно.