سرور کي تباهه ڪرڻ بابت هيڪر راند جو پس منظر ڪيئن ٺاهيو ويو

سرور کي تباهه ڪرڻ بابت هيڪر راند جو پس منظر ڪيئن ٺاهيو ويو
اسان توهان کي ٻڌائڻ جاري رکون ٿا ته سرور جي تباهي سان اسان جي ليزر جي ڳولا ڪيئن ترتيب ڏني وئي هئي. اڳئين ۾ شروع ڪريو سوال حل ڪرڻ بابت مضمون.

مجموعي طور تي، راند جي پس منظر ۾ 6 تعميراتي يونٽ هئا، جن کي اسين هن مضمون ۾ تجزيو ڪنداسين:

  1. راندين جي ادارن جو پس منظر جيڪي راندين جي ميڪانيزم لاء ذميوار هئا
  2. VPS تي پس منظر ۽ سائيٽ ڊيٽا مٽائي بس
  3. ترجمو ڪندڙ پس منظر جي درخواستن (راند جي عناصر) کان Arduino ڏانهن ۽ سائيٽ تي هارڊويئر
  4. Arduino، جيڪو ريل کي ڪنٽرول ڪرڻ جو ذميوار هو، مترجم کان حڪم حاصل ڪيو ۽ اصل ڪم ڪيو
  5. اصل ڊوائيسز: پرستار، مالا، فرش لیمپ، وغيره.
  6. Frontend - Falcon ويب سائيٽ پاڻ، جنهن مان رانديگرن کي ڪنٽرول ڊوائيسز

اچو ته انهن مان هر هڪ ذريعي وڃو.

راندين جي ادارن جو پس منظر

پس منظر کي اسپرنگ بوٽ ايپليڪيشن جي طور تي لاڳو ڪيو ويو: ان ۾ ڪيترائي باقي ڪنٽرولرز، ويب ساکٽ جي آخري پوائنٽ ۽ خدمتون راند جي منطق سان.

اتي فقط ٽي ڪنٽرولر هئا:

  • ميگاٽرون. موجوده Megatron صفحو GET درخواستن ذريعي موڪليو ويو: پاور آن ڪرڻ کان اڳ ۽ پوءِ. ليزر پوسٽ جي درخواست ذريعي فائر ڪيو.
  • ٽيلڊ صفحن جي نقشي کي ترتيب ڏيو ته جيئن اهي صفحي جي نالي سان پيش ڪيا وڃن. Tilde برآمد ڪرڻ لاءِ صفحا پيدا ڪري ٿو اصل نالن سان نه، پر اندروني ID ۽ تعميل جي معلومات سان.
  • pseudo-high-load server captcha جي خدمت ڪرڻ لاءِ ڪيپچا ڪنٽرولر.

Websocket جي آخري پوائنٽ گيجٽ کي ڪنٽرول ڪرڻ لاء استعمال ڪيو ويو: لیمپ، گارنڊ ۽ خط. اهو چونڊيو ويو آهي هم وقت سازي سان سڀني رانديگرن کي ڊسپلي ڪرڻ لاءِ ڊوائيس جي موجوده حالت: ڇا اهو آهي يا بند، فعال آهي يا نه، هن وقت ڀت تي ڪهڙي رنگ جو خط روشن آهي. ليزر کي آن ڪرڻ جي ڪم کي ٿورو وڌيڪ ڏکيو بنائڻ لاءِ، اسان گارلينڊ ۽ ليزر کي ساڳي لاگ ان ۽ پاسورڊ ايڊمن/ايڊمن سان اختيار شامل ڪيو.

رانديگر ان کي گارنڊ تي ڦيرائڻ سان جانچي سگھن ٿا ۽ ساڳي طرح ليزر سان ورجائي سگھن ٿا.

اسان ھڪڙو ننڍڙو لاگ ان-پاسورڊ جوڙو چونڊيو آھي ته جيئن رانديگرن کي غير ضروري چونڊ سان عذاب نه ڏيو.

ڪم کي ٿورو وڌيڪ دلچسپ بڻائڻ لاءِ، مونگوڊب مان اعتراض جي IDs کي ڪمري ۾ ڊيوائس جي سڃاڻپ ڪندڙ طور استعمال ڪيو ويو.

ObjectId هڪ ٽائم اسٽيمپ تي مشتمل آهي: ٻه بي ترتيب قدر، جن مان هڪ ڊوائيس جي سڃاڻپ ڪندڙ جي بنياد تي ورتو وڃي ٿو، ۽ ٻيو ان عمل جي پيڊ تي ٻڌل آهي جيڪو ان کي پيدا ڪري ٿو ۽ انسداد قيمت. مان چاهيان ٿو ته سڃاڻپ ڪندڙ ٺاهيا وڃن جيڪي باقاعده وقفن تي ۽ مختلف pid پروسيس سان، پر هڪ عام ڪائونٽر سان، ته جيئن ليزر ڊيوائس جي سڃاڻپ ڪندڙ جي چونڊ وڌيڪ دلچسپ ٿئي. جڏهن ته، آخر ۾، هرڪو سڃاڻپ ڪندڙ سان شروع ڪيو جيڪي صرف انسداد قيمت ۾ مختلف هئا. اهو ٿي سگھي ٿو ته قدم کي تمام سادو بڻائي ڇڏيو آهي ۽ اعتراض جي جوڙجڪ جي تجزيي جي ضرورت ناهي.

پس منظر جي درخواستن مان ترجمو ڪندڙ

پٿون اسڪرپٽ، جن ٽائمرز تي ڪم ڪيو ۽ انهن کي گیمنگ خلاصن مان هڪ فزيڪل ماڊل ۾ ترجمو ڪيو. مثال طور، "فرش ليمپ آن ڪريو" → "رلي N2 آن ڪريو."

اسڪرپٽ RabbitMQ قطار سان ڳنڍيل آهي ۽ قطار کان درخواستن کي Arduino ڏانهن منتقل ڪيو ويو آهي. اهو پڻ متوازي لائيٽ سوئچنگ جي منطق کي لاڳو ڪيو: ڪجهه ڊوائيسز سان گڏ، انهن تي روشني ڦيرايو ويو، مثال طور، جڏهن پاور شروعاتي طور تي Megatron کي فراهم ڪيو ويو، اهو اسٽيج جي روشني سان روشن ڪيو ويو. سڄي منظر جي سئنيما گرافي لاء روشني ڊيزائن اسان جي پروجيڪٽ جي ڪو پروڊيوسر ۽ پروڊڪشن ڊيزائنر اليا سروف جي عظيم ڪم بابت هڪ الڳ ڪهاڻي آهي، ۽ اسان ان بابت هڪ الڳ پوسٽ ۾ ٻڌائينداسين.

مترجم پڻ هڪ ٽائمر استعمال ڪندي شريڊر کي لانچ ڪرڻ ۽ تصوير کي ٽي وي تي منتقل ڪرڻ جي منطق جو ذميوار هو: شريڊر کي لانچ ڪرڻ لاءِ ٽائمر، هڪ چيري ڪيپيبارا، راند جي آخر ۾ هڪ تجارتي.

ميگاٽرون ٽوڪن ٺاهڻ لاءِ منطق ڪيئن ترتيب ڏني وئي هئي

ٽيسٽ شاٽ

هر 25 سيڪنڊن ۾ هڪ نئون ٽوڪن ٺاهيو ويو ۽ 10 سيڪنڊن لاءِ 10/255 پاور تي ليزر آن ڪرڻ لاءِ استعمال ٿي سگهي ٿو. سان ڳنڍيو megatron ڪوڊ سان گڏ github.

ليزر وري 1 منٽ لاءِ ٿڌو ٿي ويو - ان دوران اهو دستياب نه هو ۽ نئين شاٽ جي درخواستن کي قبول نه ڪيو.

اها طاقت رسي ذريعي ساڙڻ لاءِ ڪافي نه هئي، پر ڪو به رانديگر ميگاٽرون کي باهه ڏئي سگهي ٿو ۽ ليزر بيم کي عمل ۾ ڏسي سگهي ٿو.

MD5 hashing algorithm استعمال ڪيو ويو ٽوڪن ٺاهڻ لاءِ. ۽ اسڪيم ڪم ڪيو MD5 کان MD5 + انسداد + راز جنگي ٽوڪن لاءِ ۽ بغير ڪنهن راز جي ٽيسٽ ٽوڪن لاءِ.

MD5 هڪ تجارتي منصوبي جو حوالو آهي جيڪو Pavel، اسان جي پٺاڻ، ڪيو. ڪجهه سال اڳ هن پروجيڪٽ MD5 استعمال ڪيو، ۽ جڏهن هن پروجيڪٽ آرڪيٽيڪٽ کي ٻڌايو ته اهو هڪ پراڻو انڪرپشن الگورٿم هو، انهن MD5 مان MD5 استعمال ڪرڻ شروع ڪيو. جيئن ته اسان سڀ کان وڌيڪ نوب پروجيڪٽ کي ممڪن بڻائڻ جو فيصلو ڪيو، هن کي سڀ ڪجهه ياد آيو ۽ هڪ ننڍڙو حوالو ڏيڻ جو فيصلو ڪيو.

جنگي شاٽ

Megatron جو جنگي موڊ 100٪ ليزر پاور 3 واٽ تي آھي. اهو 2 منٽن لاءِ ڪافي آهي رسي ذريعي ساڙڻ لاءِ جيڪو وزن رکي ٿو، ايڪريريم کي ٽوڙڻ ۽ سرور کي پاڻي سان ٻوڏائڻ لاءِ.

اسان پروجيڪٽ جي Github تي ڪيترائي اشارا ڇڏيا آهن: يعني، ٽوڪن جنريشن ڪوڊ، جنهن مان ڪو سمجهي سگهي ٿو ته ٽيسٽ ۽ جنگي ٽوڪن ٺاهيا ويا آهن ساڳئي انسداد اشاري جي بنياد تي. جنگي ٽوڪن جي صورت ۾، انسداد جي قيمت کان علاوه، هڪ لوڻ پڻ استعمال ڪيو ويندو آهي، جيڪو آخري ٻن اکرن جي استثنا سان، هن گسٽ جي تبديلي جي تاريخ ۾ تقريبا مڪمل طور تي ڇڏي ويو آهي.

هن ڊيٽا کي ڄاڻڻ سان، اهو ممڪن هو ته لوڻ جي آخري 2 علامتن ذريعي ترتيب ڏيو ۽ اصل ۾ اهو معلوم ڪيو ويو ته گم ٿيل نمبر، هيڪساڊيڪل سسٽم ۾ تبديل ٿيل، ان لاء استعمال ڪيا ويا.

پوءِ رانديگرن کي ڪائونٽر ويل کي پڪڙڻو هو (ٽيسٽ ٽوڪن جو تجزيو ڪندي) ۽ ايندڙ ڪائونٽر ويليو استعمال ڪندي هڪ جنگي ٽوڪن تيار ڪرڻي هئي ۽ پوئين قدم تي چونڊيل لوڻ.

انسداد صرف هر ٽيسٽ شاٽ ۽ هر 25 سيڪنڊن سان وڌايو ويو. اسان هن بابت ڪٿي به نه لکيو آهي، اهو هڪ ننڍڙو راند تعجب ٿيڻ گهرجي.

ڪيپچا رابطي جي خدمت

گيمنگ جي دنيا ۾، هي ساڳيو ڪيپچا هو جنهن کي لوڊ ڪرڻو پوندو هو ته جيئن فين کي آن ڪيو وڃي ۽ فلپ چارٽ کي اشاري سان کوليو وڃي. ڪئميرا جي اڳيان هڪ ليپ ٽاپ لوڊ مانيٽرنگ سان هو.

سرور کي تباهه ڪرڻ بابت هيڪر راند جو پس منظر ڪيئن ٺاهيو ويو

خدمت مون حساب ڪيو ته مانيٽرنگ ۾ ڇا ڏيکاريو جيئن موجوده لوڊ: درجه حرارت ۽ سي پي يو فين. ميٽرڪ ٽائم بيس ڊيٽابيس ڏانهن منتقل ڪيا ويا ۽ گرافانا پاران ٺاهيا ويا.

جيڪڏهن آخري 5 سيڪنڊن ۾ ڪيپچا ڊسپلي ڪرڻ لاءِ 50 کان وڌيڪ درخواستون هيون، ته پوءِ لوڊ وڌندو ويو هڪ مقرر + بي ترتيب قدمن جو تعداد. حساب اهو هو ته 100 سيڪڙو لوڊ ٻن منٽن ۾ حاصل ڪري سگهجي ٿو.

حقيقت ۾، سروس ۾ وڌيڪ منطق هئي جيڪا فائنل راند ۾ ڏيکاري وئي هئي: اسان مانيٽر کي اهڙي طرح رکيل آهي ته صرف سي پي يو فين جي گردش نظر اچي ٿي.

ڳولا جي شروعات ۾ اهي گرافن کي ڇڏڻ چاهيندا هئا Falcon ويب سائيٽ تان رسائي لائق. پر ان ۾ پس منظر واري ايپليڪيشن رپورٽ مان اسپرنگ بوٽ ميٽرڪ پڻ شامل آھن، جنھن کي صاف ڪرڻ لاءِ اسان وٽ وقت نه ھو، تنھنڪري اسان ان تائين رسائي کي بلاڪ ڪرڻ جو فيصلو ڪيو. ۽ صحيح طور تي - جيتوڻيڪ ڳولا جي شروعات ۾، ڪجهه رانديگرن اهو اندازو لڳايو ته ايپليڪيشن اسپرنگ بوٽ فريم ورڪ ۾ لکيو ويو آهي ۽ ڪجهه خدمتن جا نالا پڻ ڊاهي ڇڏيا آهن.

هوسٽنگ ۽ ڊيٽا بس

معلومات کي پس منظر کان سائيٽ ڏانهن منتقل ڪرڻ لاء هڪ اوزار، VPS سرور جنهن تي RabbitMQ هلائي رهيو هو.

پس منظر ۽ ڊيٽا بس تي رکيو ويو اسان جي VPS. ان جي طاقت ان ڪمپيوٽر جي مقابلي ۾ هئي جيڪا توهان اسڪرين تي ڏٺي هئي: هڪ 2-core VPS ٻن گيگا بائيٽ ريم سان. ٽريف وسيلن لاء چارج ڪيو ويو، ڇاڪاڻ ته چوٽي لوڊ صرف چند ڏينهن لاء رٿابندي ڪئي وئي هئي - اهو آهي جيڪو اسان جا گراهڪ ڪندا آهن جيڪي ٿوري وقت لاء VPS لوڊ ڪرڻ جو منصوبو ڪندا آهن. پوء اهو ظاهر ٿيو ته لوڊ اسان جي توقع کان وڌيڪ هو، ۽ هڪ مقرر ڪيل ٽريف وڌيڪ فائدي وارو هوندو. جيڪڏهن توهان هڪ جستجو ڪريو ٿا، چونڊيو لائين ٽريف ٽربو.

DDoSa کان سرور کي بچائڻ لاءِ، اسان استعمال ڪيو Cloudflare.

اهو چوڻ جي قابل آهي ته VPS عزت سان هر شيء کي برداشت ڪيو.

Arduino، جيڪو ريل کي ڪنٽرول ڪرڻ جو ذميوار هو، مترجم کان حڪم حاصل ڪيو ۽ اصل ڪم ڪيو

اهو وڌيڪ آهي ايندڙ مضمون جو موضوع پروجيڪٽ جي هارڊويئر حصي بابت: پس منظر صرف هڪ مخصوص رلي کي چالو ڪرڻ لاءِ درخواستون موڪليون. اهو ائين ٿيو ته پس منظر کي تقريبن سڀني ادارن جي ڄاڻ هئي ۽ ان کان درخواستون نظر اچن ٿيون "هن اداري کي ڦيرايو." اسان اهو ڪم سائيٽ جي شروعاتي جاچ لاءِ ڪيو (اسان اڃا تائين سڀئي Arduino ۽ رلي گڏ نه ڪيا هئا)، آخر ۾ اسان سڀ ڪجهه ائين ئي ڇڏي ڏنو.

سامهون وارو

اسان جلدي سائيٽ ٺاهي ٽيلڊ تي، اهو هڪ ڪم ڪندڙ ڏينهن ورتو ۽ اسان جي بجيٽ تي 30 هزار بچايو.

شروعات ۾، اسان سوچيو ته صرف سائيٽ کي برآمد ڪرڻ ۽ شامل ڪرڻ جو منطق جيڪو اسان غائب هئاسين، پر اسان استعمال جي شرطن ۾ ڀڄي ويا جنهن اسان کي اهو ڪرڻ کان منع ڪيو.

اسان لائسنس جي خلاف ورزي ڪرڻ لاء تيار نه هئا، تنهنڪري اتي ٻه اختيار هئا: پاڻ کي هر شي تي عمل ڪرڻ يا سڌو سنئون Tilda سان رابطو ڪرڻ لاء، منصوبي بابت ڳالهايو ۽ ڪوڊ کي تبديل ڪرڻ جي اجازت طلب ڪريو.

اسان ٻيو آپشن چونڊيو ۽ اهي نه رڳو اسان سان اڌ رستي تي مليا، پر اسان کي هڪ سال جو مفت بزنس اڪائونٽ به ڏنو، جنهن لاءِ اسين انهن جا ٿورائتا آهيون. اهو ڏاڍو عجيب هو انهن کي ڏيکاريو Sokol جي ويب سائيٽ ڊيزائن.

نتيجي طور، اسان ابتدائي ڊوائيسز تي درخواستون موڪلڻ لاء فرنٽ اينڊ سان js منطق ڳنڍيو، ۽ راندين جي عناصر کي بند ڪرڻ ۽ بند ڪرڻ لاء بٽڻ جي انداز کي ٿورو تبديل ڪيو.

ويب سائٽ

ڳولا جي تاريخ، جيڪو هڪ الڳ باب جي لائق آهي.

اسان چاهيون ٿا ته نه رڳو هڪ پراڻي فيشن واري سائيٽ، پر هڪ بلڪل نفرت واري سائيٽ جيڪا ڊزائن جي سڀني بنيادي قاعدن جي ڀڃڪڙي ڪري ٿي. ساڳئي وقت، اهو ضروري هو ته ايمانداري کي برقرار رکڻ لاء: اهو ENT ڪهاڻي کي ٽوڙڻ نه گهرجي، ليکڪ جي تعصب جو مظاهرو ڪيو، ۽ رانديگرن کي يقين رکڻو پوندو ته اهڙي سائيٽ موجود ٿي سگهي ٿي ۽ گراهڪن کي به آڻي سگهي ٿو. ۽ اھو کڻي آيو! جڏهن راند هلي رهي هئي، اسان ويب سائيٽ ٺاهڻ لاء ٻه ڀيرا رابطو ڪيو ويو.

پهرين ۾ مون پاڻ کي ڊزائين ڪيو، وڌيڪ گف ​​۽ چمڪندڙ عناصر شامل ڪرڻ جي ڪوشش ڪئي. پر 10 سالن جي منهنجي ڊزائنر مڙس هن جي ڪلهي تي ڏٺو ۽ ان کي "ڏاڍو سٺو" قرار ڏنو. ڊزائن جي ضابطن کي ٽوڙڻ لاء، توهان کي انهن کي ڄاڻڻ جي ضرورت آهي.

سرور کي تباهه ڪرڻ بابت هيڪر راند جو پس منظر ڪيئن ٺاهيو ويو

اهڙا ڪيترائي رنگ مجموعا آهن جيڪي نفرت جي دائمي احساس کي ظاهر ڪن ٿا: سائي ۽ ڳاڙهي برابر دولت، سرمائي ۽ گلابي، نيري ۽ ناسي. آخر ۾، اسان بنيادي رنگن وانگر ڳاڙهي ۽ سائي جي ميلاپ تي آباد ٿيا، هڪ ٻلي سان گف شامل ڪيو ۽ اسٽاڪ فوٽو مان پاڻ Sokolov جي 3-4 تصويرون چونڊيو. مون کي صرف ڪجهه گهرجون هيون: هڪ وچين عمر وارو ماڻهو، هڪ غير مناسب سوٽ پائڻ، ٻه سائيز تمام وڏا ۽ ”پروفيشنل اسٽوڊيو فوٽو شوٽ“ پوز ۾. ٽيسٽ لاءِ، هنن اهو دوستن کي ڏيکاريو ۽ پڇيو ”توهان کي اهو ڪيئن پسند آهي؟

ڊزائن ڊولپمينٽ جي عمل دوران، منهنجي مڙس کي هر اڌ ڪلاڪ ليٽ وڃڻو پيو؛ هيلي ڪاپٽر اڏامڻ لڳو. پاشا ڊولپر ڪنسول کي اڪثر اسڪرين تي کولڻ جي ڪوشش ڪئي جڏهن هن فرنٽ اينڊ کي ختم ڪيو - پنهنجي اکين کي بچائڻ لاءِ.

حقيقي ڊوائيسز

پنن ۽ لائيٽن کي سالڊ اسٽيٽ رليز ذريعي لڳايو ويو ته جيئن اهي فوري طور تي پوري طاقت تي نه هلن - انهي ڪري ته بجلي نگراني سان گڏ وڌندي.

پر اسان ان بابت ايندڙ پوسٽ ۾ ڳالهائينداسين، راند جي هارڊويئر حصو ۽ سائيٽ جي حقيقي تعمير بابت.

ڏند رهو!

سرور کي تباهه ڪرڻ جي ڳولا بابت ٻيا مضمون

سرور کي تباهه ڪرڻ بابت هيڪر راند جو پس منظر ڪيئن ٺاهيو ويو

جو ذريعو: www.habr.com

تبصرو شامل ڪريو