Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Fa un parell de setmanes vam passar recerca en línia per als pirates informàtics: van construir una habitació, que van omplir amb dispositius intel·ligents i van llançar una emissió de YouTube des d'ella. Els jugadors podrien controlar els dispositius IoT des del lloc web del joc; L'objectiu era trobar una arma amagada a l'habitació (un potent punter làser), piratejar-la i provocar un curtcircuit a l'habitació.

Per afegir a l'acció, vam col·locar una trituradora a l'habitació, on vam carregar 200 rubles: la trituradora menjava un bitllet per hora. Després de guanyar el joc, podríeu aturar la trituradora i agafar tots els diners restants.

Ja ho hem dit tutorialI com es va fer el backend projecte. És hora de parlar del maquinari i de com es va muntar.


Hi va haver moltes peticions per mostrar el moment de netejar una habitació: mostrem com la desmuntem

Arquitectura de maquinari: control d'habitació

Vam començar a dissenyar una solució de maquinari quan l'escenari ja s'entenia aproximadament, el backend estava preparat i teníem una habitació buida preparada per instal·lar l'equip.

Recordant l'antiga broma "La S a IoT significa Seguretat" ("La lletra S a l'abreviatura IoT significa Seguretat"), vam decidir que aquesta vegada els jugadors de l'escenari del joc interactuen només amb el front-end i el back-end. del lloc, però no tingueu l'oportunitat d'arribar directament a la planxa.

Això es va fer per raons de seguretat i espectacle del que passava a la pantalla: amb l'accés directe al maquinari per part dels jugadors, seria molt més difícil aïllar accions segures i potencialment perilloses, per exemple, el desplaçament ràpid d'una trituradora o el control. pirotècnia.

Abans de començar el disseny, vam formular diversos principis per controlar els dispositius de joc, que es van convertir en la base del disseny:

No utilitzeu solucions sense fil

Tot l'espai de joc es troba en un marc, on es pot accedir a tots els racons. No hi havia cap necessitat real de connexions sense fil i simplement es convertirien en un altre punt de fallada.

No utilitzeu cap dispositiu domèstic intel·ligent especial

Principalment per la flexibilitat de personalització. Està clar que podem personalitzar moltes versions en caixa de sistemes domèstics intel·ligents amb administració i controls preparats per a la nostra tasca, però els costos laborals serien comparables a la creació de la vostra pròpia solució senzilla.

A més, calia idear aparells que demostressin clarament que eren els jugadors els que van canviar-ne l'estat: l'encenen/apagaven o posaven una llum específica a les lletres FALCON.

Vam recollir tots els elements del maquinari disponible públicament que es poden comprar a les botigues de peces de ràdio habituals: entre el lliurament de pizza i cola dietètica, els missatgers Chip and Dip i Leroy venien constantment al lloc.

L'elecció de muntar-ho tot nosaltres mateixos va simplificar la depuració, l'escalabilitat, però, va requerir una major cura durant la instal·lació.

Tots els relés i arudin no haurien de ser visibles al marc

Vam decidir reunir tots els elements controlables en un sol lloc i amagar-los darrere de les escenes per poder controlar el seu rendiment i, si cal, arrossegar amb cura fora del rang de visibilitat de la càmera i substituir la unitat fallada.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Al final, tot es va amagar sota la taula, i la càmera es va instal·lar perquè no es veiés res sota la taula. Aquest va ser el nostre "punt cec" perquè l'enginyer s'arrossegava

Com a resultat, en realitat vam obtenir un dispositiu intel·ligent: va rebre l'estat de cadascuna de les seves parts del backend i el va canviar amb l'ordre corresponent.

Des del punt de vista de la implementació de maquinari, aquest dispositiu controlava 6 elements:

  1. Diverses llums de taula, tenen un estat d'encesa/apagada i estan controlades pels jugadors
  2. Lletres a la paret, poden canviar de color a les ordres dels jugadors
  3. Ventiladors que giren i obren el rotafolio quan el servidor està carregat
  4. Controlat per làser mitjançant PWM
  5. Trituradora que menjava diners a l'horari previst
  6. Una màquina de fum que es va apagar abans de cada tir làser


Prova una màquina de fum amb un làser

Més tard, es va afegir una llum d'escenari, que es trobava darrere del marc i es controlava exactament com les làmpades del punt 1. La llum de l'escenari funcionava en dos casos: il·luminava el làser quan se li aplicava energia, i il·luminava el pes abans del el làser es va llançar en mode combat.

Què era aquest dispositiu intel·ligent?

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics

Durant tot el camí, Yura, el nostre tipus de maquinari, va intentar no complicar les coses i proposar la solució més senzilla i minimalista possible.

Es va suposar que el VPS simplement executaria un script que rep json amb l'estat dels dispositius i l'envia a l'Arduino connectat mitjançant USB.

Connectat als ports:

  • 16 relés habituals (eren els que feien el soroll de clic que s'escoltava al vídeo. Els hem escollit principalment per aquest so)
  • 4 relés d'estat sòlid per controlar canals PWM, com ara ventiladors,
  • sortida PWM separada per a làser
  • sortida que genera un senyal a la tira de LED

Aquí teniu un exemple d'una ordre json que va arribar al relé des del servidor

{"power":false,"speed":0,"period":null,"deviceIdentifier":"FAN"}

I aquest és un exemple d'una funció amb la qual l'ordre va arribar a Arudino

def callback(ch, method, properties, body):    
request = json.loads(body.decode("utf-8"))    
print(request, end="n")     
send_to_serial(body)

Per fer un seguiment del moment en què el làser finalment es crema a través de la corda i el pes vola cap a l'aquari, vam fer un petit botó que es va activar quan el pes va caure i va donar un senyal al sistema.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Botó per controlar el moviment del pes

A aquest senyal, s'havien d'encendre bombes de fum fetes amb pilotes de ping-pong. Vam posar 4 bengales de fum directament a la caixa del servidor i les vam connectar amb un fil de nicrom, que se suposava que s'havia d'escalfar i funcionar com un encès.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Habitatge amb bombes de fum i garlanda xinesa

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics

Arduino

Segons el pla original, es van dur a terme dues accions a l'Arduino.

Primer, quan es va rebre una nova sol·licitud, la sol·licitud es va analitzar mitjançant la biblioteca ArduinoJson. A continuació, es va comparar cada dispositiu gestionat amb les seves dues propietats:

  • estat d'alimentació "encès" o "apagat" (estat estàndard)
  • el període durant el qual el dispositiu està encès: el temps en microsegons des de l'inici del tauler, quan és el moment d'apagar-lo, és a dir, portar l'estat a l'estàndard

La darrera vegada que es va establir en rebre el paràmetre corresponent en JSON, però no es va poder transmetre, llavors el valor es va establir a 0 i no es va reiniciar.

La segona acció que realitzava l'Arduino cada cicle era l'actualització dels estats, és a dir, comprovar si calia encendre alguna cosa o si era hora d'apagar algun dispositiu.

Apuntador làser: el mateix Megatron 3000

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics

Es tracta d'un mòdul de marcat i tall làser d'enfocament manual LSMVR450-3000MF 3000mW 450nm.

Lletres Falcó

Es van fer de manera molt senzilla: simplement vam copiar les lletres del logotip, les vam retallar de cartró i després les vam cobrir amb cinta LED. En aquest cas, vaig haver de soldar els trossos de cinta junts, 4 contactes a cada costura, però el resultat va valdre la pena. El nostre backender Pasha va mostrar miracles d'habilitat, fent-ho en menys d'unes poques hores.

Primeres proves del dispositiu iot i acabat

Vam fer les primeres proves i alhora ens van arribar noves tasques. El fet és que a la meitat del procés, un autèntic productor de cinema i càmera de VGIK, Ilya Serov, es va unir a l'equip: va construir el marc, va afegir il·luminació addicional al cinema i va canviar lleugerament el guió del joc per fer que la trama sigui més emotiva i el quadre més dramàtic i teatral.

Això va augmentar significativament la qualitat, però van aparèixer elements que també s'havien de connectar al relé i a l'algoritme de funcionament prescrit.

Un altre problema va ser el làser: vam fer diversos experiments amb diferents tipus de corda i làsers de diferents potències. Per a la prova, simplement hem penjat un pes verticalment a una corda.

Quan s'executava amb un testimoni de prova, la potència regulada a través del PWM era inferior al 10% i no va danyar la corda fins i tot amb una exposició llarga.

Per al mode de combat, el làser es va desenfocar a aproximadament un punt amb un diàmetre de 10 mm i es va cremar amb confiança a través d'una corda amb una càrrega a una distància d'aproximadament un metre.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Així que el làser va funcionar perfectament en les proves

Quan vam començar a provar-ho tot a l'habitació amb un pes suspès, va resultar que assegurar el làser de manera segura no era tan fàcil. Aleshores, quan la corda es crema, es fon, s'estira i es desplaça fora del seu focus original.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Però ja no funcionava així: la corda es movia

Ilya va moure el làser a l'extrem de l'habitació davant de la corda perquè el raig làser travessés tot l'escenari i quedés bonic al marc, cosa que va duplicar la distància.

Després de fer diversos experiments més amb cremar la corda ja en batalla, vam decidir no torturar el destí i assegurar el tall de la corda amb filferro de nicrom. Va destruir el fil 120 segons després d'encendre el làser en mode de combat. Vam decidir codificar això, així com la desconnexió del cable i l'encesa de bombes de fum quan s'activa el contacte de separació, directament al maquinari del microcontrolador.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
El fil que finalment es va cremar a través de la corda fora de la pantalla

Així, va aparèixer una tercera tasca que Arduino va resoldre: elaborar les seqüències associades a l'execució d'aquestes ordres.

També vam decidir donar a l'Arduino la necessitat de comptar diners al televisor i fer funcionar la trituradora. Inicialment, es va suposar que el backend ho faria i el saldo actual seria visible al lloc web, i a la televisió mostraríem els comentaris de YouTube com a element interactiu addicional, dient als espectadors que els esdeveniments a la sala estaven succeint en realitat. temps.

Però durant la prova, Ilya va mirar l'escena i va suggerir mostrar l'equilibri del joc a la pantalla més gran: quants diners queden encara, quant s'ha menjat i el compte enrere per al proper inici de la trituradora.

Vam lligar Arduino a l'hora actual: cada hora completa s'iniciava la trituradora. La imatge es mostrava al televisor amb rasberry, que en aquell moment ja estava rebent peticions del servidor i les enviava a l'arduino per a l'execució. Les imatges amb indicadors monetaris es van dibuixar trucant a la utilitat de la consola fim alguna cosa així

image = subprocess.Popen(["fim", "-q", "-r", "1920×1080", fim_str]), где fim_str

I es va formar en funció de la quantitat o el temps requerits.

Hem generat les imatges per endavant: simplement hem fet un vídeo ja fet amb un temporitzador i hem exportat 200 imatges.

Aquesta és la mecànica que es va programar a la creu. Quan va començar el compte enrere final, vam anar tots al lloc, ens vam armar amb extintors i ens vam asseure a esperar el foc (que només estava en ple apogeu en la discòrdia)

Com fer una emissió que funcioni durant una setmana: escollir una càmera

Per a la recerca, necessitàvem una emissió contínua a YouTube durant 7 dies; això és exactament el que vam establir com a durada màxima del joc. Hi havia dues coses que ens podrien aturar:

  1. Sobreescalfament de la càmera a causa del funcionament continu
  2. Interrupció d'Internet

La càmera havia de proporcionar almenys una imatge Full HD per fer que jugar i veure l'habitació sigui còmode.

Inicialment, vam mirar cap a càmeres web que es produeixen per a streamers. Estàvem retallant el nostre pressupost, així que no volíem comprar una càmera, però, com va resultar, no la lloguen. Al mateix moment, vam trobar miraculosament una càmera Xbox Kinect a casa meva, la vam instal·lar a la meva habitació i vam començar una emissió de prova durant una setmana.

La càmera funcionava bé i no es va sobreescalfar, però Ilya gairebé immediatament es va adonar que no tenia configuracions, en particular, era impossible establir l'exposició.

Ilya va intentar apropar el tipus d'emissió als estàndards de la producció de pel·lícules i vídeos: transmetre una escena de llum canviant dinàmicament amb fonts de llum brillants, un fons enfosquit i objectes en el marc. Al mateix temps, he volgut preservar l'elaboració de la imatge tant en llums com en ombres, amb el mínim soroll digital.

Per tant, tot i que el Kinect va demostrar ser fiable a les proves i no requeria una targeta de captura de vídeo (un altre punt de fallada), vam decidir abandonar-lo. Després de tres dies de provar diferents càmeres, Ilya va triar la Sony FDR-AX53: una càmera de vídeo petita i fiable que és barata de llogar, però que al mateix temps té una fiabilitat i característiques visuals suficients.

Vam llogar una càmera, la vam encendre durant una setmana juntament amb una targeta de captura de vídeo i ens vam adonar que amb ella podíem comptar amb una emissió contínua durant tota la recerca.

Fer una pel·lícula: muntatge de l'escenari i il·luminació

Treballar la il·luminació requeria una certa gràcia; calia construir una partitura d'il·luminació amb uns mitjans mínims:

1. Il·luminació dels objectes quan els jugadors els troben (làser, pes), així com llum constant a la trituradora. Aquí hem utilitzat dedolight 150: dispositius d'il·luminació de pel·lícula fiables i compactes amb làmpades halògenes de baixa tensió, que us permeten enfocar el feix en un objecte específic sense afectar el fons i altres objectes.

2. Llum de joc pràctic: llum de taula, llum de peu, estrella, garlanda. Tota la llum pràctica es va distribuir harmoniosament al marc per il·luminar la zona de la imatge, hi havia làmpades LED amb una temperatura de color de 3200K a l'interior, la làmpada del llum de peu estava coberta amb un filtre de làmina vermella Rosco per crear un accent de color inusual.

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
Sóc enginyer a la meva mare o el llançament és demà

Com vam reservar internet i electricitat

Van abordar el tema de la tolerància a fallades gairebé com en un centre de dades: van decidir no desviar-se dels principis bàsics i es van reservar segons l'esquema habitual N+1.

Si s'atura l'emissió a YouTube, això significa que serà impossible tornar a connectar-se amb el mateix enllaç i continuar la reproducció. Va ser un moment crític i l'habitació estava situada en un despatx normal.

Per a això hem utilitzat un encaminador basat en OpenWRT i el paquet mwan3. Va provar automàticament la disponibilitat del canal cada 5 segons i, en cas d'interrupció, es va canviar al mòdem de còpia de seguretat amb Yota. Com a resultat, el canvi al canal de còpia de seguretat es va produir en menys d'un minut.
Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics
També era igual d'important eliminar els talls d'energia, perquè fins i tot una pujada de corrent a curt termini provocaria un reinici de tots els ordinadors.

Per tant, vam agafar una font d'alimentació ininterrompuda ippon innova g2 3000, que faria una còpia de seguretat de tots els dispositius de joc: el consum total d'energia del nostre sistema era d'uns 300 watts. Duraria 75 minuts, prou per als nostres propòsits.

Vam decidir sacrificar la il·luminació addicional en cas que s'apagava l'electricitat de l'habitació: no estava connectada a una font d'alimentació ininterrompuda.

Agraïments

  • A tot l'equip RUVDS, que va inventar i implementar el joc.
  • Per separat, per als administradors de RUVDS, per supervisar el treball dels servidors, la càrrega era acceptable i tot funcionava com de costum.
  • Al millor cap ntsaplin pel fet que responent a la trucada, “Tinc una idea: agafarem un servidor, hi posarem un aquari i hi pengem un pes per sobre, bum, bang, tot està inundat d'aigua, curtcircuit, foc. !” sempre diu amb confiança "fes-ho!"
  • Gràcies Editorial Tilda i per separat a Mikhail Karpov no només per haver-nos reunit a mig camí i per haver-nos permès infringir les Condicions d'ús, sinó fins i tot per donar-nos un compte comercial durant un any quan vam parlar del projecte.
  • Ilya Serov S_ILya per unir-se i convertir-se en coproductor del projecte, disposat a arrossegar-se mitja nit, enganxant tira de LED, buscant solucions tècniques i fent-ho tot per aconseguir una pel·lícula real.
  • zhovner per estar sempre disposat a salvar la situació quan els altres aixecaven les mans, borscht, suport moral i converses fins al matí.
  • samat per connectar-nos amb el millor pentester del país, que ens va assessorar i ajudar en les tasques.
  • danimilk per a la producció de vídeos fantàstics de tots els vídeos.
  • delphe per una mà ferma i ganes de treballar fins a l'últim.
  • Enginyeria Dodo Pizza per a pizza gairebé sempre calenta.

I el més gran agraïment va als jugadors per totes les emocions que vam viure mentre vas assaltar la recerca durant dos dies sense dormir i fins i tot ajornar la feina.

Altres articles sobre la recerca per destruir el servidor

Maquinari del projecte: com vam construir una habitació amb una recerca de pirates informàtics

Font: www.habr.com

Afegeix comentari