Привет, Хабр! Последний раз Мы рассказали, как появился бейдж международной конференции по кибербезопасности OFFZONE 2019 и что он собой представляет. Сегодня мы поделимся закулисными историями: как мы пришли к его созданию и что нам понадобилось, чтобы изобрести и выпустить серию из 2000 устройств.
Хронология событий, подводные камни разработки, закупки, установки и другие радости из мира электроники под катом.
Идти!
Каждая практическая конференция по кибербезопасности оснащена интерактивными бейджами.
В нашем случае значок должен служить как минимум кошельком для внутренней валюты мероприятия — OFFCOIN. В прошлом году с этой задачей справилась Java-карта, к которой мы прикрепили несколько заданий, игру в танки и сокобан.
Та же карта, только теперь с NFC, показалась логичным развитием значка 2019 года: тут и преемственность, и эволюция, и море идей для задач.
И для этого есть все лучшие практики — это важно, если в первую смену вы ищете уязвимости, а во вторую организуете конференцию.
Мы потихоньку готовились к производству, когда из лаборатории анализа оборудования пришли новости: коллеги представят свои обзор атак на встраиваемые системы .
Фотографии разрезанных плат заполонили рабочие чаты, в коридорах обсуждались типы побочных каналов, аппаратная тема не привлекла внимание наших экономистов.
И мы поняли, что для OFFZONE 2019 нам нужно создать свое устройство.
Итак, у нас было 80 дней до конференции, цель — 2000 устройств и 2 разработчика электроники.
Вот как выглядела эта эпопея глазами одного из разработчиков.
80 дней
Первое, с чего мы начали, — это мозговой штурм с коллегами и создание концепций бейджей.Среди идей были одноплата с интерпретатором Бейсика на борту, бейдж-визитка с E-ink дисплеем, что-то из мира IoT-устройств на базе ESP32 или аналогичного модуля, а также базовая материнская плата, заранее подготовленная к дооснащению.
с дополнительными модулями.
79–65 дней
Гуляем, пьем кофе, перевариваем свои мысли.Взвешиваем все за и против.
Мы читаем твиты и видим что делают другие .
64–60 дней
У нас был очередной мозговой штурм.От идеи единой платы отказались.
Это оказалось слишком дорого из-за обилия комплектующих и монтажа: одних кнопок будет больше 30. И никого бы не удивило такое устройство - они сразу приходят на ум Значок Суперкона и подобные поделки.
Визитку с E-ink-дисплеем тоже отвергли: не смогли найти ей интересное применение и решить, как связать потенциальные задачи с бейджем.
Да и ESP32 выглядел как-то несерьезно — подумали бы, что мы новички в Ардуино! (Хотя к теме Arduino я вернусь позже.
) Осталась идея материнской платы с возможностью оснастить ее модулями для решения задач.
Мы потратили пару дней на оттачивание идеи.
В итоге мы выбрали форму 3,5-дюймовой дискеты и определились с основным функционалом и обвесами.
Последний включал в себя DIP-переключатель с 8 переключателями, OLED-дисплей, ИК-приемник, RFID-приемопередатчик 13,56 МГц, а также отдельные приемник и передатчик 433 МГц.
Управлять этим пестрым зоопарком был назначен микроконтроллер STM32F1, как на популярной плате.
Тогда же возникла идея создать на OFFZONE площадку Craft.Zone, куда каждый мог бы прийти понюхать канифоль и лично оснастить свой бейдж электронными компонентами.
Зона пайки – ход конем! Во-первых, это интересно и необычно для отраслевой конференции, во-вторых, увлечет даже новичков, в-третьих, это ускорит монтаж финальной партии устройств.
Все стороны выигрывают! В результате в первые недели мы утвердили концепцию, базовый функционал и компонентную базу будущего устройства.
Затем начинается веселье.
59–50 дней
Нам удалось сделать принципиальную схему, макет, изготовить и вручную установить первую версию бейджборда.На этом этапе самым мучительным был выбор источника питания.
Очевидно, что бейдж должен быть самостоятельным устройством.
В качестве гаранта этой автономности напрашивался литий-полимерный аккумулятор емкостью 0,5 Ач и соответствующая система контроля заряда на простом контроллере типа TP4096. А пробовали ли вы купить в Москве пару тысяч аккумуляторов без предварительного заказа, да еще и у проверенного производителя? Мы попробовали, но это не сработало.
Заказывать из Китая мы не рискнули: батарея была слишком важна и пожароопасна, и нашим гостям приходилось носить ее на шее.
Вот тут-то мы и вернулись к старым добрым батарейкам.
Мы прикинули расход, провели ряд несложных экспериментов и остановились на конфигурации из четырёх батареек ААА.
Они дали 16–20 часов работы устройства в зависимости от активности использования.
Еще мы ломали голову над написанием прошивки.
В других обстоятельствах мы бы писали программное обеспечение с использованием Eclipse (arm-none-eabi-gcc), Keil, IAR и других человеческих и не очень IDE. Однако наша команда разработчиков-добровольцев в основном состояла из криминалистов и пентестеров.
Надеяться, что они в свободное время быстро освоят написание прошивок для встраиваемых систем, было неразумно.
Я обещал, что без ардуино нельзя? Я не лгал! Чтобы упростить процесс разработки программного обеспечения, мы использовали Arduino IDE. К счастью, есть хороший проект. STM32Дуино , который из коробки реализует загрузчик Arduino для нашего целевого камня STM32F1, и Arduino IDE его поддерживает. Последний содержит большую часть необходимых нам библиотек для работы с модулями и прочих радостей относительно высокого уровня программирования.
Конечно, с библиотеками не все так гладко, но жить можно.
Чтобы адаптировать большинство из них под STM32, достаточно переписать платформозависимые функции — и всё.
Но редактирование кода библиотеки похоже на вставку кавычек!
Интересен тот факт. Для реализации функциональности бейджа мы использовали следующие библиотеки:И вот первая версия платы готова.
- Adafruit_SSD1306 для OLED-дисплея,
- MFRC522 для RFID,
- RCSwitch для радио 433 МГц,
- irmp-master для ИК-передатчика.
Он вышел зеленым, без необходимых фрезерованных отверстий и практически не работал.
Интересен тот факт. Прототипы платы были заказаны у «Резонита» по специальной программе «Это нам очень нужно еще вчера», комплектующие были закуплены в розничных магазинах Москвы, а монтаж осуществлялся собственными силами.Большинства проблем первой версии можно было бы избежать, если бы мы сначала собрали основную часть схемы на макете.
Разумеется, можно заметить, что приемник и передатчик требуют разного входного напряжения питания: 5 В для приемника и 3-12 В для передатчика (в пробной версии оба модуля питались от 3 В).
Мимо спящего USB мы бы тоже не прошли.
Внимательное чтение схемы платы Blue Pill помогло мне понять, что USB не будет работать, если линия USB_P не подключена к источнику питания 5 В с помощью резистора сопротивлением 1,5–10 кОм.
Интересен тот факт. Пытаясь оживить USB и поковыряв плату осциллографом, я с удивлением обнаружил: хотя напряжение питания на ней 5 В, сами линии передачи данных D+ и D- подтянуты до 3,3 В.Из-за сжатых сроков пришлось идти на компромиссы и работать по принципу не «семь раз отмерь», а «сделай-проверь-исправь».Какой поворот!
Но оно подойдет только стрессоустойчивым энтузиастам – повторять его дома мы не рекомендуем.
Совет. Не пренебрегайте прототипированием и внимательно читайте таблицы данных!
49–40 дней
Мы устранили проблемы и выпустили партию значков версии 2.0. Он все еще зеленый, но почти работает. Вот что значит иметь занятые руки!Если вы внимательно посмотрите на фото бейджа, то увидите на лицевой стороне два изогнутых штрих-кода (да-да, мы знаем о существовании QR-кодов, но решили, что хотим теплый ламповый штрих-код).
Это была неудачная попытка разместить на бейдже ссылку на веб-сайт с информацией о конференции и инструкциями по эксплуатации.
В финальную версию штрих-код не попал: мы не могли решить, как его расположить, чтобы на доске он выглядел лаконично.
В уменьшенной версии оно не читалось приложением на мобильном телефоне, а в нынешнем размере выглядело слишком чудовищно.
Интересен тот факт. Правый штрих-код на фото рабочий и содержит пасхалку.Во второй версии значка мы исправили USB, настроили подключение модулей и правильно создали зоны для фрезерования.Любой может попробовать посчитать.
Также мы удалили ненужные компоненты и большую часть отладочных перемычек — но не все.
Интересен тот факт. Перемычки 0 Ом для дисплея пришлось оставить, поскольку 0,96-дюймовые I2C OLED-дисплеи имеют две распиновки, которые отличаются расположением контактов питания и заземления.Мы не могли заранее сказать, какая версия этого дисплея к нам придет, и мы пришлось предусмотреть оба варианта.
Обратите внимание на расположение контактов питания и заземления.
На этом же этапе мы начали закупку основной части комплектующих.
Для значка требовались только популярные STM32F1, WS2812B и прочий ширпотреб — мы не ожидали их дефицита и поэтому не торопились.
Но оказывается, что масштаб решает все.
Купить 10 контроллеров на складе в Москве легко, 100 тоже не проблема.
А вот с 1000 и более начинаются трудности.
Нам не удалось найти в столице ни одного продавца, который бы поставил 2000 МК STM32F1 в разумные сроки и за адекватные деньги.
Пришлось заказывать из Екатеринбурга! Те же трудности возникли и с покупкой 8000 светодиодов WS2812B. Последние прилетели к нам с европейского склада и задержались на таможне, что очень потрепало нам нервы.
Единственное, что обошлось недорого, — это пассивные SMD компоненты типа резисторов и конденсаторов типоразмера 0603. Их было предостаточно на московских складах.
Интересен тот факт. Дополнительные модули были заказаны в количестве по 200 штук каждого типа.Забегая вперед, скажу, что все комплектующие нам удалось получить за 3-4 недели.Пришли из Китая — ближе к нужному количеству найти не удалось.
Но это удача, больше рисковать не будем.
Совет. Если вам предстоит закупить комплектующие на 100, 500 и более устройств, не откладывайте задачу.Для таких серий отведите на закупку месяц и более, особенно если речь идет о микросхемах.
39–30 дней
Пакетная версия 3.0. Значок уже черный и полностью рабочий! Есть только очень маленький нюанс.Почему-то с первой версии значка была ошибка в расположении контактов питания и данных на передатчике 433 МГц.
Из-за этой ошибки наш коллега, написавший задание по радио, чуть не поседел.
На его макете Ардуино передача работала надежно на 30 метров, а на бейдже хорошо, если он будет в полуметре от платы.
Несколько дней, пока не нашли ошибку в проводке, коллега мучился и не понимал, что происходит. Федор, прости нас! Хотя загадка, почему устройство с перепутанными контактами вообще сработало?! Итак, нашли баг, исправили две дорожки на плате, поменяли для удобства разъем miniUSB на microUSB, перекрестились, заказали финал v3.1 за 2000 штук.
29–15 дней
Мы беспокоимся о поставках комплектующих из разных уголков мира.По пути ребята выполняют свои задания.
Интересен тот факт. Во время разработки игры Flappy Quote одному из моих коллег удалось обучить бота завершению примерно за полчаса.
14 дней
Платы приехали, компоненты приехали, отправляем на установку! Мы работали с компанией M-board, которая за неделю установила все 2000 устройств.
Совет. Если у вас 100 и более устройств, забудьте о ручной сборке и приготовьтесь к автоматической сборке на конвейере.Учитывайте это при проектировании печатной платы.
(Проконсультируйтесь с выбранным вами производителем – они могут вам многое рассказать.
Есть общие рекомендации по Сайт Резонит .
)
Совет. Производитель печатной платы часто может взять на себя часть работы по подготовке платы к автоматизированной сборке.В нашем случае завод сгруппировал несколько плат в одну заготовку, создал на платах необходимые технические поля и разметил ориентиры, а также оставил всю техническую документацию, необходимую для подготовки линии сборки, в сторонней организации.
10 дней
Берем из установки 12 тестовых плат, проверяем, выдыхаем: все работает как надо.
9–5 дней
Мы активно доделываем задачи и одновременно готовимся к окончательному преодолению здравого смысла.Ведь нам придется прошивать все 2000 устройств вручную.
Для упрощения боевой задачи мы написали Python-скрипт с использованием консольной версии STM32 ST-LINK Utility и подготовили два десятка дешевых ST-Link v2.
Совет. Платы можно было прошить на финальном этапе сборки на заводе и без героических усилий персонала BI.ZONE. Мы не воспользовались этой возможностью только потому, что к концу сборки финальная версия ПО не была готова.
96 часов до конференции
Забираем платы из установки, отключаем мобильные телефоны, запираемся в офисе и вечером загружаем все 2000 устройств.
Интересен тот факт. Из 2000 устройств только 2 не подавали признаков жизни.Процент брака на выходе из установки составил 0,1.
На наших лицах радость, но мысли уже далеко.
Какой значок будет в следующем году? Будем ли мы расширять идею с помощью E-ink или придумаем что-то совершенно новое? Вернёмся к концепции пластиковых карточек или вдохновимся Олимпийскими играми в Токио и сделаем значок-оригами из бумаги? Если у вас есть свежие идеи, прокомментируйте: возможно, через год специалисты по кибербезопасности со всего мира что-нибудь повесят себе на шею!
Вместо заключения
OFFZONE 2019 прошел месяц назад, но нам до сих пор задают вопросы «можно ли как-то получить плату за бейдж».Да, ты можешь! 100 значков получат те, кто первым напишет письмо [email protected] .
Отправляем по всей России и СНГ.
Мероприятие продлится две недели с момента публикации статьи и завершится ровно 2 августа в 13:37 по московскому времени.
Теги: #Производство и разработка электроники #Электроника для начинающих #безопасность #конференции #arduino #Носимая электроника #схемотехника #оффзона #паяльник
-
Заправки Чернил Против. Новые Картриджи
19 Oct, 24 -
Загрузка Файлов .3Ds На Android
19 Oct, 24 -
Путин Запретит Онлайн-Казино
19 Oct, 24 -
Openstack Нуждается В Более Чем Одной Шляпе
19 Oct, 24