Ahoana no namoronana ny backend amin'ny lalao hacker momba ny famotehana mpizara

Ahoana no namoronana ny backend amin'ny lalao hacker momba ny famotehana mpizara
Manohy milaza aminao ny fomba nandaminana ny fikarohana tamin'ny laser tamin'ny famotehana ny mpizara izahay. Manomboka amin'ny teo aloha lahatsoratra momba ny famahana ny fikatsahana.

Amin'ny fitambarany, ny backend ny lalao dia nanana 6 rafitra maritrano, izay hodinihintsika ato amin'ity lahatsoratra ity:

  1. Backend amin'ny sampana lalao izay tompon'andraikitra amin'ny mekanika lalao
  2. Backend sy ny habaka fifanakalozana angon-drakitra amin'ny VPS
  3. Mpandika avy amin'ny fangatahana backend (singa lalao) mankany amin'ny Arduino sy fitaovana eo amin'ny tranokala
  4. Arduino, izay tompon'andraikitra amin'ny fanaraha-maso ny fampitana, dia nahazo baiko avy amin'ny mpandika teny ary nanao ny asa tena izy
  5. Fitaovana tena izy: mpankafy, garland, jiro gorodona, sns.
  6. Frontend - ny tranokalan'ny Falcon mihitsy, izay nifehy ny fitaovana ny mpilalao

Andeha hojerentsika ny tsirairay amin'izy ireo.

Backend amin'ny sampana lalao

Ny backend dia nampiharina ho toy ny rindranasa baotin'ny lohataona: nanana mpanara-maso fitsaharana maromaro, teboka faran'ny websocket ary serivisy misy lojika lalao.

Telo ihany ny mpanara-maso:

  • Megatron. Ny pejy Megatron ankehitriny dia nalefa tamin'ny alΓ lan'ny fangatahana GET: mialoha sy aorian'ny famelomana ny herinaratra. Nitifitra tamin'ny alΓ lan'ny fangatahana POST ny laser.
  • Sarintany pejy tilde mba hozaraina amin'ny anaran'ny pejy. Tilde dia mamokatra pejy fanondranana tsy amin'ny anarana tany am-boalohany, fa miaraka amin'ny ID anatiny sy fampahalalana momba ny fanarahan-dalΓ na.
  • Captcha controller ho an'ny pseudo-high-load server captcha.

Ny teboka faran'ny Websocket dia nampiasaina hifehezana gadget: jiro, garland ary litera. Nofidina izy io mba hampisehoana amin'ny mpilalao rehetra ny sata mifehy ny fitaovana amin'izao fotoana izao: na mandeha na mandeha, mavitrika na tsia, inona ny lokon'ny taratasy mirehitra amin'ny rindrina amin'izao fotoana izao. Mba hanasarotra kokoa ny asa amin'ny fampandehanana ny laser dia nampiana fanomezan-dΓ lana ho an'ny garland sy ny laser miaraka amin'ny fidirana sy tenimiafina mitovy amin'ny admin/admin.

Ny mpilalao dia afaka nanandrana izany tamin'ny alΓ lan'ny famadihana ny garland ary mamerina izany amin'ny laser.

Nisafidy mpivady tenimiafina tsy misy dikany toy izany izahay mba tsy hampijaly ny mpilalao amin'ny fisafidianana tsy ilaina.

Mba hahatonga ilay asa ho mahaliana kokoa, dia nampiasaina ho famantarana fitaovana ao amin'ny efitrano ny ID zavatra avy amin'ny mongodb.

Ny ObjectId dia misy fe-potoana: soatoavina roa kisendrasendra, ny iray amin'ireo dia raisina mifototra amin'ny famantarana ny fitaovana, ary ny faharoa mifototra amin'ny pid amin'ny dingana miteraka azy sy ny sandan'ny counter. Te-hanao ireo famantarana novokarina tamin'ny elanelam-potoana tsy tapaka sy miaraka amin'ny fizotran'ny pid samihafa aho, saingy miaraka amin'ny kaontera mahazatra, mba hahaliana kokoa ny fisafidianana ny famantarana fitaovana laser. Na izany aza, tamin'ny farany, ny tsirairay dia nanomboka tamin'ny famantarana izay tsy mitovy afa-tsy amin'ny sanda mifanandrify. Mety ho nahatonga ny dingana ho tsotra loatra izany ary tsy mitaky famakafakana ny rafitra objectId.

Mpandika avy amin'ny fangatahana backend

script Python, izay niasa tamin'ny timer ary nandika azy ireo avy amin'ny abstractions gaming ho modely ara-batana. Ohatra, "avereno ny jiron'ny tany" β†’ "Avereno ny relay N2."

Ny script dia mifandray amin'ny filaharana RabbitMQ ary namindra ny fangatahana avy amin'ny filaharana mankany Arduino. Izy io koa dia nampihatra ny lojikan'ny fifandimbiasan-jiro parallèle: miaraka amin'ny fitaovana sasany, dia nirehitra ny jiro teo amin'izy ireo, ohatra, rehefa nomena an'i Megatron ny herinaratra, dia nohazavaina tamin'ny hazavana an-tsehatra. Ny famolavolana jiro ho an'ny cinematography amin'ny sehatra iray manontolo dia tantara iray manokana momba ny asa lehibe nataon'ny mpiara-mamokatra sy mpamorona ny famokarana Ilya Serov, ary holazainay amin'ny lahatsoratra misaraka.

Ny mpandika teny ihany koa dia tompon'andraikitra amin'ny lojika amin'ny fandefasana ny shredder amin'ny alΓ lan'ny fameram-potoana sy ny fampitana ny sary amin'ny fahitalavitra: ny fameram-potoana handefasana ny shredder, ny capybara mikiakiaka, ny varotra amin'ny faran'ny lalao.

Ahoana ny fomba nandrafetana ny lojika amin'ny famoronana famantarana Megatron

Tifitra fitsapana

Isaky ny 25 segondra dia misy marika vaovao novolavolaina ary azo ampiasaina hamadihana ny laser mandritra ny 10 segondra amin'ny hery 10/255. Rohy mankany github miaraka amin'ny kaody Megatron.

Nangatsiaka nandritra ny 1 minitra ny laser - nandritra io fotoana io dia tsy nisy ary tsy nanaiky ny fangatahana tifitra vaovao.

Tsy ampy handoro ny tady io hery io, fa ny mpilalao rehetra dia afaka mitifitra an'i Megatron ary mahita ny taratra laser miasa.

Ny algorithm hashing MD5 dia nampiasaina hamoronana ny famantarana. Ary nahomby ilay tetika MD5 avy amin'ny MD5 + counter + secret ho an'ny famantarana ady ary tsy misy tsiambaratelo ho an'ny marika fitsapana.

MD5 dia fanondroana tetikasa ara-barotra izay nataon'i Pavel, ilay mpanohana anay. Roa taona lasa izay dia nampiasa MD5 ity tetikasa ity, ary rehefa nilaza tamin'ny mpanao mari-trano izy fa algorithm fanafenana efa lany andro io, dia nanomboka nampiasa MD5 avy amin'ny MD5 izy ireo. Koa satria nanapa-kevitra ny hanao ny tetikasa noob indrindra izahay, dia nahatsiaro ny zava-drehetra izy ary nanapa-kevitra ny hanao reference kely.

Tifitra ady

Ny fomba fiadiana an'i Megatron dia herin'ny laser 100% amin'ny 3 watts. Izany dia ampy ho an'ny 2 minitra handoro ny tady izay nihazona ny lanja, mba hanapaka ny aquarium ary tondraka rano ny mpizara.

Namela soso-kevitra maromaro momba ny Github an'ny tetikasa izahay: izany hoe, ny kaody famokarana famantarana, izay ahafahan'ny olona mahafantatra fa mifototra amin'ny tondro fanondro mitovy ny fitsapana sy ny ady. Amin'ny resaka token'ny ady, ankoatra ny sandan'ny fifanandrinana, dia ampiasaina ihany koa ny sira, izay saika tavela tanteraka amin'ny tantaran'ny fanovana io foto-kevitra io, afa-tsy ireo tarehintsoratra roa farany.

Ny fahafantarana an'io angon-drakitra io dia azo natao ny namaritra ireo marika 2 farany amin'ny sira ary tena nahita fa ny isa avy amin'ny Lost, niova ho rafitra hexadecimal, dia nampiasaina ho azy.

Avy eo ny mpilalao dia tsy maintsy naka ny sandan'ny mpanohitra (amin'ny famakafakana ny mari-pandrefesana) ary mamorona famantarana fiadiana amin'ny fampiasana ny sandan'ny mpanohitra manaraka sy ny sira voafantina tamin'ny dingana teo aloha.

Nitombo fotsiny ny kaontera isaky ny tifitra fitsapana sy isaky ny 25 segondra. Tsy nanoratra momba an'io izahay na taiza na taiza, tokony ho surprise lalao kely izany.

Serivisy fifaneraserana Captcha

Ao amin'ny tontolon'ny filokana, io ihany no captcha izay tsy maintsy nampidirina mba hamelomana ny mpankafy sy hanokafana ny flipchart miaraka amin'ny soso-kevitra. Eo akaikin'ny fakantsary dia misy solosaina finday misy fanaraha-maso ny entana.

Ahoana no namoronana ny backend amin'ny lalao hacker momba ny famotehana mpizara

fanompoana Nokajiko izay haseho amin'ny fanaraha-maso ho toy ny entana ankehitriny: mari-pana sy CPU Fan. Nafindra tao amin'ny angon-drakitra timebase ny metrika ary nataon'ny grafana.

Raha tao anatin'ny 5 segondra farany dia mihoatra ny 50 ny fangatahana hanehoana ny captcha no voaray, dia nitombo isa + kisendrasendra ny enta-mavesatra. Ny kajikajy dia ny entana 100% dia azo tratrarina ao anatin'ny roa minitra.

Raha ny marina, nisy lojika bebe kokoa tao amin'ny serivisy noho ny naseho tamin'ny lalao farany: nametraka ny monitor izahay tamin'ny fomba izay tsy hita afa-tsy ny fihodinan'ny CPU Fan.

Tany am-piandohan'ny fikatsahana dia naniry ny hamela an'i Grafan azo idirana amin'ny tranokalan'ny Falcon izy ireo. Saingy nisy metrika springboot avy amin'ny tatitry ny rindranasa backend, izay tsy nanam-potoana hamafa, ka nanapa-kevitra ny hanakana ny fidirana amin'izany izahay. Ary marina izany - na dia tany am-piandohan'ny fikatsahana aza, ny mpilalao sasany dia nihevitra fa ny fampiharana dia nosoratana tao amin'ny framework springboot ary nandavaka ny anaran'ny serivisy sasany aza.

fampiantranoana sy data bus

Fitaovana iray handefasana vaovao avy amin'ny backend mankany amin'ny tranokala, ny mpizara VPS izay nihazakazaka RabbitMQ.

Notohizana ny backend sy ny bus data ny VPS. Ny heriny dia azo oharina amin'ny solosaina hitanao teo amin'ny efijery: VPS 2-core misy RAM roa gigabytes. Ny karama dia nalaina ho an'ny loharanon-karena, satria ny enta-mavesatra ambony dia nomanina andro vitsivitsy monja - izany no ataon'ny mpanjifanay izay mikasa ny hampiditra VPS mandritra ny fotoana fohy. Avy eo dia hita fa ambony noho ny nantenainay ny entana, ary ny karama raikitra dia hahazo tombony bebe kokoa. Raha manao fikatsahana ianao dia fidio ny tariff tsipika turbo.

Mba hiarovana ny mpizara amin'ny DDoSa dia nampiasa Cloudflare izahay.

Tsara ny milaza fa ny VPS dia nanohitra ny zava-drehetra tamim-boninahitra.

Arduino, izay tompon'andraikitra amin'ny fanaraha-maso ny fampitana, dia nahazo baiko avy amin'ny mpandika teny ary nanao ny asa tena izy

Ity no lohahevitry ny lahatsoratra manaraka momba ny ampahany amin'ny fitaovana amin'ny tetikasa: ny backend dia nandefa fangatahana fotsiny mba hampandeha ny fampitana manokana. Ny zava-nitranga dia saika fantatry ny backend ny sampana rehetra ary ny fangatahana avy aminy dia toy ny hoe "avereno ity sampana ity." Nanao izany izahay ho an'ny fitsapana mialoha ny tranokala (mbola tsy nanangona ny Arduino sy ny relay rehetra izahay), tamin'ny farany dia nandao ny zava-drehetra toy izany izahay.

Ny tendrony aloha

Namorona haingana ny tranokala tamin'ny tilde izahay, naharitra iray andro fiasana ary namonjy anay tamin'ny tetibolay 30 arivo.

Tany am-boalohany dia nieritreritra ny hanondrana fotsiny ny tranokala izahay ary manampy ny lojika tsy hitanay, saingy nifandray tamin'ny fampiasana izay nandrara anay tsy hanao izany.

Tsy vonona ny hanitsakitsaka ny fahazoan-dΓ lana izahay, noho izany dia nisy safidy roa: hampihatra ny zava-drehetra amin'ny tenanay na hifandray mivantana amin'i Tilda, miresaka momba ny tetikasa ary mangataka alalana hanova ny code.

Nisafidy ny safidy faharoa izahay ary tsy vitan'ny hoe nifanena taminay tamin'ny antsasa-dalana izy ireo, fa nanome anay kaonty fandraharahana maimaim-poana herintaona, izay tena mankasitraka azy ireo izahay. Tena hafahafa ny nampisehoana azy ireo ny endriky ny tranokalan'i Sokol.

Vokatr'izany dia nampifandraisinay ny lojikan'ny js amin'ny lohany amin'ny fandefasana fangatahana amin'ny fitaovana fototra, ary nanova kely ny fomban'ny bokotra hamelomana sy hamonoana ireo singa lalao.

Famolavolana tranokala

Ny tantaran'ny fikarohana, izay mendrika toko iray misaraka.

Tsy te hamorona tranokala efa tranainy fotsiny izahay, fa tranonkala tena maharikoriko izay mandika ny fitsipika fototra rehetra momba ny famolavolana. Mandritra izany fotoana izany, zava-dehibe ny fitazonana ny fahatokisana: tsy maintsy manapaka ny tantaran'ny ENT, mampiseho ny hambom-pon'ny mpanoratra, ary ny mpilalao dia tsy maintsy mino fa mety hisy ny tranokala toy izany ary hitondra mpanjifa mihitsy aza. Dia nentiny! Nandritra ny lalao dia nifandray indroa izahay mba hamorona tranonkala.

Tamin'ny voalohany dia nanao ny famolavolana ny tenako aho, niezaka ny hampiditra gif bebe kokoa sy singa mamirapiratra. Saingy ny vadiko mpamorona 10 taona dia nijery teo an-tsorony ary nanilika izany ho "tsara loatra." Mba handikana ny fitsipiky ny famolavolana dia mila mahafantatra azy ireo ianao.

Ahoana no namoronana ny backend amin'ny lalao hacker momba ny famotehana mpizara

Misy fampifangaroana loko maromaro izay miteraka fahatsapana rikoriko maharitra: maitso sy mena mitovy habe, volondavenona sy mavokely, manga miampy volontany. Tamin'ny farany, nanorim-ponenana tamin'ny fitambaran'ny mena sy maitso ho loko fototra izahay, nampiana gif miaraka amin'ny saka ary nisafidy sary 3-4 an'i Sokolov tenany avy amin'ny sarin'ny tahiry. Tsy nanana afa-tsy fepetra vitsivitsy aho: lehilahy efa zokinjokiny, manao akanjo tsy mety amin'ny haben'ny mpivady lehibe loatra ary manao pose "fototra studio matihanina". Ho an'ny fitsapana dia nasehon'izy ireo tamin'ny namany izany ary nanontany hoe "ahoana no tianao?"

Nandritra ny dingan'ny famolavolana famolavolana, ny vadiko dia tsy maintsy nandry isaky ny antsasak'adiny; Niezaka nanokatra ny console developer tamin'ny ankamaroan'ny efijery i Pasha rehefa nahavita ny endriny ivelany - mba hiarovana ny masony.

Fitaovana tena izy

Ny mpankafy sy ny jiro dia napetaka tamin'ny alΓ lan'ny relais solid-state mba tsy hirehitra avy hatrany amin'ny heriny feno - mba hitomboan'ny herinaratra mifanaraka amin'ny fanaraha-maso.

Saingy hiresaka momba izany isika amin'ny lahatsoratra manaraka, momba ny ampahany amin'ny fitaovana amin'ny lalao sy ny tena fananganana ny tranokala.

Maharaha vaovao!

Lahatsoratra hafa momba ny fikatsahana ny handrava ny mpizara

Ahoana no namoronana ny backend amin'ny lalao hacker momba ny famotehana mpizara

Source: www.habr.com

Add a comment