Halo, Habr!
Terakhir kali kami berbicara tentang lencana lencana konferensi cybersecurity internasional OFFZONE 2019 dan apa masalahnya. Hari ini kita akan berbagi kisah di balik layar: bagaimana kisah-kisah itu sampai pada penciptaannya dan berapa biayanya bagi kita untuk menciptakan dan memproduksi serangkaian 2000 perangkat. Garis waktu peristiwa, jebakan pengembangan, pengadaan, instalasi, dan kegembiraan lainnya dari dunia elektronik yang terpotong. Ayo pergi!
Setiap konferensi keamanan siber praktis memiliki lencana interaktif. Dalam kasus kami, lencana setidaknya harus berfungsi sebagai dompet untuk mata uang internal acara - OFFCOIN.
Tahun lalu, sebuah peta Jawa mengatasi tugas ini, yang mana kami mengacaukan beberapa tugas, permainan tank dan sokoban. Kartu yang sama tampaknya merupakan pengembangan logis dari lencana 2019, hanya sekarang dengan NFC: di sini ada kesinambungan, evolusi, dan banyak ide untuk tugas. Dan baginya ada semua pencapaian - ini penting jika Anda mencari kerentanan di shift pertama, dan di kedua Anda akan mengatur konferensi.
Kami perlahan-lahan bersiap untuk produksi ketika berita datang dari laboratorium analisis perangkat keras: rekan kerja akan hadir di OFFZONE
tinjauan umum tentang serangan pada sistem tertanam . Obrolan kerja mengisi foto-foto papan yang disiapkan, jenis saluran samping dibahas di koridor, tema perangkat keras bahkan tidak menangkap ekonom kita. Dan kami menyadari bahwa untuk OFFZONE 2019 kita perlu mengarsipkan perangkat kita sendiri.
Jadi, kami punya 80 hari sebelum konferensi, tujuannya adalah 2.000 perangkat dan 2 pengembang elektronik. Inilah yang terlihat seperti epik ini melalui mata salah satu pengembang.
80 hari
Hal pertama yang kami mulai adalah bertukar pikiran dengan rekan kerja dan membuat konsep lencana. Di antara ide-ide itu adalah papan tunggal dengan penerjemah dari beberapa dasar di papan, kartu nama dengan layar E-ink, sesuatu dari dunia perangkat IoT berdasarkan ESP32 atau modul serupa, dan motherboard dasar disiapkan di muka untuk peralatan tambahan dengan modul tambahan.
79–65 hari
Kami berjalan, minum kopi, mencerna pikiran. Timbang pro dan kontra. Kami membaca tweeter dan melihat
apa yang dilakukan orang lain .
64-60 hari
Kami memiliki sesi curah pendapat lain.
Gagasan satu-pembayar terlempar kembali. Ternyata terlalu mahal karena banyaknya komponen dan pemasangan: akan ada lebih dari 30 tombol saja. Dan tidak mengejutkan siapa pun dengan perangkat seperti itu -
Lencana Supercon dan kerajinan serupa segera diingat.
Kartu nama dengan tampilan E-ink juga dibubarkan: mereka tidak dapat menemukan aplikasi yang menarik untuknya dan memutuskan bagaimana cara melampirkan tugas potensial ke lencana. Dan ESP32 terlihat entah bagaimana sembrono - kami akan berpikir bahwa kami adalah arduinists baru! (Meskipun saya akan kembali ke tema Arduino.). Ada ide motherboard dengan kemampuan untuk kekurangan dengan modul untuk menyelesaikan tugas.
Beberapa hari memoles ide itu. Akibatnya, kami memilih bentuk floppy disk 3,5 inci, memutuskan fungsi utama dan body kit. Sebagai yang terakhir, kami mengambil DIP Switch dengan 8 switch, layar OLED, penerima IR, transceiver RFID 13,56 MHz dan penerima dan pemancar 433 MHz yang terpisah. Mikrokontroler STM32F1, seperti pada papan
Blue Pill yang populer, ditugaskan untuk mengelola kebun binatang beraneka ragam ini.
Pada saat yang sama, muncul ide untuk membuat platform Craft.Zone di OFFZONE, di mana setiap orang dapat mencium aroma rosin dan secara pribadi melengkapi lencananya dengan komponen elektronik. Zona solder - itu langkah ksatria lain! Pertama, ini menarik dan tidak biasa untuk konferensi industri, kedua, itu akan memikat pemula, dan ketiga, dengan cara ini kita akan mempercepat pemasangan batch terakhir perangkat. Semua pihak menang!
Sebagai hasilnya, pada minggu-minggu pertama kami menyetujui konsep, fungsi dasar dan basis komponen perangkat masa depan. Kemudian kesenangan dimulai.
59-50 hari
Kami berhasil membuat sirkuit, mencairkan, memproduksi, dan secara manual memasang versi pertama papan lencana. Pada tahap ini, pilihan sumber daya ternyata menjadi yang paling menyakitkan.
Jelas, lencana harus berupa perangkat mandiri. Sebagai jaminan otonomi ini, baterai lithium-polimer 0,5 A * h dan sistem kontrol muatan yang sesuai pada pengontrol sederhana seperti TP4096 diminta. Tetapi apakah Anda sudah mencoba membeli beberapa ribu baterai di Moskow tanpa pesanan awal, dan bahkan dari produsen yang tepercaya? Kami mencoba - kami tidak berhasil. Kami tidak berani memesan dari Cina: baterai terlalu bertanggung jawab dan bahaya kebakaran, dan tamu kami harus memakainya di leher mereka. Saat itulah kami kembali ke baterai tua yang baik. Diperkirakan konsumsi, melakukan serangkaian percobaan sederhana dan menetapkan konfigurasi empat baterai AAA. Mereka memberi 16-20 jam pengoperasian perangkat, tergantung pada aktivitas penggunaan.
Mereka memutar otak mereka karena menulis firmware. Dalam keadaan lain, kami akan menulis perangkat lunak menggunakan Eclipse (arm-none-eabi-gcc), Keil, IAR, dan manusia lainnya dan tidak terlalu IDE. Namun, tim relawan pengembangan kami sebagian besar terdiri dari forensik dan pentester. Tidak masuk akal untuk berharap bahwa di waktu luang mereka dengan cepat akan menguasai penulisan firmware untuk sistem tertanam.
Saya berjanji bahwa tanpa arduins tidak akan melakukannya? Saya tidak berbohong! Untuk menyederhanakan proses pengembangan perangkat lunak, kami menggunakan Arduino IDE. Untungnya, ada proyek
STM32Duino yang bagus , yang di luar kotak mengimplementasikan bootloader Arduino untuk batu target kami STM32F1, dan Arduino IDE mendukungnya. Dalam yang terakhir, ada bagian besar dari perpustakaan yang kita butuhkan untuk bekerja dengan modul dan kesenangan lain mengenai pemrograman tingkat tinggi. Tentu saja, tidak semuanya lancar dengan perpustakaan, tetapi Anda bisa hidup. Untuk menyesuaikan sebagian besar dari mereka dengan STM32, cukup menulis ulang fungsi yang bergantung pada platform - dan itu saja. Tetapi mengedit kode perpustakaan hampir seperti menyisipkan tanda kutip!
Fakta yang menarik. Untuk menerapkan fungsi lencana, kami menggunakan pustaka berikut:
- Adafruit_SSD1306 untuk tampilan OLED,
- MFRC522 untuk RFID,
- RCSwitch untuk radio 433 MHz,
- irmp-master untuk pemancar inframerah.
Dan sekarang versi pertama board sudah siap. Itu keluar hijau, tanpa lubang giling yang diperlukan dan praktis tidak berhasil.
Fakta yang menarik. Prototipe papan dipesan di Resonite di bawah program khusus "Kami benar-benar membutuhkan ini kemarin", komponen dibeli di toko-toko ritel di Moskow, dan pemasangan dilakukan sendiri.
Sebagian besar masalah dari versi pertama bisa dihindari jika kita sebelumnya memasang bagian utama dari sirkuit di papan tempat memotong roti. Kita tentu akan memperhatikan bahwa penerima dan pemancar memerlukan nilai tegangan input yang berbeda: 5 V untuk penerima dan 3-12 V untuk pemancar (dalam versi uji coba, kedua modul diberi daya dari 3 V). Tidak akan lewat dan tidur USB. Pembacaan yang hati-hati dari diagram sirkuit papan tipe Blue Pill membantu untuk memahami bahwa USB tidak akan bekerja sampai garis USB_P ditarik oleh resistor 1,5-10 kΩ ke catu daya 5 V.
Fakta yang menarik. Mencoba menghidupkan kembali USB dan menyodok osiloskop ke papan, saya terkejut menemukan: meskipun tegangan di dalamnya adalah 5 V, jalur data D + dan D- sendiri ditarik hingga 3,3 V. Itulah gilirannya!
Karena tenggat waktu yang ketat, kami harus berkompromi dan bekerja berdasarkan prinsip "lakukan tujuh kali", tetapi "lakukan-tes-benar". Tetapi ini hanya cocok untuk penggemar yang tahan stres - kami tidak menyarankan mengulang di rumah.
Kiat. Jangan abaikan tata letak dan baca lembar data dengan cermat!
49–40 hari
Kami memperbaiki masalah dan menghasilkan banyak lencana v2.0. Masih hijau, tetapi hampir berfungsi. Itulah arti tangan!

Jika Anda melihat lencana foto, Anda akan melihat dua kurva barcode di sisi depan (ya, kami tahu tentang keberadaan kode QR, tetapi kami memutuskan bahwa kami menginginkan barcode tabung hangat). Ini adalah upaya yang gagal untuk menempatkan tautan ke situs pada lencana dengan informasi tentang konferensi dan instruksi pengoperasian. Barcode tidak masuk ke versi final: kami tidak dapat memutuskan bagaimana memposisikannya sehingga terlihat ringkas di papan tulis. Dalam versi yang lebih kecil, itu tidak dibaca oleh aplikasi di ponsel, tetapi dalam ukuran saat ini terlihat terlalu mengerikan.
Fakta yang menarik. Kode batang kanan di foto berfungsi dan mengandung telur paskah. Mereka yang tertarik dapat mencoba menghitungnya.
Pada versi kedua dari lencana, kami memperbaiki USB, menyesuaikan koneksi modul, membuat zona untuk penggilingan dengan benar. Juga menghapus komponen tambahan dan sebagian besar jumper debugging - tetapi tidak semua.
Fakta yang menarik. Saya harus meninggalkan 0 Ohm jumper untuk tampilan, karena I2C OLED display dengan diagonal 0,96 inci memiliki dua pinout yang berbeda di lokasi daya dan kontak ground. Kami tidak dapat mengatakan sebelumnya versi mana dari tampilan ini yang akan datang kepada kami, dan kami harus meramalkan kedua opsi tersebut.
Perhatikan lokasi kontak daya dan ground.Pada tahap yang sama, kami mulai membeli sebagian besar komponen. Lencana hanya memerlukan STM32F1, WS2812B dan barang-barang konsumen populer lainnya - kami tidak mengharapkan kekurangannya dan karenanya tidak terburu-buru. Tapi ternyata semuanya menentukan skala. Membeli 10 controller dalam stok di Moskow itu mudah, 100 juga bukan pertanyaan. Tetapi dengan 1000 atau lebih kesulitan dimulai. Kami tidak dapat menemukan penjual tunggal di ibukota yang akan memberikan 2.000 MK STM32F1 untuk waktu yang wajar dan uang yang memadai. Harus memesan dari Ekaterinburg!
Kesulitan yang sama muncul dengan pembelian 8.000 WS2812B LED. Yang terakhir terbang kepada kami dari gudang Eropa dan berlama-lama di bea cukai, yang merupakan hal yang baik untuk saraf kita.
Satu-satunya hal yang mendapat sedikit darah adalah komponen SMD pasif seperti resistor dan kapasitor berukuran 0603. Ini dalam jumlah besar di gudang Moskow.
Fakta yang menarik. Modul tambahan dipesan untuk 200 buah dari setiap jenis. Mereka datang dari Tiongkok - tidak ada jumlah yang lebih dekat.
Ke depan, saya akan mengatakan bahwa semua komponen diperoleh dalam 3-4 minggu. Tapi ini keberuntungan, kami tidak akan mengambil risiko lagi.
Kiat. Jika Anda harus membeli komponen untuk 100, 500 atau lebih perangkat, jangan menunda tugas di kotak panjang. Dengan seri seperti itu, perlu satu bulan atau lebih untuk membeli, terutama jika kita berbicara tentang sirkuit mikro.
39-30 hari
Pesta v3.0. Lencana sudah hitam dan berfungsi penuh! Hanya ada nuansa ma-a-a-scarlet. Entah bagaimana, kesalahan terjadi di lokasi kontak daya dan data pada pemancar 433 MHz dari versi pertama lencana.
Karena kesalahan ini, kolega kami, yang menulis tugas di radio, hampir menjadi abu-abu. Pada arduino mockup-nya, transmisi bekerja dengan percaya diri selama 30 meter, tetapi pada lencana - yah, jika setengah meter dari papan. Beberapa hari, sampai mereka menemukan bug di kabel, seorang kolega tersiksa dan tidak mengerti apa yang terjadi. Fedor, maafkan kami! Meskipun ini sebuah misteri, mengapa perangkat dengan pin campuran bekerja sama sekali ?!
Jadi, kami menemukan bug, memperbaiki dua trek di papan, untuk kenyamanan kami mengubah konektor miniUSB ke microUSB, menyilangkan sendiri, memesan v3.1 final untuk 2.000 keping.
29-15 hari
Kami pergi, khawatir tentang pasokan komponen dari seluruh dunia. Sepanjang jalan, para pria menyelesaikan tugas mereka.
Fakta yang menarik. Selama pengembangan game Flappy Quote, salah satu kolega berhasil memberi makan bot karena melewati sekitar setengah jam.
14 hari
Papan datang, komponen datang, kami berikan instalasi! Kami bekerja dengan "M-board", yang memasang semua 2000 perangkat dalam seminggu.
Kiat. Jika Anda memiliki 100 perangkat atau lebih, lupakan instalasi manual dan bersiaplah untuk jalur perakitan otomatis. Ingatlah ini saat mendesain PCB. (Konsultasikan dengan produsen pilihan Anda - mereka dapat memberi tahu Anda banyak. Ada rekomendasi umum di situs web Resonita .)
Kiat. Pabrikan PCB sering dapat mengambil bagian dari mempersiapkan papan untuk pemasangan otomatis. Dalam kasus kami, pabrik mengelompokkan beberapa papan menjadi satu kosong, menciptakan bidang teknis yang diperlukan dan titik referensi terapan di papan, dan juga meninggalkan semua dokumentasi teknis yang diperlukan untuk mempersiapkan jalur perakitan di organisasi ketiga.

10 hari
Kami mengambil tes 12 papan dari instalasi, periksa, buang: semuanya berfungsi sebagaimana mestinya.

9–5 hari
Kami secara aktif menyelesaikan tugas, di sepanjang jalan kami sedang mempersiapkan untuk mengatasi akal sehat yang terakhir. Bagaimanapun, semua 2000 perangkat yang harus kita flash secara manual. Untuk menyederhanakan misi pertempuran, mereka menulis skrip python menggunakan versi konsol STM32 ST-LINK Utility dan menyiapkan dua lusin ST-Link v2 murah.

Kiat. Papan dapat dipasang pada tahap akhir perakitan di pabrik dan tanpa upaya heroik personel BI.ZONE. Kami tidak menggunakan kesempatan ini hanya karena versi final dari perangkat lunak belum siap pada akhir perakitan.
96 jam sebelum konferensi
Kami mengambil papan dari instalasi, mematikan ponsel, mengunci diri di kantor dan mengisi semua 2000 perangkat di malam hari.
Fakta yang menarik. Dari 2000 perangkat, hanya 2 yang menunjukkan tanda-tanda kehidupan. Persentase penolakan di pintu keluar dari instalasi adalah 0,1.

Ada sukacita di wajah kami, tetapi pikiran jauh. Apa yang akan menjadi lencana tahun depan? Akankah kita membuktikan gagasan itu dengan tinta-E atau menghasilkan sesuatu yang sama sekali baru? Mari kita kembali ke konsep kartu plastik atau akankah kita terinspirasi oleh Olimpiade Tokyo dan mendapatkan lencana kertas origami dicuci? Jika Anda memiliki ide-ide segar, silakan berkomentar: ada kemungkinan bahwa sesuatu dari yang diusulkan satu tahun kemudian akan digantung oleh para pakar keamanan siber dari seluruh dunia!
Alih-alih sebuah kesimpulan
OFFZONE 2019 diadakan sebulan yang lalu, tetapi kami masih ditanyai pertanyaan “bisakah saya mendapatkan lencana”. Ya kamu bisa! 100 lencana akan diberikan kepada mereka yang pertama menulis ke
info@offzone.moscow . Kami mengirim ke Rusia dan CIS. Acara ini akan berlangsung dua minggu dari tanggal publikasi artikel dan akan ditutup tepat pada 2 Agustus pukul 13:37 waktu Moskow.