Flipper Zero — карманный "мультитул" для гиков, сокровище для пентестеров, ваш собственный кибер-зверёк. Возможности девайса ограничиваются только вашим воображением и сноровкой.
В этой статье мы пообщаемся с разработчиками устройства Flipper Zero. Поклонникам девайса предлагается нырнуть вглубь истории создания и технических возможностей. Тем, кто впервые слышит про Флиппер — познакомиться с проектом. Флиппер переживал и запреты, и негатив, и обожание. Проект собрал вокруг себя сотни тысяч энтузиастов-хакеров, людей, охваченных любопытством познания мира вокруг. Приятного чтения!
Мы пообщались с тремя разработчиками — Александром, Иваном и Сергеем. Заряженная энергией и позитивом команда собралась перед нами, чтобы поделиться сокровенным, одним из главных дел их жизни — проектом Flipper Zero.
О чём поговорим:
Александр: Flipper Zero — тамагочи для хакеров, а скорее даже швейцарский нож для гика, который из тамагочи для хакеров вырос до полноценной платформы для прототипирования, разработки и пентеста. За три года существования устройства, помимо основного функционала для пентеста, наша команда и комьюнити написали огромное количество различных приложений и инструментов, начиная с игр и простых программ для опроса датчиков, заканчивая внутрисхемными отладчиками. Дошло до того, что Флиппер может отлаживать другой Флиппер, вашу Arduino, Raspberry Pi — всё, что имеет интерфейс отладки. И это достаточно круто.
Первые наброски и идеи родились во время разработки систем контроля и учёта доступа. Как это обычно бывает с хардварью, инструменты для анализа и отладки либо сделаны не для людей, либо просто отсутствуют. И примерно тогда же появилась идея, что было бы неплохо собрать всё это в одном устройстве с человеческим интерфейсом.
Рисунок N2 – Источник: Pikabu
Позже эти идеи и наброски превратились в концепты, концепты, в свою очередь, превратились в ранние прототипы и кампанию на кикстартере. После успеха которой и началась история Flipper Devices Inn.
Flipper Zero не просто удобное и компактное устройство, он ваш кибердруг. Дельфин был выбран не случайно. Он является отсылкой к произведению отца киберпанка Уильяма Гибсона "Джонни Мнемоник". Даже когда вы используете устройство, зверёк живёт своей жизнью. Вы можете поиграть с ним или накормить порцией ключей или карт. Последнее — оригинальная задумка. Ваш Флиппер — голодный питомец, олицетворяющий голод любопытства. Он намекает и подталкивает владельца гаджета к познанию мира технологий.
При распаковке видим фразу "Hack the planet", которая, вероятно, отсылает нас к ещё одному проекту — pwnagotchi. Тот, в свою очередь, позаимствовал фразу из небезызвестного фильма Йена Софтли "Хакеры". Кстати, тот же pwnagotchi питался WPA–хендшейками и PMKID от WiFi сетей и был вдохновителем при создании Флиппера.
Рисунок N4 – Pwnagochi. Источник: Pikabu
Внешний вид устройства и янтарный дисплей напоминают старые телефоны Siemens. Идея была не только "поностальгировать". Смысл в том, что его прекрасно видно на ярком солнце и у него очень низкое энергопотребление — около 800 uA с выключенной подсветкой.
Игры на Флиппере — отдельный вид ностальгии. Пользователи разработали огромное количество игрушек разной степени продвинутости. Есть говорящие шахматы c text to speech, есть более простые вещи — тетрисы, крестики-нолики. Есть камень-ножницы-бумага, в которую можно поиграть с другим обладателем Флиппера по радиоканалу. Есть подобие Doom-a и многое другое.
В общем, ребята заморочились и сделали приятный по дизайну и внешнему виду user-friendly девайс.
Идея устройства в том, чтобы объединить все аппаратные инструменты, необходимые для исследований и разработок на ходу. Флиппер превращает ваши проекты в игру, напоминая вам, что разработка всегда должна быть увлекательной.
Александр: Для многих не представляет сложности начать использовать Flipper Zero прямо из коробки. UI/UX спроектирован так, чтобы не отпугнуть тех, кто вообще ничего не знает. Буквально для каждой подсистемы у вас есть три функции — прочитать, записать, сэмулировать. Вы просто тыркаетесь в мир вокруг вас и познаете его. Например, у вас есть какой-то тэг, вы пытаетесь понять, что это, подносите устройство, читаете и вот вы теперь знаете.
Естественно, что мир вокруг чуть сложнее. И если мы возьмём, к примеру, mifare, там уже появляются необычные вещи типа аутентификации. Там есть сектора с защищенными паролями и надо знать, как эти пароли добыть атакой на ридер или на карту. Всё, что касается базового функционала приложений, у нас описано в документации. Там же есть гайды, как, например, работать с теми или иными картами. Помимо этого, есть достаточно большое комьюнити, которое разрабатывает разные штуки, есть дополнительные приложения, которые сильно расширяют функционал устройства, но уже требуют продвинутых знаний.
Сергей: Помимо описанного нами в документации базового функционала, у нас есть каталог приложений, в котором сейчас насчитывается их больше ста. Естественно, мы всё это покрыть не можем: качество там немножко отличается от качества наших приложений, в том числе в плане документации. То есть некоторые вещи там абсолютно не прописаны.
Сергей: Мы можем разделить аудиторию наших пользователей на 3 категории. Те, кто купил Флиппер потому, что увидели в TikTok-е, как похакали лючки у Tesla; посмотрели, как в магазине телевизоры повыключать, и захотели это все повторить не разбираясь, flip kiddie.
Вторая категория — это люди, которые постоянно используют Флиппер. Они разобрались, как сделать через него аутентификацию своего компьютера, пишут скрипты для BadUSB. Эта категория интересуется миром вокруг себя. Они, например, видят, что стоит домофон, смотрят, на какой технологии он построен: NFC, RFID или iButton. Карточку нашли — считали Флиппером, изучили технологию, почитали про неё. Чтобы раскрыть возможности Флиппера, нужно интересоваться миром вокруг себя.
Третья категория — сверхлюди, которые под Флиппер пишут приложения. Один из людей нашего комьюнити работает в сервисном центре кассовых аппаратов, и чтобы на выезд с собой не брать ноутбук, он написал себе приложение под Флиппер, которое автоматизирует сервисную работу с кассовыми аппаратами.
Александр: Со второй категорией есть более показательный пример: один из наших первых пользователей по профессии парамедик. Его работа предполагает разъезды по разным больницам. Из-за этого у него целая стопка карточек доступа, и чтобы не таскать их с собой, он скопировал их и теперь просто ходит с Флиппером.
Sub-Ghz
Встроенный радиомодуль на базе микросхемы TI CC1101. Он поддерживает передачу и приём цифровых сигналов в диапазоне частот 300-928 МГц. Это рабочий диапазон для широкого класса устройств и систем контроля доступа, таких как пульты дистанционного управления гаражными воротами, шлагбаумы, датчики IoT и системы дистанционного доступа без ключа. Радиочастотный приемопередатчик интегрирован с модемом, поддерживает различные форматы модуляции и имеет настраиваемую скорость передачи данных до 600 кбит/с.
125 kHz RFID
На нижней части корпуса Flipper расположена антенна, работающая на частоте 125 кГц, – она может считывать различные карты LF RFID (EM-4100, HID, Indala и так далее), сохранять их в памяти и эмулировать любую из сохраненных карт, выбирая её из меню.
iButton
Flipper Zero поддерживает различные ключи "кнопки", среди которых наиболее известны iButton, работающие по 1-wire протоколу. При прикладывании ключа название протокола ключа отобразится на экране над ID-номером. В режиме эмуляции ключа, девайс сам выступает ключом и програмно эмулирует iButton из памяти.
U2F
Flipper Zero может выступать в качестве U2F-токена, работающего с сервисами, поддерживающими этот протокол, такими как Google, Twitter, Facebook, Dropbox, LastPass, Amazon AWS и многими другими;
Александр: U2F на самом деле прошлое поколение протоколов. Сейчас на смену пришёл FIDO. Мы позже добавим и его поддержку. Так или иначе, оба протокола позволяют аутентифицировать пользователя без привычного нам логина и пароля. Идея в том, что у вас есть некое устройство, в нём есть набор из приватного и публичного ключа, и есть некий сервис, где вы хотите аутентифицироваться. Сервис, когда вы регистрируетесь в нём, договаривается с вашим U2F-токеном, отправляет запрос на регистрацию и получает ваш публичный ключ. Попутно у вашего U2F-токена появляется запись о регистрации в этом сервисе. И когда в следующий раз вы будете аутентифицироваться на этом сервисе, он попросит ваш U2F-токен подписать приватным ключом запрос и удостовериться что вы тот, за кого себя выдаёте. Это позволяет аутентифицироваться, не используя логины и пароли.
Правда нужно учитывать, что Флиппер не является заменой аппаратным токенам, которые имеют крипто-анклав и специально заточены на то, чтобы безопасно хранить ключи. У нас ключ шифруется уникальным ключом устройства, но если сильно постараться и получить доступ к устройству, когда оно не заблокировано, то можно его оттуда извлечь.
Infrared
Инфракрасный передатчик может посылать любой сигнал для управления электроникой, такой как телевизор, кондиционеры, стереосистемы и др. Инфракрасный модуль состоит из ИК-приемника на базе TSOP75338TT, позволяющего перехватывать любые ИК-сигналы с несущей частотой 38 кГц, и 3-х инфракрасных светодиодов VSMY14940, излучающих на 940 нм.
Открытый исходный код
Любой желающий сможет расширить функциональность Flipper Zero, изменив код прошивки и/или написав собственные приложения.
Пакет SDK для всех платформ
Разработка для устройства возможна на всех основных платформах (Windows, macOS, Linux). Для быстрого старта есть инструмент ufbt, позволяющий одной командой установить всё необходимое и начать разрабатывать приложение.
BadUSB
Flipper Zero может эмулировать устройства ввода, например, клавиатуру или мышь, позволяя при этом выполнять написанные пользователем скрипты. Таким образом можно автоматизировать рутинные действия.
Bluetooth
Flipper Zero имеет встроенный модуль Bluetooth Low Energy. Как и в случае с другими беспроводными функциями Flipper, имеется библиотека с открытым исходным кодом для добавления поддержки Flipper в приложения, создаваемые сообществом. Полная поддержка BLE позволяет Flipper Zero выступать в качестве периферийного устройства.
NFC модуль
NFC-модуль построен на базе контроллера ST25R3916. Это высокопроизводительный универсальный контроллер NFC компании STMicroelectronics, поддерживающий режимы инициатора NFC, цели NFC, считыватель NFC и эмуляции карты NFC, когда требуется. Будучи полностью совместимой с аналоговыми и цифровыми устройствами EMVCo 3.0, эта микросхема NFC оптимизирована для приложений POS-терминалов и обеспечивает максимально быстрое взаимодействие даже в суровых условиях, когда антенна находится рядом с шумными ЖК-дисплеями.
Flipper Zero способен считывать определённые частоты, прослушивать радиоканалы, взламывать электронные замки, управлять домашней техникой, открывать шлагбаумы и прочее. Флиппер может считывать и эмулировать NFC-метку, радиосигналы, перехватывать сигналы пультов через встроенный ИК-порт. Это универсальный инструмент для исследования аппаратуры, прошивки, отладки и фаззинга. Его можно подключить к любому аппаратному устройству с помощью GPIO, чтобы управлять им с помощью кнопок, запускать собственный код и выводить отладочные сообщения на ЖК-дисплей. Он также может использоваться в качестве обычного адаптера USB - UART/SPI/I2C/etc.
Александр: Я пользуюсь Флиппером ежедневно, для разработки, например. Во время прототипирования очень часто мне требуется отладчик, для этого я использую Флиппер. Постоянно ношу с собой: выключить телевизор, сэмулировать карточки разные, всё это так или иначе есть в устройстве, плюс различные внешние модули. Куча разных мелочей, которые могут быть полезны. Есть роутер, можно подключиться к его UART.
Сергей: На самом деле, помимо того, что Флиппер — универсальная ключница для всего, у меня был случай. Как-то я снял комнату в отеле, а пульта от кондиционера не было, и было достаточно холодно. С Флиппером я смог управлять кондиционером, сделать температуру потеплее. Ещё, так как я разрабатываю электронику, мне часто приходится прототипировать что-то. Например, я получил новый дисплей, мне нужно запустить его, посмотреть, как он выглядит. На Флиппере для меня написать прототип гораздо проще и быстрее, чем на Arduino. Базовое — из-за скорости итераций, код на Флиппере запускать сильно быстрее, чем прошивать какую-нибудь ESP32, STM32 или ту же Arduino. И как сказал Александр, Флиппер является заменой для очень большого количества устройств — это карманный USB-UART переходник, CMSIS-DAP отладчик, прошивальщик для Atmega, прошивальщик Spi флешек, генератор сигналов и даже блок питания. Есть даже очень слабенький, но осциллограф в юзерских приложениях.
Рисунок N18 – Пользователь Флиппера подключил осциллограф. Источник: reddit.com
Иван: Большое преимущество — это значительное количество предустановленных баз под инфракрасные пульты, под все разные системы: под телевизоры, кондиционеры. Это действительно очень удобно. Не всегда имеется физическая возможность настроить кондиционер в помещении, где ты находишься.
С самого начала проект "взорвал" инвестиционную площадку Kickstarter. Проекту понадобилось всего 8 минут, чтобы собрать в 13 раз больше средств, чем требовалось изначально для запуска его производства. Сейчас площадка собрала уже порядка 4,8 млн. долларов вместо намеченных 60-ти тысяч.
У вас много поклонников за рубежом, сабреддит с 90 тыс. поклонниками Флиппера. Линус Себастьян (канал Linus Tech Tips) около 3 месяцев назад выпустил видео с обзором девайса. По мнению Себастьяна, Flipper Zero — это на самом деле один из самых универсальных хакерских инструментов, которые когда-либо появлялись на рынке. Что ощущаете, когда слышите подобное? Какая самая лучшая похвала была устройству, которая заставила вас гордиться?
Александр: Ощущаю, что два с половиной года работы 24/7 были не зря.
Сергей: Радуюсь, когда пользователи говорят, что устройство умеет сильно больше, чем они ожидали. Ещё было очень приятно слышать истории от пользователей, которые находили потерявшихся животных с помощью Флиппера.
Иван: То же самое можно делать и ветеринару, у них есть устройства для чтения этих чипов. Но Флиппер всегда в кармане. Может, он чуть хуже работает, но он всегда под рукой.
Александр: Не всегда можно просто так взять с улицы кошку и принести с собой. В России это не сильно распространено, но в некоторых странах у домашнего животного обязательно должен быть паспорт. Если у него есть паспорт, то должен быть чип. Если животное потерялось, его быстро находят по номеру чипа и отправляют хозяину.
Рисунок N20 – Источник: docs.flipper.net
Иван: Недостаток этой системы в том, что в чипе хранится только номер самого чипа, а не контакты владельца. По всему миру не существует универсальной базы соответствия этих номеров чипов. В разных странах есть несколько независимых баз, которые заносят в номер чипа контакты владельца — кличку животного, номер телефона владельца, возможно, адрес и прочее. Опять-таки, это не универсальная база, и при нахождении такого животного и прочтении ID, нужно проверить по двум-трём прежде, чем найти владельца. Но в целом система хороша.
Сергей: Из интересных историй, связанных с этими чипами: есть продвинутая версия с термометром, обычно используемая на больших животных, чтобы фермер мог просто со считывателем пройтись по стаду, проверить, что никто из животных не заболел. Так вот, у нас коллега себе в плечо вставила такой чип, и теперь она может измерять свою температуру Флиппером.
У такого успеха есть и обратная сторона медали — проблемы с поставками на международный рынок, запреты в некоторых странах правительствами на ввоз устройства. Чем вызваны опасения и действительно ли Flipper Zero может быть использован в преступных целях?
Александр: Для трёх основных направлений — Япония, Европа и США — мы сразу лицензировали устройство и получили все нужные бумаги для ввоза. Там проблема была исключительно в том, что, когда впервые в страну приезжает большая партия устройств, это иногда вызывает вопросы у таможни, и они требуют дополнительные документы. Так получилось, что у нас накопился большой контейнер для штатов, это вызвало вопросы. В Бразилии действительно Флиппер запрещён к ввозу.
Основная проблема тут в том, что регуляторы частенько не представляют, что именно они регулируют и что устройство может. Зато они тоже смотрят тикток и, видимо, считают, что всё там правда. Так-то Флиппер не настолько злое устройство, как, например, HackRF. Им можно сделать гораздо более страшные вещи. В итоге что-то их стриггернуло, и они решили, что Флиппер временно не заезжает. В какой-то момент нам вроде бы удалось донести до них мысль, что наш инструмент — как ножик, что из коробки он не умеет делать ничего страшного, но пока прогресса нет.
Был ещё один момент. В самом начале мы добавили в поддержку чтение информации банковских карт. Чтение информации банковской карты не является какой-то необычной процедурой. По факту вы читаете тот же самый номер, который у вас написан на карте. В некоторых случаях, если, например, используете в айфоне Apple Pay, вы просто прочитаете номер виртуальной карты. Этой информацией просто невозможно воспользоваться. К сожалению, любое упоминание чего-либо читающего карты очень сильно триггерит регуляторов.
Сергей: Технически ваш телефон умеет так же читать эту информацию с банковских карт.
Иван: Не происходит ничего, не требующее физического доступа к карте. Там недостаточно информации, чтобы воспользоваться ей со злым умыслом. Тем не менее, само наличие этой функции уже вызывало вопросы.
Сергей: В США была статья, в которой какой-то полицейский сказал, что Flipper Zero — это устройство для угона машин, и вокруг этого была шумиха. Это возникает просто потому, что устройство позиционируется как хакерский мультитул, но мы имеем в виду хакерский не в плане взлома банка или угона машин. Изначально хакер — человек, который пытается с интересом разобраться во всём, что вокруг него работает. Буквально на следующий день после выхода статьи это же издание опубликовало опровержение, что Flipper Zero не является таковым, мол, всё белое, всё хорошо, но осадочек-то остался. В основном все проблемы с недопониманием и с непониманием роли устройства.
Александр: Устройство содержит очень много технически сложных вещей внутри и, когда начинаешь в них углубляться, становится понятно, где проходит граница легального и нелегального. Для большинства людей, которые не занимаются этими системами, это не понятно. Тем более не стоит ожидать от регуляторов, что они во всём разбираются. В этом нет ничего страшного, с большинством регуляторов в разных странах были похожие ситуации. Просто приходишь к ним, объясняешь, показываешь документы, и вопросы отпадают сами собой.
Иван: В Бразилии всё сводится к тому, что они сказали: "Давайте, привозите своё устройство на сертификацию". Мы просим разрешение на ввоз на сертификацию. Они не дают разрешение на ввоз. "Но сертифицировать можете попробовать", конечно. Там такие анекдотичные ситуации были.
Александр: Мы везде, где что-либо публикуем, всегда проповедуем принципы этичного хакинга. Если что-то вам не принадлежит — туда ходить не надо. Если вы пытаетесь что-то поломать, как минимум должны получить разрешение. Многие пользователи, которые у нас занимаются профессиональным аудитом безопасно-встроенных систем — те, для кого это устройство и создавалось, его используют абсолютно легально с точки зрения white hat-ов, получают все разрешения.
Любые операции с вещами, которые вам не принадлежат — это что-то, что заходит как минимум в серую зону. Дальше уже в зависимости от законов. Например, в некоторых штатах просто пересечение границы открытия шлагбаума уже становится преступлением.
Устройство изначально покрывает протоколы ближнего действия. И подразумевает, что если у вас есть физический доступ к этой карте, то, видимо, это ваша карта.
Естественно, что теоретически его можно использовать во вред. Это как использование ножа. Ножом можно приготовить ужин, а можно навредить.
Иван: Мы предусмотрели момент с легальностью и шлагбаумами. Там есть два основных типа доступа. Один — статические коды, брелок каждый раз передаёт один и тот же код. И динамические коды — это когда посылка формируется каждый раз новая, и шлагбаум, увидев посылку от легального брелока, повторно эту посылку не примет. Это так называемая примитивная защита от повторных атак на основе того, что было уже перехвачено в эфире. И стоковая прошивка Флиппера специальным образом спроектирована так, чтобы принимать как можно более широкий спектр сигналов — и статический, и динамический. Но передавать в стоковой прошивке разрешено только статические сигналы, которые были приняты. Иначе передача чужого динамического кода вызовет рассинхронизацию чужого брелока, и человек, чей брелок на самом деле легальный (мы же не можем проверить, чей сигнал мы на самом деле перехватили), будет вынужден несколько раз нажать на кнопку прежде, чем шлагбаум откроется. Во избежание таких ситуаций мы не передаём динамические сигналы в стоковой прошивке.
Сергей: В данном случае можно даже утрировать и сказать, что если легальный владелец брелока с динамическим кодом скопирует его Флиппером, а затем отправит Флиппером скопированный сигнал, то он может получить нерабочий оригинальный брелок.
Иван: Поэтому, во избежание таких ситуаций мы это не позволяем делать. Но Флиппер реализует многие из этих протоколов на уровне передачи. Мы можем создать новый брелок этого формата и привязать его к охранной системе. Флиппер сможет работать с такой охранной системой, поддерживающей динамические коды. Но это будет не копия брелока, а будто бы легальный новый брелок этого же формата.
Александр: Когда мы выбирали, какие протоколы поддерживать, мы поделили их на несколько групп:
Всем устройствам такого класса приходится балансировать на грани между "насколько оно злое" и, с другой стороны, какие ценности мы пытаемся донести, что именно мы пытаемся сделать с этим устройством. Если говорить о Флиппере, мы пытаемся сделать устройство таким, чтобы оно давало понимание о том, какой мир, насколько в нем безопасно. Но и при этом какие-то опасные действия, которые явно пахнут нелегальщиной, мы отсекаем. Это касается практически всех протоколов машин — очень многие из них небезопасны, т.е. центральный замок в машинах. Мы принципиально не добавляем их. Исключительно из-за того, что вреда от таких действий будет гораздо больше, чем нам хотелось бы.
Александр: Негативные отзывы всегда у всего бывают, по разным причинам. Каких-то прям очень негативных я не видел. Чаще негатив сходит от пользователей, которые не совсем понимают, что это за устройство. Есть люди, которые отвергают саму попытку существования такого устройства, что таких устройств быть не должно, что они всегда несут только зло.
Сергей: Помню, был один негативный обзор от человека. Он полагал, что Флиппер — это универсальное устройство, способное открывать абсолютно всё и не требующее никаких знаний от пользователя. Так как у нас open source, то пользователи разрабатывают и свои прошивки. Так вот, он установил одну из самых "злых" прошивок, — подчеркиваю, в кавычках, — которая написана очень грязно. В результате в обзоре у него устройство работало очень нестабильно и постоянно крашилось.
Александр: Мы принципиально не называем это "app store", а "application catalogue". Есть несколько причин. Во-первых, "апп сторы" в целом не любят, когда им создают конкуренцию и что-то тоже продают. Но, помимо этого, у нас есть идея. У нас устройство open-source, мы хотим, чтобы и приложения у нас были open source для того, чтобы их можно было расширять. Весь каталог построен на идее, что у вас есть исходный код на GitHub, закиньте туда ссылку, это всё соберется и попадёт в каталог. На устройстве есть базовая операционная система, всё остальное — это приложения. Наши основные приложения типа NFC, RFID — они тоже приложения на SD-карте теперь. Мы напилили достаточно большое количество приложений, отладчик. Всё это у нас отправилось в app-каталог, откуда уже пользователи могут себе поставить через мобильный или web-компаньон.
Сергей: Если у приложения открытый исходный код, то его очень сложно контролировать, проверять, что человек купил приложение, а не спиратил или сам скомпилировал. Плюс продажа приложений создает много юридической и технической сложности. Именно поэтому у нас каталог, а не магазин. Надо сказать, у нас сейчас в каталоге большое разнообразие приложений и игр. Например, есть приложение, которое позволяет узнать погоду и влажность, сканируя радиоэфир в поисках датчиков погодных станций.
Рисунок N25 – Источник: forum.flipper.net
Иван: Дабы не быть голословным, вот ссылка на каталог, можно посмотреть его в браузере. Здесь актуальный список того, что можно сейчас поставить буквально в два тапа на мобильном устройстве.
Сергей: Да, к нашему удивлению, у нас в каталоге ещё есть большое количество игр: волк и яйца, шахматы, Asteroids, Arkanoid, Sokoban, Flappy Bird, крестики-нолики, аналог Doom и даже камень-ножницы-бумага с мультиплеером по радиоканалу. Видел даже отзыв от пользователя, который жаловался, что его девушка забрала у него Флиппер и не отдает, так как играет на нём в Tetris.
Александр: Помимо приложений, у нас есть внешние модули. Комьюнити не только разрабатывает приложения, но и модули к ним, тот же счётчик Гейгера. Есть ребята, которые, например, делают внешние модули для работы с какими-либо картами. Они делают дополнительную систему аутентификации с этими картами. Простор для свободы практически неограничен. Сейчас мы готовим новое поколение модулей. Там будет CAN-BUS, CAN-LIN, RS-232, RS-485, Air Mouse, гироскоп, акселерометр, компас, барометр, и ещё будет один интересный проект с Raspberry.
Сергей: Одно из самых популярных приложений в каталоге — HID-USB и HID-BLE. Это Флиппер, представляющийся проводной/беспроводной клавиатурой и мышью. Я это применяю как пульт для музыки, пульт для камеры смартфона, кликер для презентаций, пульт для стриминга (переключение сцен) и изредка, если нет клавиатуры под рукой, настраиваю им сервер. Ещё Флиппер может эмулировать другие USB-устройства, например, жесткие диски. С 12 мегабитами в секунду (USB 2.0 Full Speed) это достаточно грустно. Современная OS с такого диска будет ставиться сутками. Но, например, эмулировать образы дискет или загрузочных дисков это вполне себе позволяет.
Рисунок N26 – Подпись: Фото пользователя, установившего на Флиппер счётчик Гейгера. Источник: reddit.com
Александр: Появилось понимание того, что мы будем готовить следующий продукт. Нам хочется доставить его в следующем году, но будем смотреть по обстоятельствам. Он будет лучше, быстрее, мощнее, с бОльшим количеством разных фич. Мы поняли, что мы все так или иначе начинали с простых микроконтроллеров, кто-то начинал с совсем древних. Понимание того, что такое современный микроконтроллер, поменялось кардинально. Раньше пишешь программы и ничего, кроме этой маленькой простой программы, у тебя на этом микроконтроллере нет. И логика была достаточно простая, линейная. А вот с приходом всяких Wi-Fi из мира IoT стало понятно, что требуется полноценная операционная система. Уже появляются какие-то процессы, сервисы, они взаимодействуют друг с другом. И, к сожалению, не так много производителей микроконтроллеров думают об этом. Есть Nordic, он развивает свою систему в рамках Zephyr.
Рисунок N27 – Zephyr
Это open-source RTOS, поддерживаемая linux foundation. К сожалению, Zephyr достаточно жирный, и в нашем случае, когда наш проект стартовал, он банально нам не подошёл. У нас появилось что-то очень похожее, более компактное. У нас была идея свести к более простой форме, чтобы этим могли пользоваться даже начинающие разработчики. Наша цель с точки зрения железа понятна — выпускаем следующее поколение, более продвинутое, более быстрое, с бОльшим экраном. С другой стороны, мы точно знаем, что мы хотим сделать по софту. Мы хотим принести операционную систему разработчикам микроконтроллеров, "friendly" к разработке, а не вот это вот всё из мира "embedded".
Иван: Да, у нас открылся магазин приложений. Но основа для того, чтобы он запустился, заложилась в конце прошлого-начале этого года. Мы сделали чисто техническую возможность запускать приложения с SD-карты на встраиваемом устройстве без MMU, без управления виртуальной памятью. Такого в продакшн-устройствах, которые бы активно продавались по миру, насколько мне известно, нигде не было. У нас, по сути, первое устройство, которое представляет достаточно удобную разработку и возможность запускать портируемое приложение, переносимое между разными версиями прошивки, даже уже в виде скомпилированного бинарного кода при сохранении совместимости API. У нас можно запустить это приложение на разных версиях прошивки устройства. Это тоже достаточно большое достижение, оно дало возможность подстегнуть разработку со стороны сообщества в том объёме, в котором это сейчас находится.
Сергей: Также мы много сил вложили в систему сборки, которая собирает приложения для каталога. В результате этого у нас появился ufbt, пакет для python, который занимается всем нужным для разработки. Помимо компиляции приложения, он предоставляет конфиги для IDE, инструменты для загрузки и запуска кода на Флиппере, эмулятор терминала и возможность полноценной удобной отладки приложения, с брейкпоинтами и прочим просмотром памяти.
Иван: При нативной разработке всегда известная боль — развернуть среду разработки, т.е. поставить тулчейны, библиотеки, всё настроить. У нас это запаковано в отдельный пакет под все мажорные платформы — под Windows, под Linux, macOS. Система сборки написана таким образом, что она достаточно минималистична: она всё это дело выкачивает автоматически, при запуске, не засоряя пользователю path, просто аккуратно пользуется тулчейном, который она принесла для себя. Это позволяет свести старт разработки до пары команд, которые всё разворачивают. Они делают буквально скелет приложения, которое уже можно запускать на Флиппере за 2 минуты.
Предыстория. Время от времени наша команда проверяет открытые проекты с помощью статического анализатора PVS-Studio, и разработчики пишут статьи, в которых рассказывают об интересных ошибках, найденных в open-source проектах. Для нас это возможность показать, на что способен инструмент, и порадовать интересным контентом комьюнити разработчиков.
В 2021 году сооснователь и DevRel PVS-Studio Андрей Карпов решил написать такую статью с проверкой проекта Flipper Zero. Команда Флиппера его поддержала, у нас вышла первая статья-коллаборация с комментариями ошибок, найденных анализатором, от авторов. С тех пор разработчики Флиппера активно пользуются нашим анализатором. Благодаря тому, что у ребят открытый исходный код, PVS-Studio для них доступен в бесплатной версии. Мы рады, что вносим небольшую частичку в развитие проекта. В конце нашей беседы ребята решили поделиться своим опытом работы со статическим анализатором кода.
Иван: Мы уже практически как год как интегрировали PVS-Studio в наши инструменты. Начальная интеграция была тяжелой. Я думаю, вы знаете, что такое в существующем проекте выгрести все варнинги и всё переписать. У нас было несколько основных прям очень болезненных. У нас malloc построен так, что либо он возвращает что-то валидное, либо система падает. Это поведение пришлось давить практически везде, целое семейство варнингов — это где-то 3-4. И ещё используется библиотека "Си-шных шаблонов", и она написана ядрёно. Очень много варнингов лезло именно из её потрохов. В дефайнах скрываются совершенно монструозные конструкции, которые иногда имеют пустые поля или странные структуры. Мы много варнингов давили именно в макросах под конкретно эту библиотеку.
Примечание от разработчиков PVS-Studio: Для наших пользователей хочется отметить, что проблема с особой функцией malloc более не актуальна. Существует специальная разметка, которая указывает анализатору считать, что функция всегда возвращает ненулевой указатель:
//V_RET_NOT_NULL, function: [namespace::][class::]functionName
С этой и другими специальными возможностями можно познакомиться в разделе документации "Дополнительная настройка диагностик C и C++ анализатора".
Сергей: На самом деле очень приятно, когда люди пишут: "Я использую ваше устройство три месяца, и оно работает очень стабильно, перезагрузилось всего пару раз". Надо понимать, что объем кодовой базы у нас огромный — сотни тысяч строк кода. Это не полноценная ОС с MMU, где мы можем обработать нештатную ситуацию, тут embedded. Если мы крашнулись, то единственный способ восстановить систему — перезагрузка. Для того, чтобы достичь такой стабильной работы, мы используем достаточно большое количество инструментов, злые настройки компилятора, ассерты повсюду, автоматизированный QA и, в том числе, анализатор PVS-Studio.
Flipper Devices Inc — это команда творческих и амбициозных разработчиков. Внимание к деталям и забота о пользователях — их главные компоненты успеха. Команда смогла передать хакерский дух авантюризма и изящество в одной маленькой, но умной коробочке. И это далеко не конец.
Под этой статьёй мы составили список полезных ресурсов, чтобы вы могли подробнее разобраться в функционале Флиппера. Всем чистого кода и творческих идей! Спасибо за прочтение.
Также приглашаю подписаться на наш дайджест и получать на почту наши лучшие статьи каждый месяц.
Habr: Что такое Flipper и почему он Zero. Разбираемся в тамагочи для гиков руками чайника
Habr: Flipper Zero — пацанский мультитул-тамагочи для пентестера
Habr: Перехват инфракрасных пультов с помощью Flipper Zero
Xakep: Боевой дельфин. Что я успел натворить за месяц с Flipper Zero
ZDNET: 7 cool and useful things to do with your Flipper Zero
The Verge: The Flipper Zero is a Swiss Army knife of antennas
IEEE Spectrum: The Flipper Zero: A Hacker's Delight
WIRED: Hands On With Flipper Zero, the Hacker Tool Blowing Up on TikTok