Почти все, кому надо и кому интересно, уже знакомы с 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)


  1. fk0
    00.00.0000 00:00
    +4

    Реальный мультитул для "пентестеров" это какой-нибудь toughbook. Который можно швырнуть с размаху на пол, облить пивом и вынести поработать на улице зимой (он не выключается как многие потому, что у датчика температуры процессора отрицательные значения не превращаются в пекло в 255 градусов). И батареи хватает день. И всегда есть компорт.

    А тюкаться с вводом буковок через джойстик -- мало кому понравится.

    я и сам понимаю, что в нормальных условиях работа в консоли с такого крохотного девайса — это боль и извращение.

    Точно.


  1. alcochtivo
    00.00.0000 00:00
    +5

    Заказал себе такую штуку давным-давно, пришла в прошлом году... А я не очень умный был, и хотел написать bluetooth ддосилку для школьников с колонками на улице. В итоге через два месяца ковыряния во внутренностях дельфина и дебрях английской спеки синего зуба - пришёл к выводу, что на дельфине такую штуку не сделать. На этом мои идеи кончились - дельфин лежит выключенным. Домофон на таблетке открывать им оказалось очень не удобно.


    1. TyVik
      00.00.0000 00:00
      +5

      Я убавляю звук телевизоров в общественных местах.


      1. alcochtivo
        00.00.0000 00:00

        Достойное применение, на самом деле. Но у меня таких мест минимум - удалёнка на урале дело такое, всё больше либо в лесу, либо просто на улице)


    1. sintech
      00.00.0000 00:00
      +1

      Достойная задача, не сдавайтесь!

      Возможно получится подключить внешний модуль bluetooth через gpio.


      1. alcochtivo
        00.00.0000 00:00

        Ни в коем случае не надо считать этот ответ подхалимством. Заглянул в ваш профиль - подбадривание от вас заслуживает того чтобы действительно не сдаваться. Спасибо.