Hola Habr!
La última vez hablamos sobre la insignia de la insignia de la conferencia internacional de ciberseguridad OFFZONE 2019 y de qué se trata. Hoy compartiremos historias detrás de escena: cómo llegaron a su creación y cuánto nos costó inventar y producir una serie de 2000 dispositivos. Cronología de eventos, dificultades de desarrollo, adquisición, instalación y otras alegrías del mundo de la electrónica bajo el corte. Vamos!
Cada conferencia práctica de ciberseguridad tiene insignias interactivas. En nuestro caso, la insignia al menos debería servir como billetera para la moneda interna del evento: OFFCOIN.
El año pasado, un mapa de Java hizo frente a esta tarea, a la que arruinamos algunas tareas, un juego de tanques y un sokoban. La misma tarjeta parecía ser el desarrollo lógico de la insignia de 2019, solo que ahora con NFC: aquí hay continuidad, evolución y un mar de ideas para las tareas. Y para ella están todos los logros: esto es importante si está buscando vulnerabilidades en el primer turno y en el segundo organizará una conferencia.
Nos estábamos preparando lentamente para la producción cuando llegaron las noticias del laboratorio de análisis de hardware: los colegas presentarán en OFFZONE su
visión general de los ataques a los sistemas integrados . Los chats de trabajo llenaron las fotos de los paneles preparados, los tipos de canales laterales se discutieron en los pasillos, el tema del hardware ni siquiera capturó a nuestros economistas. Y nos dimos cuenta de que para OFFZONE 2019 necesitamos archivar nuestro propio dispositivo.
Entonces, teníamos 80 días antes de la conferencia, el objetivo era 2,000 dispositivos y 2 desarrolladores de electrónica. Así es como se veía esta épica a través de los ojos de uno de los desarrolladores.
80 dias
Lo primero con lo que comenzamos fue hacer una lluvia de ideas con colegas y generar conceptos de insignia. Entre las ideas se encontraba una placa única con un intérprete básico, una tarjeta de presentación con una pantalla de tinta electrónica, algo del mundo de los dispositivos IoT basados en ESP32 o un módulo similar, y una placa base preparada de antemano para equipos adicionales con módulos adicionales.
79-65 días
Caminamos, tomamos café, digerimos pensamientos. Sopesa los pros y los contras. Leemos tweeters y vemos
lo que otros están haciendo .
64-60 días
Tuvimos otra sesión de lluvia de ideas.
La idea del pagador único fue rechazada. Resultó ser demasiado costoso debido a la abundancia de componentes e instalación: habría más de 30 botones solos. Y para no sorprender a nadie con ese dispositivo,
la insignia de Supercon y otras artesanías similares se recuerdan de inmediato.
También se descartó una tarjeta de presentación con una pantalla de tinta electrónica: no pudieron encontrar una aplicación interesante para ella y decidieron cómo adjuntar tareas potenciales a una insignia. Y el ESP32 parecía algo frívolo: ¡hubiéramos pensado que éramos nuevos arduinistas! (Aunque volveré al tema de Arduino). Hubo la idea de una placa base con la capacidad de escasearla con módulos para resolver tareas.
Un par de días pulieron la idea. Como resultado, elegimos la forma de un disquete de 3.5 pulgadas, decidimos la funcionalidad principal y los kits del cuerpo. Como último, tomamos el interruptor DIP con 8 interruptores, una pantalla OLED, un receptor IR, un transceptor RFID de 13.56 MHz y un receptor y transmisor 433 MHz por separado. El microcontrolador STM32F1, como en el popular tablero
Blue Pill , fue asignado para administrar este variado zoológico.
Al mismo tiempo, surgió la idea de crear una plataforma Craft.Zone en OFFZONE, donde todos pueden llegar a oler las colofonias y equipar personalmente su placa con componentes electrónicos. La zona de soldadura: ¡ese es el movimiento de otro caballero! En primer lugar, esto es interesante e inusual para una conferencia de la industria, en segundo lugar, cautivará incluso a los principiantes, y en tercer lugar, de esta manera aceleraremos la instalación del lote final de dispositivos. ¡Todas las fiestas ganan!
Como resultado, en las primeras semanas aprobamos el concepto, la funcionalidad básica y la base de componentes del futuro dispositivo. Entonces comienza la diversión.
59-50 días
Logramos hacer un circuito, diluir, producir y montar manualmente la primera versión de la placa de identificación. En esta etapa, la elección de una fuente de energía resultó ser la más dolorosa.
Obviamente, la insignia debe ser un dispositivo independiente. Como garantía de esta autonomía, se solicitó una batería de polímero de litio de 0,5 A * hy el correspondiente sistema de control de carga en un controlador simple como TP4096. ¿Pero ha tratado de comprar un par de miles de baterías en Moscú sin un pedido preliminar, e incluso de un fabricante confiable? Lo intentamos, no lo logramos. No nos atrevimos a hacer un pedido en China: la batería es demasiado responsable y representa un riesgo de incendio, y nuestros huéspedes tuvieron que usarla alrededor del cuello. Fue entonces cuando volvimos a las baterías viejas y buenas. Consumo estimado, realizó una serie de experimentos simples y se decidió por una configuración de cuatro baterías AAA. Le dieron de 16 a 20 horas de funcionamiento del dispositivo, dependiendo de la actividad de uso.
Se sacuden el cerebro sobre escribir firmware. En otras circunstancias, escribiríamos software usando Eclipse (arm-none-eabi-gcc), Keil, IAR y otros IDEs humanos y no muy. Sin embargo, nuestro equipo de voluntarios de desarrollo en su mayor parte estaba formado por forenses y pentesters. No era razonable esperar que en su tiempo libre dominaran rápidamente la escritura de firmware para sistemas embebidos.
Prometí que sin los arduins no va a hacer? ¡No mentí! Para simplificar el proceso de desarrollo de software, utilizamos el IDE de Arduino. Afortunadamente, hay un buen proyecto
STM32Duino , que implementa el cargador de arranque Arduino para nuestro STM32F1 de piedra objetivo, y el IDE de Arduino lo admite. En este último, hay una gran parte de las bibliotecas que necesitamos para trabajar con módulos y otras alegrías con respecto a la programación de alto nivel. Por supuesto, no todo es tan fácil con las bibliotecas, pero puedes vivir. Para adaptar la mayoría de ellos a STM32, es suficiente reescribir las funciones que dependen de la plataforma, y eso es todo. ¡Pero editar un código de biblioteca es casi como insertar comillas!
Un hecho interesante Para implementar la funcionalidad de la insignia, utilizamos las siguientes bibliotecas:
- Adafruit_SSD1306 para pantalla OLED,
- MFRC522 para RFID,
- RCSwitch para radio de 433 MHz,
- Irmp-Master para transmisor de infrarrojos.
Y ahora la primera versión del tablero está lista. Salió verde, sin los agujeros fresados necesarios y prácticamente no funcionó.
Un hecho interesante Los prototipos de la placa se ordenaron en Resonite bajo el programa especial "Realmente necesitamos esto ayer", los componentes se compraron en tiendas minoristas en Moscú y la instalación se realizó por nuestra cuenta.
La mayoría de los problemas de la primera versión podrían haberse evitado si hubiéramos ensamblado previamente la parte principal del circuito en una placa de pruebas. Ciertamente notaremos que el receptor y el transmisor requieren diferentes valores del voltaje de entrada: 5 V para el receptor y 3-12 V para el transmisor (en la versión de prueba, ambos módulos se alimentaron desde 3 V). No pasaría y durmiendo USB. Una lectura cuidadosa de los diagramas de circuitos de las placas de tipo Blue Pill ayudó a comprender que USB no funcionaría hasta que la línea USB_P fuera arrancada por una resistencia de 1.5–10 kΩ a una fuente de alimentación de 5 V.
Un hecho interesante Intentando reanimar el USB y metiendo un osciloscopio en una placa, me sorprendió descubrir que aunque el valor del voltaje de alimentación es de 5 V, las líneas de datos D + y D- se tiran hasta 3.3 V. ¡Ese es el turno!
Debido a plazos ajustados, tuvimos que comprometernos y trabajar sobre el principio de "hacer siete veces la medida", pero "hacer-probar-corregir". Pero es adecuado solo para entusiastas resistentes al estrés: no recomendamos repetir en casa.
Consejo ¡No descuides el diseño y lee atentamente las hojas de datos!
49–40 días
Solucionamos problemas y producimos un lote de insignias v2.0. Todavía es verde, pero casi funciona. ¡Eso es lo que significa una mano!

Si observa la insignia de la foto, verá dos curvas de código de barras en la parte frontal (sí, sabemos de la existencia de códigos QR, pero decidimos que queremos un código de barras de tubo caliente). Este fue un intento fallido de poner un enlace al sitio en la insignia con información sobre la conferencia y las instrucciones de funcionamiento. El código de barras no entró en la versión final: no pudimos decidir cómo posicionarlo para que se vea de forma concisa en el tablero. En una versión más pequeña, la aplicación no lo leía en el móvil, pero en el tamaño actual parecía demasiado monstruoso.
Un hecho interesante El código de barras correcto en la foto está funcionando y contiene un huevo de pascua. Los interesados pueden intentar contarlo.
En la segunda versión de la insignia, reparamos el USB, ajustamos la conexión de los módulos, creamos correctamente las zonas para fresar. También se eliminaron los componentes adicionales y la mayoría de los puentes de depuración, pero no todos.
Un hecho interesante Tuve que dejar puentes de 0 ohmios para la pantalla, ya que las pantallas OLED I2C con una diagonal de 0.96 pulgadas tienen dos pines que difieren en la ubicación de los contactos de alimentación y tierra. No podíamos decir de antemano qué versión de esta pantalla nos llegaría, y tuvimos que prever ambas opciones.
Preste atención a la ubicación de los contactos de alimentación y tierra.En la misma etapa, comenzamos a comprar la mayor parte de los componentes. La insignia solo requería el popular STM32F1, WS2812B y otros bienes de consumo; no esperábamos su escasez y, por lo tanto, no teníamos prisa. Pero resultó que todo decide la escala. Comprar 10 controladores en stock en Moscú es fácil, 100 tampoco es una pregunta. Pero con 1000 o más dificultades comienzan. No pudimos encontrar un único vendedor en la capital que entregara 2000 MK STM32F1 por un tiempo razonable y dinero adecuado. Tuve que ordenar de Ekaterinburg!
Las mismas dificultades surgieron con la compra de 8,000 LEDs WS2812B. Este último voló hacia nosotros desde un almacén europeo y se demoró en la aduana, lo cual fue algo bueno para nuestros nervios.
Lo único que consiguió un poco de sangre fueron los componentes SMD pasivos, como resistencias y condensadores de tamaño 0603. Estos se encontraban a granel en los almacenes de Moscú.
Un hecho interesante Se ordenaron módulos adicionales para 200 piezas de cada tipo. Vinieron de China, no había ninguna cantidad más cercana.
Mirando hacia el futuro, diré que todos los componentes se obtuvieron en 3-4 semanas. Pero esto es suerte, no tomaremos más riesgos.
Consejo Si tiene que comprar componentes para 100, 500 o más dispositivos, no posponga la tarea en el cuadro largo. Con tales series, tome un mes o más para comprar, especialmente si estamos hablando de microcircuitos.
39-30 días
Fiesta v3.0. ¡La insignia ya es negra y completamente funcional! Solo hay un matiz ma-a-a-scarlet. De alguna manera, se produjo un error en la ubicación de los contactos de alimentación y datos en el transmisor de 433 MHz de la primera versión de la placa.
Debido a este error, nuestro colega, que escribió la tarea en la radio, casi se puso gris. En su maqueta arduino, la transmisión funcionó con confianza durante 30 metros, pero en la placa, bueno, a medio metro del tablero. Unos días, hasta que encontraron un error en el cableado, un colega fue atormentado y no entendió lo que estaba sucediendo. Fedor, perdónanos! Aunque es un misterio, ¿por qué funcionó el dispositivo con pines mixtos?
Entonces, encontramos un error, arreglamos dos pistas en el tablero, por conveniencia cambiamos el conector miniUSB a microUSB, nos cruzamos, pedimos el v3.1 final para 2000 piezas.
29-15 días
Vamos, preocúpese por el suministro de componentes de todo el mundo. En el camino, los chicos terminan sus tareas.
Un hecho interesante Durante el desarrollo del juego Flappy Quote, uno de los colegas logró nutrir al bot por pasar en aproximadamente media hora.
14 dias
Llegaron tableros, llegaron componentes, ¡entregamos en la instalación! Trabajamos con la "placa M", que montó los 2000 dispositivos en una semana.
Consejo Si tiene 100 o más dispositivos, olvídese de la instalación manual y prepárese para la línea de montaje automática. Tenga esto en cuenta al diseñar una PCB. (Consulte al fabricante elegido; pueden decirle mucho. Hay recomendaciones generales en el sitio web de Resonita ).
Consejo El fabricante de PCB a menudo puede asumir la parte de preparar la placa para la instalación automática. En nuestro caso, la planta agrupó varios tableros en un espacio en blanco, creó los campos técnicos necesarios y aplicó puntos de referencia en los tableros, y también dejó toda la documentación técnica necesaria para preparar la línea de ensamblaje en la tercera organización.

10 dias
Tomamos 12 placas de prueba de la instalación, verificamos, exhalamos: todo funciona como debería.

9-5 días
Terminamos activamente las tareas, mientras nos preparamos para la superación final del sentido común. Después de todo, todos los 2000 dispositivos tendremos que flashear manualmente. Para simplificar la misión de combate, escribieron un script de python usando la versión de consola de la utilidad STM32 ST-LINK y prepararon dos docenas de ST-Link v2 baratas.

Consejo Los paneles se podrían mostrar en la etapa final de ensamblaje en la fábrica y sin los esfuerzos heroicos del personal de BI.ZONE. No aprovechamos esta oportunidad solo porque la versión final del software no estaba lista al final del ensamblaje.
96 horas antes de la conferencia
Tomamos las placas de la instalación, apagamos los teléfonos móviles, nos encerramos en la oficina y completamos los 2000 dispositivos por la noche.
Un hecho interesante De los 2000 dispositivos, solo 2 mostraron signos de vida. El porcentaje de rechazos a la salida de la instalación es 0.1.

Hay alegría en nuestros rostros, pero los pensamientos están muy lejos. ¿Cuál será la insignia el próximo año? ¿Probaremos la idea con E-ink o se nos ocurrirá algo completamente nuevo? Volvamos al concepto de tarjetas de plástico o ¿nos inspiraremos en los Juegos Olímpicos de Tokio y obtendremos insignias de papel de origami? Si tiene ideas nuevas, por favor comente: ¡es posible que algo de lo propuesto un año después sea colgado por expertos en ciberseguridad de todo el mundo!
En lugar de una conclusión
OFFZONE 2019 se celebró hace un mes, pero todavía nos hacen las preguntas "¿puedo obtener una insignia de alguna manera". Si puedes! Se enviarán 100 insignias a quienes sean los primeros en escribir a
info@offzone.moscow . Enviamos a Rusia y la CEI. El evento durará dos semanas a partir de la fecha de publicación del artículo y se cerrará exactamente el 2 de agosto a las 13:37 hora de Moscú.