Giunsa ang backend sa usa ka hacker nga dula bahin sa pagguba sa usa ka server nahimo

Giunsa ang backend sa usa ka hacker nga dula bahin sa pagguba sa usa ka server nahimo
Nagpadayon kami sa pagsulti kanimo kung giunsa ang among pagpangita sa laser sa pagkaguba sa server gihikay. Pagsugod sa nauna artikulo bahin sa pagsulbad sa pagpangita.

Sa kinatibuk-an, ang backend sa dula adunay 6 nga mga yunit sa arkitektura, nga among analisahon sa kini nga artikulo:

  1. Backend sa mga entidad sa dula nga responsable sa mga mekanismo sa dula
  2. Backend ug site data exchange bus sa VPS
  3. Ang tighubad gikan sa mga hangyo sa backend (mga elemento sa dula) ngadto sa Arduino ug hardware sa site
  4. Ang Arduino, nga maoy responsable sa pagkontrolar sa mga relay, nakadawat og mga sugo gikan sa tighubad ug nagbuhat sa aktuwal nga trabaho
  5. Aktuwal nga mga himan: fan, garland, lampara sa salog, ug uban pa.
  6. Frontend - ang website sa Falcon mismo, diin ang mga magdudula nagkontrol sa mga aparato

Atong susihon ang matag usa kanila.

Backend sa mga entidad sa dula

Ang backend gipatuman isip usa ka aplikasyon sa spring boot: kini adunay pipila ka mga rest controllers, usa ka websocket endpoint ug mga serbisyo nga adunay game logic.

Adunay tulo ra nga mga tigkontrol:

  • Megatron. Ang kasamtangan nga panid sa Megatron gipadala pinaagi sa mga hangyo sa GET: sa wala pa ug pagkahuman sa pag-on sa gahum. Ang laser nagpabuto pinaagi sa hangyo sa POST.
  • Pagmapa sa mga panid sa tilde aron sila maserbisyuhan sa ngalan sa panid. Naghimo si Tilde og mga panid alang sa pag-eksport dili sa orihinal nga mga ngalan, apan adunay internal nga ID ug kasayuran sa pagsunod.
  • Ang captcha controller aron mag-alagad sa pseudo-high-load server nga captcha.

Ang endpoint sa Websocket gigamit aron makontrol ang mga gadget: mga lampara, garland ug mga letra. Gipili kini nga dungan nga ipakita sa tanan nga mga magdudula ang karon nga kahimtang sa aparato: kung kini naka-on o wala, aktibo o dili, unsa nga kolor sa letra ang karon gisiga sa dingding. Aron mahimo ang tahas sa pagpaandar sa laser nga labi ka lisud, gidugang namon ang pagtugot sa garland ug ang laser nga adunay parehas nga login ug password admin / admin.

Mahimong sulayan kini sa mga magdudula pinaagi sa pagpaandar sa garland ug pag-usab sa parehas sa laser.

Gipili namo ang ingon ka gamay nga pares sa login-password aron dili masakitan ang mga magdudula nga wala kinahanglana nga pagpili.

Aron mahimong mas makaiikag ang buluhaton, ang mga object ID gikan sa mongodb gigamit isip mga identifier sa device sa kwarto.

Ang ObjectId adunay usa ka timestamp: duha ka random values, usa niini gikuha base sa device identifier, ug ang ikaduha base sa pid sa proseso nga nagmugna niini ug ang counter value. Gusto nakong himoon ang mga identifier nga namugna sa regular nga mga lat-ang ug uban ang lain-laing mga proseso sa pid, apan sa usa ka komon nga counter, aron ang pagpili sa usa ka laser device identifier mahimong mas makapaikag. Bisan pa, sa katapusan, ang tanan nagsugod sa mga identifier nga lahi ra sa kantidad sa counter. Mahimong nahimo niini nga yano ra kaayo ang lakang ug wala magkinahanglan pag-analisar sa istruktura sa objectId.

Maghuhubad gikan sa mga hangyo sa backend

script sa Python, kinsa nagtrabaho sa mga timer ug naghubad niini gikan sa mga abstraction sa pagdula ngadto sa pisikal nga modelo. Pananglitan, "i-on ang lampara sa salog" β†’ "i-on ang relay N2."

Ang script konektado sa RabbitMQ queue ug gibalhin ang mga hangyo gikan sa pila ngadto sa Arduino. Gipatuman usab niini ang lohika sa parallel light switching: uban sa pipila ka mga himan, ang kahayag niini gibuksan, pananglitan, sa dihang ang gahum sa sinugdanan gihatag ngadto sa Megatron, kini gilamdagan sa entablado nga kahayag. Ang laraw sa suga alang sa cinematography sa tibuuk nga talan-awon usa ka lahi nga istorya bahin sa maayong buhat sa among co-producer sa proyekto ug tigdesinyo sa produksiyon nga si Ilya Serov, ug isulti namon kini sa usa ka lahi nga post.

Ang tighubad usab ang responsable sa lohika sa paglansad sa shredder gamit ang usa ka timer ug pagpadala sa imahe sa TV: ang timer sa paglansad sa shredder, usa ka nagsinggit nga capybara, usa ka komersyal sa katapusan sa dula.

Giunsa pagkahan-ay ang lohika sa paghimo sa Megatron token

Test shot

Matag 25 segundos usa ka bag-ong token ang namugna ug mahimong gamiton aron ma-on ang laser sulod sa 10 segundos sa 10/255 nga gahum. Link sa github nga adunay Megatron code.

Ang laser dayon gipabugnaw sulod sa 1 ka minuto - niining panahona wala kini magamit ug wala modawat sa mga hangyo sa bag-ong shot.

Kini nga gahum dili igo aron masunog pinaagi sa pisi, apan bisan kinsa nga magdudula mahimo nga magpabuto sa Megatron ug makita ang laser beam nga molihok.

Ang MD5 hashing algorithm gigamit sa paghimo sa token. Ug ang laraw milampos MD5 gikan sa MD5 + counter + sekreto alang sa usa ka token sa kombat ug walay sekreto alang sa usa ka timaan sa pagsulay.

Ang MD5 usa ka pakisayran sa usa ka komersyal nga proyekto nga gihimo ni Pavel, among backender. Pipila lang ka tuig ang milabay kini nga proyekto migamit sa MD5, ug sa dihang gisultihan niya ang arkitekto sa proyekto nga kini usa ka outdated encryption algorithm, nagsugod sila sa paggamit sa MD5 gikan sa MD5. Tungod kay nakahukom kami sa paghimo sa labing noob nga proyekto nga posible, nahinumdom siya sa tanan ug nakahukom sa paghimo og gamay nga pakisayran.

Combat shot

Ang combat mode ni Megatron kay 100% laser power sa 3 watts. Kini igo na alang sa 2 ka minuto aron masunog ang pisi nga nagpugong sa gibug-aton, aron mabuak ang aquarium ug baha ang server sa tubig.

Nagbilin kami og pipila ka mga pahibalo sa Github sa proyekto: nga mao, ang token generation code, diin masabtan sa usa nga ang test ug combat token gihimo base sa samang counter indicator. Sa kaso sa usa ka combat token, dugang sa counter value, gigamit usab ang asin, nga halos hingpit nga nahabilin sa kasaysayan sa pagbag-o niini nga diwa, gawas sa katapusang duha ka mga karakter.

Nahibal-an kini nga datos, posible nga maihap ang katapusan nga 2 nga mga simbolo sa asin ug mahibal-an nga ang mga numero gikan sa Nawala, nga nakabig sa hexadecimal nga sistema, gigamit alang niini.

Dayon ang mga magdudula kinahanglan nga makakuha sa counter value (pinaagi sa pag-analisar sa test token) ug makamugna og combat token gamit ang sunod nga counter value ug ang asin nga gipili sa miaging lakang.

Ang counter yano nga nagdugang sa matag pagsulay nga shot ug matag 25 segundos. Wala kami nagsulat bahin niini bisan asa, kini usa ka gamay nga sorpresa sa dula.

Serbisyo sa interaksyon sa Captcha

Sa kalibutan sa sugalan, kini ang parehas nga captcha nga kinahanglan i-load aron ma-on ang fan ug maablihan ang flipchart nga adunay usa ka timaan. Sunod sa camera ang usa ka laptop nga adunay pagmonitor sa pagkarga.

Giunsa ang backend sa usa ka hacker nga dula bahin sa pagguba sa usa ka server nahimo

nga pag-alagad Gikalkulo nako kung unsa ang ipakita sa pagmonitor ingon nga kasamtangan nga load: temperatura ug CPU Fan. Ang mga sukatan gibalhin sa database sa timebase ug gidrowing sa grafana.

Kung sa katapusan nga 5 segundos adunay labaw pa sa 50 nga mga hangyo nga ipakita ang captcha, nan ang load nadugangan sa usa ka fixed + random nga gidaghanon sa mga lakang. Ang kalkulasyon mao nga ang 100% nga load mahimong makab-ot sa duha ka minuto.

Sa tinuud, adunay daghang lohika sa serbisyo kaysa gipakita sa katapusan nga dula: gibutang namon ang monitor sa paagi nga ang pagtuyok lamang sa CPU Fan ang makita.

Sa sinugdanan sa pagpangita gusto nila nga biyaan ang Grafan nga ma-access gikan sa Falcon website. Apan kini usab naglangkob sa springboot metrics gikan sa backend application report, nga wala na mi panahon sa paghawan, mao nga nakahukom kami nga babagan ang pag-access niini. Ug sa husto nga paagi - bisan sa sinugdanan sa pagpangita, ang pipila ka mga magdudula nakatag-an nga ang aplikasyon gisulat sa springboot framework ug bisan sa pagkalot sa mga ngalan sa pipila ka mga serbisyo.

Pag-host ug data bus

Usa ka himan alang sa pagbalhin sa impormasyon gikan sa backend ngadto sa site, ang VPS server diin ang RabbitMQ nagdagan.

Ang backend ug data bus gipadayon among VPS. Ang gahum niini ikatandi sa kompyuter nga imong nakita sa screen: usa ka 2-core VPS nga adunay duha ka gigabytes nga RAM. Ang taripa gisingil alang sa mga kahinguhaan, tungod kay ang peak load giplano sa pipila lang ka adlaw - kini ang gibuhat sa among mga kliyente nga nagplano nga mag-load sa VPS sa mubo nga panahon. Dayon kini nahimo nga ang load mas taas kay sa atong gilauman, ug ang usa ka fixed nga taripa mas makaganansya. Kung maghimo ka usa ka pagpangita, pilia ang mga taripa sa linya turbo.

Aron mapanalipdan ang server gikan sa DDoSa, gigamit namon ang Cloudflare.

Angayan nga isulti nga ang VPS nakalahutay sa tanan nga adunay kadungganan.

Ang Arduino, nga maoy responsable sa pagkontrolar sa mga relay, nakadawat og mga sugo gikan sa tighubad ug nagbuhat sa aktuwal nga trabaho

Kini ang labi pa nga hilisgutan sa sunod nga artikulo bahin sa bahin sa hardware sa proyekto: ang backend nagpadala ra mga hangyo aron ma-on ang usa ka piho nga relay. Nahitabo nga nahibal-an sa backend ang hapit tanan nga mga entidad ug mga hangyo gikan niini ingon og "i-on kini nga entidad." Gibuhat namo kini alang sa sayo nga pagsulay sa site (wala pa namo mapundok ang tanan nga Arduino ug mga relay), sa katapusan gibiyaan namo ang tanan nga ingon niana.

Frontend

Dali namong gimugna ang site sa tilde, niabot ug usa ka adlaw sa trabaho ug nakadaginot mig 30 mil sa among budget.

Sa sinugdan, naghunahuna kami nga i-export lang ang site ug idugang ang lohika nga nawala kanamo, apan naabut namon ang mga termino sa paggamit nga nagdili kanamo sa pagbuhat niini.

Dili kami andam nga molapas sa lisensya, mao nga adunay duha ka kapilian: aron ipatuman ang tanan sa among kaugalingon o direktang kontakon si Tilda, hisgutan ang proyekto ug pangayo og pagtugot nga usbon ang code.

Gipili namo ang ikaduha nga kapilian ug wala lang nila kami nahimamat sa tunga-tunga, apan gihatagan kami og usa ka tuig nga libre nga account sa negosyo, diin kami mapasalamaton kaayo kanila. Awkward kaayo nga gipakita nila ang disenyo sa website ni Sokol.

Ingon usa ka sangputanan, among gilakip ang js logic sa frontend para sa pagpadala sa mga hangyo sa elementarya nga mga aparato, ug gamay nga gibag-o ang mga istilo sa mga buton alang sa pag-on ug pag-off sa mga elemento sa dula.

Ang laraw sa site

Ang kasaysayan sa mga pagpangita, nga nagkantidad sa usa ka lahi nga kapitulo.

Gusto namon nga maghimo dili lamang usa ka karaan nga site, apan usa ka hingpit nga dulumtanan nga naglapas sa tanan nga sukaranan nga mga lagda sa disenyo. Sa parehas nga oras, hinungdanon nga mapadayon ang katuohan: kinahanglan nga dili mabuak ang istorya sa ENT, ipakita ang pagkamakabuotan sa tagsulat, ug ang mga magdudula kinahanglan nga motuo nga ang ingon nga site mahimo’g maglungtad ug magdala pa nga mga kliyente. Ug siya nagdala niini! Samtang nagpadayon ang dula, kaduha kami gikontak aron maghimo mga website.

Sa sinugdan ako mismo ang nagdesinyo, naningkamot nga iapil ang daghang gif ug sinaw nga mga elemento. Apan ang akong tigdesinyo nga bana nga 10 ka tuig nagtan-aw sa iyang abaga ug gisalikway kini nga "maayo kaayo." Aron makalapas sa mga lagda sa disenyo, kinahanglan nimo nga mahibal-an kini.

Giunsa ang backend sa usa ka hacker nga dula bahin sa pagguba sa usa ka server nahimo

Adunay ubay-ubay nga mga kombinasyon sa kolor nga makapukaw sa usa ka malungtarong pagbati sa kasuko: berde ug pula nga parehas nga kadato, gray ug pink, asul ug brown. Sa katapusan, kami nanimuyo sa usa ka kombinasyon sa pula ug berde ingon nga base nga mga kolor, gidugang ang mga gif nga adunay usa ka iring ug gipili ang 3-4 nga mga litrato ni Sokolov sa iyang kaugalingon gikan sa usa ka stock nga litrato. Diyutay ra ang akong gikinahanglan: usa ka tunga-tunga nga tigulang nga lalaki, nagsul-ob og dili angay nga suit nga usa ka magtiayon nga gidak-on nga dako kaayo ug sa usa ka "propesyonal nga studio photo shoot" pose. Alang sa pagsulay, gipakita nila kini sa mga higala ug nangutana "unsa imong gusto?"

Atol sa proseso sa pagpalambo sa disenyo, ang akong bana kinahanglang mohigda matag tunga sa oras; ang helicopter misugod sa paglupad. Gisulayan ni Pasha nga ablihan ang developer console sa kadaghanan sa screen samtang gitapos niya ang frontend - aron mapanalipdan ang iyang mga mata.

Aktuwal nga mga himan

Ang mga bentilador ug mga suga gi-mount pinaagi sa solid-state relays aron dili sila mo-on sa bug-os nga gahum diha-diha dayon - aron ang gahum modaghan nga managsama sa pag-monitor.

Apan hisgutan naton kini sa sunod nga post, bahin sa bahin sa hardware sa dula ug ang aktwal nga pagtukod sa site.

Magpadayon nga tune!

Ang ubang mga artikulo bahin sa pagpangita sa paglaglag sa server

Giunsa ang backend sa usa ka hacker nga dula bahin sa pagguba sa usa ka server nahimo

Source: www.habr.com

Idugang sa usa ka comment