Почти все, кому надо и кому интересно, уже знакомы с 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
ссылка на оригинал статьи https://habr.com/ru/articles/721000/
Добавить комментарий