Em torno do crachá em 80 dias: do outro lado OFFZONE

Olá Habr! Na última vez em que conversamos sobre o distintivo do distintivo da conferência internacional de segurança cibernética OFFZONE 2019 e o que é com ele. Hoje, compartilharemos histórias dos bastidores: como elas surgiram e o que nos custou inventar e produzir uma série de 2.000 dispositivos. Cronograma de eventos, armadilhas do desenvolvimento, compras, instalação e outras alegrias do mundo da eletrônica em questão. Vamos lá!



Cada conferência prática sobre segurança cibernética possui crachás interativos. No nosso caso, o crachá deve servir pelo menos como carteira da moeda interna do evento - OFFCOIN.

No ano passado, um mapa de Java lidou com essa tarefa, na qual estragamos algumas tarefas, um jogo de tanques e um sokoban. O mesmo cartão parecia ser o desenvolvimento lógico do crachá de 2019, apenas agora com a NFC: aqui há continuidade, evolução e um mar de idéias para tarefas. E para ela, existem todas as conquistas - isso é importante se você estiver procurando por vulnerabilidades no primeiro turno e no segundo você organizará uma conferência.

Estávamos nos preparando lentamente para a produção quando as notícias vieram do laboratório de análise de hardware: colegas apresentarão no OFFZONE sua visão geral dos ataques a sistemas embarcados . Bate-papos de trabalho preenchiam as fotos das placas preparadas, os tipos de canais laterais eram discutidos nos corredores, o tema do hardware nem sequer capturava nossos economistas. E percebemos que, para o OFFZONE 2019, precisamos registrar nosso próprio dispositivo.

Então, tínhamos 80 dias antes da conferência, o objetivo era 2.000 dispositivos e 2 desenvolvedores de eletrônicos. Aqui está como foi esse épico através dos olhos de um dos desenvolvedores.

80 dias


A primeira coisa que começamos foi fazer um brainstorming com colegas e gerar conceitos de distintivo. Entre as idéias, havia uma única placa com um intérprete básico, uma placa de nome com uma tela de tinta E, algo do mundo dos dispositivos IoT baseados no ESP32 ou em um módulo similar e uma placa-mãe preparada previamente para equipamentos adicionais com módulos adicionais.

79-65 dias


Andamos, tomamos café, digerimos pensamentos. Pese os prós e os contras. Lemos tweeters e vemos o que os outros estão fazendo .

64-60 dias


Tivemos outra sessão de brainstorming.

A ideia de pagador único foi lançada de volta. Acabou sendo muito caro devido à abundância de componentes e instalação: haveria mais de 30 botões sozinhos.E não para surpreender ninguém com esse dispositivo - o Supercon Badge e artesanato semelhante são lembrados imediatamente.

Um cartão de visita com uma tela de tinta eletrônica também foi descartado: eles não conseguiram encontrar um aplicativo interessante e decidiram como anexar tarefas em potencial a um crachá. E o ESP32 parecia de alguma maneira frívolo - teríamos pensado que éramos novos arduinistas! (Embora voltarei ao tema do Arduino.). Havia a idéia de uma placa-mãe com a capacidade de insuficiente com módulos para resolver tarefas.

Alguns dias poliram a idéia. Como resultado, escolhemos a forma de um disquete de 3,5 polegadas, decidido pelas principais funcionalidades e kits corporais. Como último, levamos o DIP Switch com 8 switches, um display OLED, um receptor IR, um transceptor RFID de 13,56 MHz e um receptor e transmissor separado de 433 MHz. O microcontrolador STM32F1, como na popular placa Blue Pill , foi designado para gerenciar esse zoológico heterogêneo.

Ao mesmo tempo, surgiu a ideia de criar uma plataforma Craft.Zone no OFFZONE, onde todos podem cheirar as rosas e equipar pessoalmente seus crachás com componentes eletrônicos. A zona de solda - esse é o movimento de outro cavaleiro! Em primeiro lugar, isso é interessante e incomum para uma conferência do setor; em segundo lugar, encanta até os iniciantes; e, em terceiro lugar, dessa forma, aceleraremos a instalação do lote final de dispositivos. Todas as partes ganham!

Como resultado, nas primeiras semanas, aprovamos o conceito, a funcionalidade básica e a base de componentes do futuro dispositivo. Então a diversão começa.

59-50 dias


Conseguimos fazer um circuito, diluir, produzir e montar manualmente a primeira versão do cartão de identificação. Nesse estágio, a escolha de uma fonte de energia acabou sendo a mais dolorosa.

Obviamente, o crachá deve ser um dispositivo independente. Como garantia dessa autonomia, foi solicitada uma bateria de polímero de lítio de 0,5 A * h e o sistema de controle de carga correspondente em um controlador simples como TP4096. Mas você tentou comprar algumas milhares de baterias em Moscou sem um pedido preliminar e até de um fabricante confiável? Tentamos - não conseguimos. Não ousamos encomendar da China: a bateria é muito responsável e possui risco de incêndio, e nossos convidados tiveram que usá-la no pescoço. Foi então que voltamos às boas e velhas baterias. O consumo estimado, conduziu uma série de experimentos simples e se estabeleceu em uma configuração de quatro pilhas AAA. Eles deram 16–20 horas de operação do dispositivo, dependendo da atividade de uso.

Eles quebram a cabeça ao escrever firmware. Em outras circunstâncias, escreveríamos software usando Eclipse (arm-none-eabi-gcc), Keil, IAR e outros IDEs humanos e não muito. No entanto, nossa equipe de voluntários de desenvolvimento consistia na maior parte em forense e pentesters. Não era razoável esperar que, em seu tempo livre, eles dominassem rapidamente a escrita de firmware para sistemas embarcados.

Eu prometi que sem os arduins não serve? Eu não menti! Para simplificar o processo de desenvolvimento de software, usamos o IDE do Arduino. Felizmente, existe um bom projeto STM32Duino , que imediatamente implementa o gerenciador de inicialização do Arduino para o STM32F1, e o IDE do Arduino o suporta. Neste último, há uma grande parte das bibliotecas que precisamos trabalhar com módulos e outras alegrias relacionadas à programação de alto nível. Claro, nem tudo é tão bom com as bibliotecas, mas você pode viver. Para adaptar a maioria deles ao STM32, basta reescrever funções dependentes da plataforma - e isso é tudo. Mas editar um código de biblioteca é quase como inserir aspas!

Um fato interessante. Para implementar a funcionalidade do emblema, usamos as seguintes bibliotecas:

  • Adafruit_SSD1306 para exibição OLED,
  • MFRC522 para RFID,
  • RCSwitch para rádio de 433 MHz,
  • irmp-master para transmissor infravermelho.


E agora a primeira versão do quadro está pronta. Saiu verde, sem os furos fresados ​​necessários e praticamente não funcionou.

Um fato interessante. Os protótipos da placa foram encomendados na Resonite sob o programa especial “Nós realmente precisamos disso ontem”, os componentes foram comprados em lojas de varejo em Moscou e a instalação foi realizada por conta própria.

A maioria dos problemas da primeira versão poderia ter sido evitada se anteriormente montássemos a parte principal do circuito em uma placa de ensaio. Certamente notaríamos que o receptor e o transmissor exigem valores diferentes da tensão de entrada: 5 V para o receptor e 3-12 V para o transmissor (na versão de teste, os dois módulos eram alimentados a partir de 3 V). Não iria passar e dormir USB. Uma leitura cuidadosa dos diagramas de circuito das placas do tipo Blue Pill ajudou a entender que o USB não funcionaria até que a linha USB_P fosse puxada por um resistor de 1,5 a 10 kΩ para uma fonte de alimentação de 5 V.

Um fato interessante. Tentando reanimar o USB e enfiar um osciloscópio em uma placa, fiquei surpreso ao descobrir: embora a voltagem seja de 5 V, as linhas de dados D + e D- são puxadas para 3,3 V. Essa é a vez!

Devido a prazos apertados, tivemos que comprometer e trabalhar com o princípio de “fazer sete vezes a medida”, mas “fazer o teste-corrigir”. Mas é adequado apenas para entusiastas resistentes ao estresse - não recomendamos a repetição em casa.

Dica. Não negligencie o layout e leia atentamente as folhas de dados!

49-40 dias


Corrigimos problemas e produzimos um lote de emblemas v2.0. Ainda está verde, mas está quase funcionando. Isso é o que significa uma mão!



Se você olhar para o emblema da foto, verá duas curvas de código de barras na parte frontal (sim, sabemos da existência de códigos QR, mas decidimos que queremos um código de barras de tubo quente). Foi uma tentativa malsucedida de colocar um link para o site no crachá com informações sobre a conferência e as instruções de operação. O código de barras não chegou à versão final: não podíamos decidir como posicioná-lo para que ele aparecesse de forma concisa no quadro. Em uma versão menor, não era lida pelo aplicativo no celular, mas no tamanho atual parecia muito monstruosa.

Um fato interessante. O código de barras certo na foto está funcionando e contém um ovo de páscoa. Os interessados ​​podem tentar contar.

Na segunda versão do crachá, consertamos o USB, ajustamos a conexão dos módulos, criamos corretamente as zonas para fresamento. Também foram removidos os componentes extras e a maioria dos jumpers de depuração - mas não todos.

Um fato interessante. Eu tive que deixar jumpers de 0 Ohm para a tela, pois as telas I2C OLED com uma diagonal de 0,96 polegadas têm duas pinagens que diferem na localização dos contatos de potência e terra. Não podíamos dizer com antecedência qual versão dessa tela chegaria até nós e tivemos que prever as duas opções.


Preste atenção à localização dos contatos de energia e terra.

No mesmo estágio, começamos a comprar a maior parte dos componentes. O crachá exigia apenas os populares STM32F1, WS2812B e outros bens de consumo - não esperávamos sua falta e, portanto, não estávamos com pressa. Mas aconteceu que tudo decide a escala. Comprar 10 controladores em estoque em Moscou é fácil, 100 também não é uma pergunta. Mas com 1000 ou mais dificuldades começam. Não conseguimos encontrar um único vendedor na capital que entregasse 2000 MK STM32F1 por um tempo razoável e dinheiro adequado. Teve que pedir de Ekaterinburg!

As mesmas dificuldades surgiram com a compra de 8.000 LEDs WS2812B. Este último voou para nós de um armazém europeu e permaneceu na alfândega, o que foi bom para nossos nervos.

A única coisa que conseguiu um pouco de sangue foram os componentes SMD passivos, como resistores e capacitores do tamanho 0603. Estes eram a granel nos armazéns de Moscou.

Um fato interessante. Módulos adicionais foram encomendados para 200 peças de cada tipo. Eles vieram da China - não havia quantidade mais próxima.

Olhando para o futuro, direi que todos os componentes foram obtidos em 3 a 4 semanas. Mas isso é sorte, não correremos mais riscos.

Dica. Se você precisar comprar componentes para 100, 500 ou mais dispositivos, não adie a tarefa na caixa longa. Com essas séries, leve um mês ou mais para comprar, principalmente se estivermos falando de microcircuitos.

39-30 dias


Parte v3.0. O crachá já está preto e totalmente funcional! Existe apenas uma nuance ma-a-a-scarlet. De alguma forma, ocorreu um erro na localização dos contatos de energia e dados no transmissor 433 MHz a partir da primeira versão do crachá.

Devido a esse erro, nosso colega, que escreveu a tarefa no rádio, quase ficou cinza. Em sua maquete de arduino, a transmissão funcionou com confiança por 30 metros, mas no crachá - bem, a meio metro da placa. Alguns dias, até encontrar um bug na fiação, um colega ficou atormentado e não entendeu o que estava acontecendo. Fedor, perdoe-nos! Embora seja um mistério, por que o dispositivo com pinos misturados funcionou?

Então, encontramos um bug, consertamos duas faixas na placa; por conveniência, mudamos o conector miniUSB para microUSB, cruzamos a ordem e pedimos a v3.1 final para 2000 peças.

29-15 dias


Vamos nos preocupar com o fornecimento de componentes de todo o mundo. Ao longo do caminho, os caras terminam suas tarefas.

Um fato interessante. Durante o desenvolvimento do jogo Flappy Quote, um dos colegas conseguiu nutrir o bot por passar cerca de meia hora.



14 dias


Placas vieram, componentes vieram, nós damos instalação! Trabalhamos com o "M-board", que montou todos os 2000 dispositivos em uma semana.

Dica. Se você possui 100 ou mais dispositivos, esqueça a instalação manual e prepare-se para a linha de montagem automática. Lembre-se disso ao projetar uma PCB. (Consulte o fabricante escolhido - eles podem lhe dizer muito. Existem recomendações gerais no site da Resonita .)

Dica. O fabricante da placa de circuito impresso pode muitas vezes preparar a placa para instalação automática. No nosso caso, a planta agrupou várias placas em um espaço em branco, criou os campos técnicos necessários e aplicou pontos de referência nas placas e também deixou toda a documentação técnica necessária para preparar a linha de montagem na terceira organização.



10 dias


Testamos 12 placas desde a instalação, verificamos e expiramos: tudo funciona como deveria.



9-5 dias


Concluímos ativamente as tarefas, ao longo do caminho que estamos nos preparando para a superação final do senso comum. Afinal, todos os 2000 dispositivos precisaremos piscar manualmente. Para simplificar a missão de combate, eles escreveram um script python usando a versão do console do STM32 ST-LINK Utility e prepararam duas dúzias baratas do ST-Link v2.



Dica. As placas poderiam ser exibidas na fase final de montagem na fábrica e sem os esforços heróicos do pessoal da BI.ZONE. Não aproveitamos essa oportunidade apenas porque a versão final do software não estava pronta no final da montagem.

96 horas antes da conferência


Pegamos as placas da instalação, desligamos os telefones celulares, nos trancamos no escritório e preenchemos todos os 2000 dispositivos à noite.

Um fato interessante. Dos dispositivos de 2000, apenas 2 apresentaram sinais de vida útil. A porcentagem de rejeições na saída da instalação é de 0,1.



Há alegria em nossos rostos, mas os pensamentos estão distantes. Qual será o emblema no próximo ano? Vamos provar a idéia com E-ink ou criar algo completamente novo? Vamos voltar ao conceito de cartões de plástico ou seremos inspirados pelas Olimpíadas de Tóquio e receberemos emblemas de origami de papel? Se você tem novas idéias, por favor, comente: é possível que algo da proposta um ano depois seja enforcado por especialistas em segurança cibernética de todo o mundo!

Em vez de uma conclusão


O OFFZONE 2019 foi realizado há um mês, mas ainda estamos nos perguntando "posso obter um crachá de alguma forma". Sim você pode! 100 distintivos irão para aqueles que são os primeiros a escrever para info@offzone.moscow . Nós enviamos para a Rússia e a CEI. O evento durará duas semanas a partir da data de publicação do artigo e será encerrado exatamente no dia 2 de agosto às 13:37, horário de Moscou.

Source: https://habr.com/ru/post/pt460631/


All Articles