Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Bir neçə həftə əvvəl keçirdik hakerlər üçün onlayn axtarış: bir otaq tikdilər, onu ağıllı cihazlarla doldurdular və oradan YouTube yayımını başladılar. Oyunçular IoT cihazlarını oyun saytından idarə edə bilər; Məqsəd otaqda gizlənmiş silahı (güclü lazer göstərici) tapmaq, onu sındırmaq və otaqda qısaqapanmaya səbəb olmaq idi.

Fəaliyyətə əlavə etmək üçün otağa bir parçalayıcı yerləşdirdik, ona 200 rubl yüklədik: parçalayıcı saatda bir hesab yedi. Oyunda qalib gəldikdən sonra, parçalayıcını dayandırıb qalan bütün pulları götürə bilərsiniz.

Artıq dedik keçidarxa uç necə düzəldilmişdir layihə. Avadanlıq və onun necə yığılması barədə danışmaq vaxtıdır.


Bir otağın təmizlənməsi anını göstərmək üçün çoxlu sorğular var idi - biz onu necə ayırdığımızı göstəririk

Avadanlıq Memarlığı: Otağa Nəzarət

Ssenari artıq təxmini başa düşüləndə, arxa plan hazır olanda və avadanlığı quraşdırmaq üçün boş otağımız olanda biz hardware həllinin layihələndirilməsinə başladıq.

Köhnə zarafatı xatırlayaraq “IoT-də S təhlükəsizlik deməkdir” (“IoT abreviaturasındakı S hərfi Təhlükəsizlik deməkdir”), biz qərara gəldik ki, bu dəfə oyun ssenarisindəki oyunçular yalnız front-end və back-end ilə qarşılıqlı əlaqədə olurlar. saytın ancaq dəmirə birbaşa girmə fürsəti yoxdur.

Bu, təhlükəsizlik və ekranda baş verənlərin tamaşası üçün edildi: oyunçuların aparatlara birbaşa çıxışı ilə təhlükəsiz və potensial təhlükəli hərəkətləri, məsələn, parçalayıcının sürətli sürüşməsi və ya idarə edilməsini təcrid etmək daha çətin olardı. pirotexnika.

Dizayna başlamazdan əvvəl dizaynın əsasını təşkil edən oyun cihazlarını idarə etmək üçün bir neçə prinsip hazırladıq:

Simsiz həllərdən istifadə etməyin

Bütün oyun sahəsi bir çərçivədədir, hər küncünə çatmaq olar. Simsiz bağlantılara əsl ehtiyac yox idi və onlar sadəcə olaraq başqa bir uğursuzluq nöqtəsinə çevriləcəkdilər.

Heç bir xüsusi ağıllı ev cihazlarından istifadə etməyin

Əsasən fərdiləşdirmə çevikliyi naminə. Aydındır ki, biz ağıllı ev sistemlərinin bir çox qutu versiyalarını işimiz üçün hazır admin və nəzarət vasitələri ilə fərdiləşdirə bilərik, lakin əmək xərcləri öz sadə həllinizi yaratmaqla müqayisə edilə bilər.

Bundan əlavə, onun vəziyyətini dəyişən oyunçular olduğunu açıq şəkildə göstərən qurğular hazırlamaq lazım idi: onu yandırdılar/söndürdülər və ya FALCON hərflərinə xüsusi işıq qoydular.

Biz adi radio hissələri mağazalarında satın alına bilən, ictimaiyyətə açıq olan avadanlıqların bütün elementlərini topladıq: pizza və pəhriz kola çatdırılması arasında Çip və Dip və Leroy kuryerləri daim sayta gəlirdilər.

Hər şeyi özümüz toplamaq seçimi sadələşdirilmiş sazlama, miqyaslılıq, lakin quraşdırma zamanı daha çox diqqət tələb etdi.

Bütün relelər və arudin çərçivədə görünməməlidir

Biz bütün idarə olunan elementləri bir yerə toplamaq və onların işinə nəzarət etmək və lazım gələrsə, diqqətlə kameranın gözündən yayınmaq və uğursuz bloku dəyişdirmək üçün onları pərdə arxasında gizlətmək qərarına gəldik.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Sonda hər şey masanın altında gizlədilib, kamera quraşdırılıb ki, stolun altında heç nə görünməsin. Bu, mühəndisin sürünməsi üçün bizim “kor nöqtəmiz” idi

Nəticədə, əslində bir ağıllı cihaz əldə etdik: o, hər bir hissəsinin vəziyyətini arxa hissədən aldı və müvafiq əmrlə dəyişdirdi.

Aparat tətbiqi baxımından bu cihaz 6 elementə nəzarət edirdi:

  1. Bir neçə stolüstü lampa, onlar yandırma/söndürmə vəziyyətinə malikdir və oyunçular tərəfindən idarə olunur
  2. Divardakı məktublar, oyunçuların əmri ilə rənglərini dəyişə bilərlər
  3. Server yük altında olduqda flipçartı fırlayan və açan azarkeşlər
  4. PWM vasitəsilə lazerlə idarə olunur
  5. Qrafik üzrə pul yeyən parçalayıcı
  6. Hər lazer atışından əvvəl işə düşən tüstü maşını


Bir tüstü maşınının lazerlə sınaqdan keçirilməsi

Daha sonra çərçivənin arxasında dayanan və tam olaraq 1-ci nöqtədən lampalar kimi idarə olunan səhnə işığı əlavə edildi. Səhnə işığı iki halda işləyirdi: ona güc verildikdə lazeri işıqlandırırdı və işıqlandırmadan əvvəl ağırlığı işıqlandırırdı. lazer döyüş rejimində işə salındı.

Bu ağıllı cihaz nə idi?

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq

Bütün yol boyunca, bizim aparat adamımız Yura, işləri çətinləşdirməməyə və mümkün olan ən sadə, minimalist həll yolu tapmağa çalışdı.

Güman edilirdi ki, VPS sadəcə olaraq cihazların vəziyyəti ilə json qəbul edən və USB vasitəsilə qoşulmuş Arduino-ya göndərən bir skript işlədəcək.

Portlara qoşulub:

  • 16 adi rele (videoda eşidilən tıqqıltı səsini çıxaranlardı. Biz onları əsasən bu səsə görə seçdik)
  • Fanlar kimi PWM kanallarını idarə etmək üçün 4 bərk dövlət rölesi,
  • lazer üçün ayrı PWM çıxışı
  • LED zolağına bir siqnal yaradan çıxış

Budur serverdən relaya gələn json əmrinin nümunəsi

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

Və bu, əmrin Arudinoya çatdığı bir funksiyanın nümunəsidir

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

Lazerin nəhayət ipdən yandığı və çəkinin akvariuma uçduğu anı izləmək üçün çəki düşəndə ​​işə salınan və sistemə siqnal verən kiçik bir düymə düzəldirdik.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Ağırlığın hərəkətinə nəzarət etmək üçün düymə

Bu siqnalda stolüstü tennis toplarından hazırlanmış tüstü bombalarının yanması nəzərdə tutulurdu. Biz birbaşa server qutusuna 4 tüstü məşəl qoyduq və onları istiləşməli və alışdırıcı kimi işləməli olan nikrom iplə bağladıq.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Tüstü bombaları və Çin çələngləri olan mənzil

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq

Arduino

Orijinal plana görə, Arduino-da iki hərəkət baş verdi.

Birincisi, yeni sorğu alındıqda sorğu ArduinoJson kitabxanasından istifadə edilərək təhlil edildi. Sonra, hər bir idarə olunan cihaz iki xüsusiyyəti ilə müqayisə edildi:

  • güc vəziyyəti "on" və ya "off" (standart vəziyyət)
  • cihazın işə salındığı dövr - lövhənin başlanğıcından mikrosaniyədə vaxt, onu söndürmək vaxtı gəldikdə, yəni vəziyyəti standart vəziyyətə gətirmək

Sonuncu dəfə JSON-da müvafiq parametr qəbul edilərkən təyin olundu, lakin ötürülə bilmədi, sonra dəyər 0-a təyin edildi və heç bir sıfırlama baş vermədi.

Arduino-nun hər dövrü yerinə yetirdiyi ikinci hərəkət vəziyyətləri yeniləmək, yəni nəyisə yandırmağa ehtiyac olub-olmadığını və ya hər hansı bir cihazı söndürməyin vaxtının olub olmadığını yoxlamaq idi.

Lazer göstərici - eyni Megatron 3000

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq

Bu adi LSMVR450-3000MF 3000mW 450nm manual fokus lazer kəsmə və işarələmə moduludur.

Məktublar Şahin

Onlar çox sadə hazırlanmışdır - biz sadəcə hərfləri loqodan köçürdük, kartondan kəsdik və sonra onları LED lentlə bağladıq. Bu vəziyyətdə, lent parçalarını bir-birinə lehimləməli oldum, hər bir tikişdə 4 kontakt, amma nəticə buna dəyərdi. Dəstəkçimiz Paşa bir neçə saatdan az müddətdə bacarıq möcüzələri göstərdi.

Iot cihazının ilk sınaqları və tamamlanması

İlk sınaqları etdik və eyni zamanda qarşımıza yeni tapşırıqlar gəldi. Məsələ burasındadır ki, prosesin ortasında komandaya VGİK-dən əsl kino prodüseri və operatoru İlya Serov qoşuldu - o, çərçivəni düzəltdi, əlavə kinoteatr işıqlandırması əlavə etdi və süjeti daha emosional etmək üçün oyun ssenarisini bir az dəyişdirdi və şəkil daha dramatik və teatraldır.

Bu, keyfiyyəti əhəmiyyətli dərəcədə artırdı, lakin releyə və müəyyən edilmiş əməliyyat alqoritminə qoşulmaq lazım olan elementlər ortaya çıxdı.

Başqa bir problem lazerlə bağlı idi: biz müxtəlif növ kəndir və müxtəlif gücə malik lazerlərlə bir neçə təcrübə apardıq. Test üçün, sadəcə olaraq, bir ipə şaquli bir çəki asdıq.

Test nişanı ilə işləyərkən, PWM vasitəsilə tənzimlənən güc 10% -dən az idi və uzun məruz qalma ilə belə ipə zərər vermədi.

Döyüş rejimi üçün lazer təqribən 10 mm diametrli bir nöqtəyə fokuslandı və bir metr məsafədən yüklə kəndirdən inamla yandı.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Beləliklə, lazer sınaqlarda mükəmməl işlədi

Biz hər şeyi otaqda asılmış çəkidə sınamağa başlayanda məlum oldu ki, lazeri etibarlı şəkildə təmin etmək o qədər də asan deyil. Sonra ip yanan zaman əriyir, uzanır və ilkin diqqət mərkəzindən kənara çıxır.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Amma artıq belə işləmirdi: kəndir yerindən tərpəndi

İlya lazer şüasının bütün səhnəni keçərək, məsafəni iki qat artıran çərçivədə gözəl görünməsi üçün lazeri iplə üzbəüz otağın sonuna apardı.

Artıq döyüşdə olan ipin yandırılması ilə bağlı daha bir neçə təcrübə apardıqdan sonra, taleyi işgəncə etməmək və ipin nikrom məftildən istifadə edərək kəsilməsini təmin etmək qərarına gəldik. Döyüş rejimində lazeri işə saldıqdan 120 saniyə sonra ipi məhv etdi. Biz bunu, həmçinin naqilin kəsilməsini və ayırma kontaktı işə salındıqda tüstü bombalarının alışmasını birbaşa mikrokontrolörün aparatına daxil etmək qərarına gəldik.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Nəhayət ekrandan kənarda ipdən yanmış iplik

Beləliklə, Arduino-nun həll etdiyi üçüncü bir vəzifə ortaya çıxdı - bu əmrlərin yerinə yetirilməsi ilə əlaqəli ardıcıllığı işləmək.

Biz də Arduino-ya televizorda pul saymaq və parçalayıcını işə salmaq ehtiyacını vermək qərarına gəldik. Əvvəlcə güman edilirdi ki, backend bunu edəcək və mövcud balans veb-saytda görünəcək və TV-də biz əlavə interaktiv element kimi YouTube-dan şərhlər göstərəcəyik, izləyicilərə otaqdakı hadisələrin real olaraq baş verdiyini bildirəcəyik. vaxt.

Ancaq sınaq qaçışı zamanı İlya hadisə yerinə baxdı və ən böyük ekranda oyun balansını göstərməyi təklif etdi: hələ nə qədər pul qalıb, nə qədər yeyilib və parçalayıcının növbəti işə salınmasına qədər geri sayım var.

Arduino-nu cari vaxta bağladıq: hər tam saatdan bir parçalayıcı işə salındı. Şəkil o anda serverdən sorğular alan və icra üçün arduino-ya göndərilən moruqdan istifadə edərək televizorda göstərildi. Monetar göstəriciləri olan şəkillər, bu kimi bir şey konsol yardım proqramına zəng edərək çəkildi

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

Və tələb olunan məbləğə və ya vaxta əsasən formalaşırdı.

Şəkilləri əvvəlcədən hazırladıq: sadəcə olaraq taymerlə hazır video çəkdik və 200 şəkli ixrac etdik.

Bu, xaça proqramlaşdırılmış mexanikadır. Son geri sayma başlayanda hamımız sahəyə getdik, yanğınsöndürənlərlə silahlandıq və yanğını gözləmək üçün oturduq (bu, yalnız mübahisədə tam sürətlə gedirdi)

Bir həftə işləyən yayımı necə etmək olar: kamera seçmək

Axtarış üçün bizə 7 gün ərzində YouTube-da davamlı yayım lazım idi - oyunun maksimum müddəti kimi təyin etdiyimiz şey budur. Bizi dayandıra biləcək iki şey var idi:

  1. Davamlı işləmə səbəbindən kameranın həddindən artıq istiləşməsi
  2. İnternet kəsilməsi

Otağı rahat oynamaq və izləmək üçün kamera ən azı Full HD şəkil təqdim etməli idi.

Əvvəlcə yayımçılar üçün istehsal olunan veb-kameralara baxdıq. Büdcəmizi kəsirdik, ona görə də kamera almaq istəmədik, amma məlum oldu ki, onları icarəyə götürmürlər. Eyni zamanda, möcüzəvi şəkildə evimdə yatan Xbox Kinect kamerasını tapdıq, otağıma quraşdırdıq və bir həftə sınaq yayımına başladıq.

Kamera yaxşı işləyirdi və həddindən artıq istiləşmədi, lakin İlya demək olar ki, dərhal onun parametrlərinin olmadığını, xüsusən də ekspozisiyanı təyin etmək mümkün olmadığını gördü.

İlya yayım növünü kino və video istehsalı standartlarına yaxınlaşdırmağa çalışırdı: dinamik dəyişən işıq səhnəsini parlaq işıq mənbələri, qaralmış fon və kadrdakı obyektlərlə çatdırmaq. Eyni zamanda, minimal rəqəmsal səs-küylə, həm işıqlandırmalarda, həm də kölgələrdə təsvirin işlənməsini qorumaq istədim.

Buna görə də, Kinect sınaqlarda etibarlı olduğunu sübut etsə də və video çəkiliş kartına ehtiyac duymasa da (başqa bir uğursuzluq nöqtəsi), biz ondan imtina etmək qərarına gəldik. Üç günlük müxtəlif kameraları sınaqdan keçirdikdən sonra İlya Sony FDR-AX53-ü seçdi - icarəsi ucuz olan, eyni zamanda kifayət qədər etibarlılıq və vizual xüsusiyyətlərə malik kiçik, etibarlı videokamera.

Biz kamera icarəyə götürdük, onu video çəkiliş kartı ilə birlikdə bir həftə işə qoyduq və başa düşdük ki, onunla bütün axtarış boyu fasiləsiz yayıma arxalana bilərik.

Film çəkmək: səhnə və işıqlandırma

İşıqlandırma üzərində işləmək müəyyən bir lütf tələb etdi; minimal vasitələrlə işıqlandırma hesabını qurmalı idik:

1. Oyunçular onları tapdıqda obyektlərin işıqlandırılması (lazer, çəki), həmçinin parçalayıcıda daimi işıq. Burada biz dedolight 150-dən istifadə etdik - aşağı gərginlikli halogen lampaları olan etibarlı və yığcam plyonkalı işıqlandırma cihazları fona və digər obyektlərə təsir etmədən şüanı konkret obyektə yönəltməyə imkan verir.

2. Praktik oyun işığı - stolüstü lampa, döşəmə lampası, ulduz, çələng. Təsvir sahəsini işıqlandırmaq üçün bütün praktik işıq çərçivədə ahəngdar şəkildə paylandı, içərisində 3200K rəng temperaturu olan LED lampalar var idi, qeyri-adi rəng vurğusu yaratmaq üçün döşəmə lampasında olan lampa qırmızı Rosco folqa filtri ilə örtülmüşdür.

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Mən anamın mühəndisiyəm, yoxsa təqdimat sabahdır

İnternet və elektrik enerjisini necə rezerv etdik

Onlar nasazlığa dözümlülük məsələsinə, demək olar ki, məlumat mərkəzində olduğu kimi yanaşdılar: əsas prinsiplərdən yayınmamaq qərarına gəldilər və adi N+1 sxeminə uyğun olaraq ehtiyat etdilər.

YouTube-da yayım dayanarsa, bu o deməkdir ki, eyni keçiddən istifadə edərək yenidən qoşulmaq və yayımı davam etdirmək mümkün olmayacaq. Bu kritik an idi və otaq adi ofisdə yerləşirdi.

Bunun üçün biz OpenWRT əsaslı marşrutlaşdırıcıdan və mwan3 paketindən istifadə etdik. O, avtomatik olaraq hər 5 saniyədən bir kanalın mövcudluğunu yoxladı və fasilə olarsa, Yota ilə ehtiyat modemə keçdi. Nəticədə ehtiyat kanala keçid bir dəqiqədən az müddətdə baş verdi.
Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq
Elektrik kəsilməsini aradan qaldırmaq da eyni dərəcədə vacib idi, çünki hətta qısa müddətli enerji artımı bütün kompüterlərin yenidən işə salınmasına səbəb olardı.

Buna görə də, bütün oyun cihazlarının ehtiyat nüsxəsini çıxaracaq ippon innova g2 3000 fasiləsiz enerji təchizatı götürdük: sistemimizin ümumi enerji istehlakı təxminən 300 Vatt idi. 75 dəqiqə davam edəcək, bizim məqsədlərimiz üçün kifayətdir.

Otaqda elektrik söndüyü halda əlavə işıqlandırmanı qurban verməyə qərar verdik - o, fasiləsiz enerji təchizatı ilə bağlı deyildi.

Təşəkkürlər

  • Bütün komandaya RUVDS, oyunu icad edən və həyata keçirən.
  • Ayrıca, RUVDS administratorlarına, serverlərin işini izləmək üçün yük məqbul idi və hər şey həmişəki kimi işləyirdi.
  • Ən yaxşı patrona ntsaplin ona görə ki, çağırışa cavab olaraq “Mənim bir fikrim var: server götürərik, üstünə akvarium qoyaq və üstünə bir çəki asarıq, bum, bang, hər şeyi su basdı, qısaqapanma, yanğın ” Həmişə inamla deyir: "Bunu et!"
  • Təşəkkür Tilda Nəşriyyatı və ayrıca Mixail Karpova nəinki yarı yolda görüşdüyünə və İstifadə Şərtlərini pozmağa icazə verdiyinə, hətta layihə haqqında danışdığımız zaman bir il ərzində bizə biznes hesabı verdiyinə görə.
  • İlya Serov S_ILya qoşulmaq və layihənin həm prodüseri olmaq üçün, gecənin yarısını sürünməyə, LED zolağı yapışdırmağa, texniki həllər axtarmağa və real film əldə etmək üçün hər şeyi etməyə hazırıq.
  • zhovner Səhərə qədər başqalarının əl-qolunu, borşunu, mənəvi dəstəyini, söhbətlərini atanda vəziyyəti xilas etməyə həmişə hazır olduqları üçün.
  • samat bizə məsləhət verən və tapşırıqları yerinə yetirməkdə bizə kömək edən ölkənin ən yaxşı pentesteri ilə bizi bağladığına görə.
  • daniemilk bütün videoların gözəl video istehsalı üçün.
  • delphe möhkəm əl və sonuna qədər işləmək istəyi üçün.
  • Quyu Dodo Pizza Mühəndisliyi demək olar ki, həmişə isti pizza üçün.

Və ən böyük təşəkkür oyunçulara iki gün yuxusuz və hətta işi təxirə salaraq axtarışa çıxdığınız zaman yaşadığımız bütün duyğulara görə gedir.

Serveri məhv etmək axtarışı haqqında digər məqalələr

Layihə avadanlığı: hacker axtarışı ilə bir otaq necə qurduq

Mənbə: www.habr.com

Добавить комментарий