Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
'n Paar weke gelede het ons spandeer aanlyn soeke na kuberkrakers: 'n kamer gebou wat gevul was met slimtoestelle en 'n YouTube-uitsending daarvan bekendgestel. Spelers kan IoT-toestelle vanaf die speletjie se webwerf beheer; die doel was om 'n wapen wat in die kamer versteek is ('n kragtige laserwyser) te vind, dit te kap en 'n kortsluiting in die kamer te reΓ«l.

Om aksie by te voeg, het ons 'n versnipperaar in die kamer gesit, waarin ons 200 000 roebels gelaai het: die versnipperaar het een rekening per uur geΓ«et. Nadat jy die wedstryd gewen het, was dit moontlik om die versnipperaar te stop en al die oorblywende geld te neem.

Ons het reeds vertel deurloopEn hoe die agterkant gemaak is projek. Dit is tyd om te praat oor hardeware en hoe dit gaan.


Daar was baie versoeke om die oomblik van skoonmaak van die kamer te wys - ons wys hoe ons dit uitmekaar haal

Hardeware-argitektuur: kamerbeheer

Ons het begin met die ontwerp van 'n hardeware-oplossing toe die scenario reeds ongeveer duidelik was, die agterkant gereed was, en ons het 'n leΓ« kamer gereed gehad vir toerustinginstallasie.

Met die onthou van die ou staaltjie "Die S in IoT staan ​​vir Sekuriteit" ("Die letter S in IoT staan ​​vir Sekuriteit"), het ons besluit dat hierdie keer die spelscenariospelers slegs met die voor- en agterkant van die werf interaksie het, maar kry nie die geleentheid om direk by stryk te kom nie.

Dit is gedoen om veiligheids- en vermaaklikheidsredes: met spelers wat direk toegang tot die hardeware verkry, sou dit baie moeiliker wees om veilige en potensieel gevaarlike aksies te isoleer, soos om 'n versnipperaar te versnel of vuurwerk te beheer.

Voordat ons met die ontwerp begin het, het ons verskeie beginsels vir die beheer van speeltoestelle geformuleer, wat die basis vir die ontwerp geword het:

Moenie draadlose oplossings gebruik nie

Die hele speelruimte is in een raam, waarvan elke hoek bereik kan word. Daar was geen werklike behoefte aan draadlose verbindings nie en dit sou net nog 'n punt van mislukking word.

Moenie enige spesiale slimhuistoestelle gebruik nie

Basies, ter wille van aanpassing buigsaamheid. Dit is duidelik dat baie boksweergawes van slimhuisstelsels met 'n klaargemaakte administrasiepaneel en beheer vir ons taak gekonfigureer kan word, maar die arbeidskoste sal vergelykbaar wees met die skep van ons eie eenvoudige oplossing.

Daarbenewens was dit nodig om met toestelle vorendag te kom wat duidelik sou wys dat dit die spelers was wat sy toestand verander het: hulle het dit aan / afgeskakel of 'n spesifieke lig op die letters FALCON gesit.

Ons het al die elemente van yster wat in die openbaar beskikbaar is, versamel, wat in gewone radioonderdelewinkels gekoop kan word: tussen die aflewering van pizza en Diet Coke het koeriers Chip en Deep en Leroy voortdurend na die werf gekom.

Die keuse om alles self saam te stel, het ontfouting vereenvoudig, skaalbaarheid het egter meer akkuraatheid tydens installasie vereis.

Alle relais en arudino moet nie in die raam sigbaar wees nie

Ons het besluit om al die beheerde elemente op een plek te bring en agter die skerms weg te steek om die vertoning te kan beheer en, indien nodig, versigtig uit die kamera se gesigsveld te kruip en die mislukte eenheid te vervang.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Gevolglik is almal onder die tafel weggesteek, en die kamera is geΓ―nstalleer sodat niks onder die tafel gesien kon word nie. Dit was ons "blinde kol" vir die kruipende ingenieur

Gevolglik het ons eintlik een slimtoestel gekry: dit het die toestand van elk van sy dele van die agterkant ontvang en dit met die toepaslike opdrag verander.

In terme van hardeware-implementering het hierdie toestel 6 elemente beheer:

  1. Verskeie tafellampe, hulle het 'n aan/af-toestand en word deur die spelers beheer
  2. Letters op die muur, hulle kan hul kleur verander op bevel van die spelers
  3. Aanhangers wat draai en die blaaibord oopmaak wanneer die bediener onder druk is
  4. Laser beheer via PWM
  5. Schroeder wat geld op skedule geΓ«et het
  6. ’n Rookmasjien wat voor elke laserskoot gevuur het


Toets 'n rookmasjien met 'n laser

Later is nog 'n verhooglig bygevoeg wat agter die skerms staan ​​en beheer word presies soos die lampe vanaf punt 1. Die verhooglig het in twee gevalle gewerk: dit het die laser verlig wanneer krag daarop toegepas is en die gewig verlig voordat die laser gelanseer is in gevegsmodus.

Wat was hierdie slim toestel

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog

Yura, ons hardewarespesialis, het deurgaans probeer om dinge nie te kompliseer nie en met die eenvoudigste, mees minimalistiese oplossing moontlik vorendag gekom.

Daar is aanvaar dat net 'n skrip op die VPS sal loop wat json ontvang met die toestand van die toestelle en dit stuur na die arduino wat via usb gekoppel is.

Poorte gekoppel aan:

  • 16 gewone aflosse (dit was hulle wat die klik gemaak het wat in die video gehoor is. Ons het hulle hoofsaaklik gekies as gevolg van hierdie klank)
  • 4 vaste toestand-relais om PWM-kanale soos waaiers te beheer,
  • aparte PWM-uitset vir laser
  • uitset wat 'n sein na die LED-strook genereer

Hier is 'n voorbeeld van 'n json-opdrag wat vanaf die bediener na die aflos gekom het

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

En dit is 'n voorbeeld van 'n funksie waarmee die opdrag na die arudino gekom het

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

Om tred te hou met die oomblik wanneer die laser uiteindelik die tou uitbrand en die gewig na die akwarium vlieg, het ons 'n klein knoppie gemaak wat gereageer het op die val van die gewig en 'n sein aan die stelsel gegee het.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Kettlebell beweging monitering knoppie

By hierdie sein was rookbomme gemaak van tafeltennisballe veronderstel om op te steek. Ons het 4 skoorstene direk in die bedienerkas gesit en 'n nichroomdraad na hulle gebring, wat veronderstel was om warm te word en soos 'n lont te werk.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Koffer met rookbomme en Chinese krans

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog

Arduino

Op die arduino het volgens die oorspronklike plan twee aksies plaasgevind.

Eerstens, toe 'n nuwe versoek ontvang is, is die versoek ontleed deur die ArduinoJson-biblioteek te gebruik. Vervolgens is elke bestuurde toestel met twee van sy eienskappe geassosieer:

  • kragtoestand "aan" of "af" (standaardtoestand)
  • die tydperk waarvoor die toestel aangeskakel is - die tyd in mikrosekondes vanaf die begin van die bord, wanneer dit tyd is om dit af te skakel, dit wil sΓͺ, bring die toestand na die standaard

Die laaste keer is gestel toe die ooreenstemmende parameter in JSON ontvang is, maar dit kon nie deurgegee word nie, dan is die waarde op 0 gestel en nulstelling het nie plaasgevind nie.

Die tweede aksie wat die arduino elke siklus uitgevoer het, was die aktualisering van die state, dit wil sΓͺ om te kyk of daar 'n behoefte is om iets aan te skakel en of dit tyd is om enige toestel af te skakel.

Laserwyser - dieselfde Megatron 3000

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog

Dit is 'n konvensionele lasersny- en merkmodule LSMVR450-3000MF 3000mW 450nm met handfokus.

Valk briewe

Baie eenvoudig gemaak - ons het net die letters van die logo af gekopieer, dit uit karton gesny en dit dan met geleideband vasgeplak. Terselfdertyd moes ek stukke band aanmekaar soldeer, 4 kontakte op elke naat, maar die resultaat was die moeite werd. Ons agterspeler Pasha het wonderwerke van vaardigheid getoon en dit in minder as 'n paar uur gedoen.

Die eerste toetse van die iot-toestel en afwerking

Ons het die eerste toetse gemaak en terselfdertyd het nuwe take ons genader. Die feit is dat in die middel van die proses 'n regte filmvervaardiger en kameraman van VGIK, Ilya Serov, by die span aangesluit het - hy het die raam in lyn gebring, bykomende filmbeligting bygevoeg en die draaiboek van die spel effens verander om die plot meer te maak emosioneel, en die prentjie meer dramaties en teatraal.

Dit het die kwaliteit aansienlik verhoog, maar daar was elemente wat ook aan die aflos gekoppel moes word en die werkingsalgoritme voorskryf.

Nog 'n probleem was die laser: ons het verskeie eksperimente met verskillende soorte toue en lasers van verskillende kragte gedoen. Vir die toets het ons die vrag eenvoudig vertikaal aan 'n tou gehang.

Wanneer jy met die toetsteken gehardloop het, was die krag wat deur die PWM gereguleer word minder as 10% en die tou het nie beskadig nie, selfs met 'n lang blootstelling.

Vir die gevegsmodus is die laser gedefokus tot ongeveer 'n kol met 'n deursnee van 10 mm en dit het die tou met selfvertroue met 'n las van 'n afstand van ongeveer 'n meter verbrand.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Die laser het dus perfek in toetse gewerk

Toe ons alles reg in die kamer op 'n opgeskorte gewig begin toets het, het dit geblyk dat dit nie so maklik was om die laser veilig vas te maak nie. Dan, wanneer die tou brand, smelt dit, rek en skuif dit van onder die oorspronklike fokus af.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
En dit is hoe dit nie meer gewerk het nie: die tou het geskuif

Ilya het die laser na die teenoorgestelde kant van die kamer van die tou af verskuif, sodat die laserstraal oor die hele toneel gegaan het en pragtig in die raam gelyk het, wat die afstand verdubbel het.

Nadat ons nog 'n paar eksperimente uitgevoer het met die verbranding van die tou wat reeds in die geveg was, het ons besluit om nie die noodlot te versoek nie en die sny van die tou met behulp van nichroomdraad te verseker. Sy het die draad vernietig 120 sekondes nadat sy die laser in gevegsmodus aangeskakel het. Dit, sowel as die ontkoppeling van die draad en die lont van rookbomme wanneer die afskeurkontak geaktiveer word, het ons besluit om dit reg in die mikrobeheerder hardeware te hardkodeer.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Die draad wat uiteindelik die tou agter die skerms gebrand het

Dus het die derde taak verskyn wat die arduino opgelos het - om die rye uit te werk wat verband hou met die uitvoering van hierdie opdragte.

Ons het ook besluit om die arduino die behoefte te gee om geld op die TV te tel en die shredder te laat loop. Aanvanklik is aanvaar dat die backend hiervoor sou sorg en die huidige balans op die webwerf sigbaar sou wees, en op die TV sou ons kommentaar van YouTube wys as 'n bykomende interaktiewe element wat kykers aanspoor dat die gebeure in die kamer plaasvind in reΓ«le tyd.

Maar tydens die toetslopie het Ilya die toneel dopgehou en voorgestel dat die spelbalans op die grootste skerm gewys word: hoeveel geld was oor, hoeveel is geΓ«et en die aftelling tot die volgende bekendstelling van die versnipperaar.

Ons het die Arduino aan die huidige tyd vasgemaak: elke volle uur het die versnipperaar begin. Die foto op die TV is uitgereik met behulp van 'n framboos, wat op daardie oomblik reeds versoeke van die bediener ontvang het en dit na die arduino gestuur het vir uitvoering. Prente met geldelike aanwysers is geteken deur die fim-konsole-hulpprogram so te noem

image = subprocess.Popen(["fim", "-q", "-r", "1920Γ—1080", fim_str]), Π³Π΄Π΅ fim_str

En dit is gevorm op grond van die vereiste hoeveelheid of tyd.

Ons het die foto's vooraf gegenereer: ons het net die voltooide video met 'n timer geneem en 200 foto's uitgevoer.

Dit is die soort meganika wat in die kruis geprogrammeer is. Teen die tyd dat die finale aftelling begin het, het ons almal na die terrein gegaan, onsself met brandblussers gewapen en gaan sit om te wag vir die vuur (wat net in die onenigheid met mag en hoof gevlam het)

Hoe om 'n uitsending te maak wat vir 'n week duur: die keuse van 'n kamera

Vir die soeke het ons 'n deurlopende uitsending op YouTube vir 7 dae nodig gehad - dit is hoeveel ons gelΓͺ het as die maksimum duur van die speletjie. Daar was twee dinge wat met ons kon inmeng:

  1. Oorverhitting van die kamera van deurlopende werking
  2. Internet breek

Die kamera moes 'n foto van ten minste Full HD gee om die kamer gemaklik te speel en te kyk.

Aanvanklik het ons gekyk na webkameras wat vir streamers vrygestel word. Ons het die begroting gesny, so ons wou nie 'n kamera koop nie, maar soos dit geblyk het, gee hulle dit nie te huur nie. Op dieselfde oomblik het ons wonderbaarlik 'n Xbox Kinect-kamera in my huis gekry, dit in die kamer gesit en 'n toetsuitsending vir 'n week van stapel gestuur.

Die kamera het dit goed hanteer en nie oorverhit nie, maar Ilya het amper dadelik opgemerk dat dit nie instellings het nie, veral, dit was onmoontlik om die beligting in te stel.

Ilya het probeer om die voorkoms van die uitsending nader aan die standaarde van film- en videoproduksie te bring: om 'n dinamies-veranderende ligtoneel met helder ligbronne, 'n verduisterde agtergrond en voorwerpe in die raam oor te dra. Terselfdertyd wou ek die beelduitwerking beide in die hoogtepunte en in die skaduwees hou, met minimale digitale geraas.

Daarom, alhoewel die kinect tydens toetse betroubaar was en nie 'n video-opnamekaart benodig het nie (nog 'n punt van mislukking), het ons besluit om dit te laat vaar. Na drie dae se toetsing van verskillende kameras, het Ilya die Sony FDR-AX53 gekies - 'n klein, betroubare videokamera, bekostigbaar om te huur, maar terselfdertyd met voldoende betroubaarheid en goeie werkverrigting.

Ons het 'n kamera gehuur, dit vir 'n week aangeskakel in samewerking met 'n video-opnamekaart, en besef dat ons daarmee kan reken op deurlopende uitsending deur die hele soektog.

Maak 'n fliek: verhoog en beligting

Om aan beligting te werk het 'n sekere elegansie vereis, ons moes 'n ligte telling met minimale middele bou:

1. Verligting van voorwerpe wanneer dit deur spelers gevind word (laser, gewig), asook 'n konstante lig op die versnipperaar. Hier het ons dedolight 150 gebruik - betroubare en kompakte beligtingstoebehore met laespanning-halogeenlampe wat jou toelaat om die straal op 'n spesifieke onderwerp te fokus sonder om aan die agtergrond en ander voorwerpe te raak.

2. Praktiese spellig - tafellamp, vloerlamp, ster, krans. Alle praktiese lig is harmonieus in die raam versprei om sy beeldarea te verlig, binne was daar led-lampe met 'n kleurtemperatuur van 3200K, die lamp in die vloerlamp is bedek met 'n Rosco-rooi foeliefilter om 'n ongewone kleur-aksentpunt te skep.

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Ek is my ma se ingenieur of launch mΓ΄re

Hoe ons internet en elektrisiteit bespreek het

Die kwessie van foutverdraagsaamheid is amper soos in 'n datasentrum benader: hulle het besluit om nie van die basiese beginsels af te wyk nie en het volgens die gewone N + 1-skema gereserveer.

As die uitsending op YouTube stop, beteken dit dat dit nie meer moontlik sal wees om met dieselfde skakel weer te koppel en voort te gaan stroom nie. Dit was 'n kritieke oomblik, en buitendien was die kamer in 'n gewone kantoor.

Om dit te doen, het ons 'n OpenWRT-gebaseerde router en die mwan3-pakket gebruik. Dit het outomaties die beskikbaarheid van die kanaal elke 5 sekondes getoets en, in die geval van 'n breek, oorgeskakel na 'n rugsteunmodem van Yota. As gevolg hiervan het die oorskakeling na die rugsteunkanaal minder as 'n minuut geneem.
Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog
Dit was ook ewe belangrik om kragonderbrekings uit te sluit, want selfs 'n kort kragstuwing sou veroorsaak dat alle rekenaars herlaai.

Daarom het ons die ippon innova g2 3000 ononderbroke kragtoevoer geneem, wat alle speletjietoestelle sou rugsteun: die totale kragverbruik van ons stelsel was ongeveer 300 watt. Dit sou genoeg wees vir 75 minute, genoeg vir ons doeleindes.

Ons het besluit om bykomende beligting op te offer ingeval die elektrisiteit in die vertrek uitgaan – dit was nie aan die ononderbroke kragtoevoer gekoppel nie.

Erkennings

  • Hele span RUVDSwat die speletjie ontwerp en ontwikkel het.
  • Afsonderlik, vir die RUVDS-admins, vir die monitering van die werk van die bedieners, was die vrag aanvaarbaar en alles het normaal gewerk in normale modus.
  • beste baas ntsaplin vir die feit dat in reaksie op die oproep "daar 'n idee is: ons sal 'n bediener neem, 'n akwarium daarop sit en 'n gewig daaroor hang, boom, bang, alles was oorstroom met water, kortsluiting, vuur!" hy sΓͺ altyd met selfvertroue "doen dit!"
  • Dankie Tilda Uitgewery en afsonderlik aan Mikhail Karpov omdat hy nie net vorentoe gaan en ons toegelaat het om die Gebruiksvoorwaardes te oortree nie, maar selfs vir ons 'n besigheidsrekening vir 'n jaar gegee het toe ons oor die projek gepraat het.
  • Ilya Serov S_ILja om aan te sluit en 'n medevervaardiger van die projek te word, gereed om die helfte van die nag te kruip, LED-strook vas te plak, tegniese oplossings te soek en alles te doen sodat ons 'n regte fliek het.
  • zhovner om altyd gereed te wees om die situasie te red wanneer ander skouers optrek, stoeier, morele ondersteuning en gesprekke tot die oggend.
  • Samat dat ons ons in kontak gebring het met die beste penster in die land wat ons raad gegee het en ons met die raaisels gehelp het.
  • daniemelk vir die koel videoproduksie van alle video's.
  • delphi vir 'n ferm hand en gereedheid om tot op die laaste te werk.
  • Wel Dodo Pizza Ingenieurswese vir amper altyd warm pizza.

En die grootste dankbaarheid is aan die spelers vir al die emosies wat ons ervaar het terwyl julle die soektog vir twee dae sonder slaap bestorm het en selfs die werk uitgestel het.

Ander artikels oor die soeke met die vernietiging van die bediener

Projek-yster: hoe ons 'n kamer gebou het met 'n hacker-soektog

Bron: will.com

Voeg 'n opmerking