ڪوڊر جنگ: مون بمقابله اهو VNC گائي

В هي بلاگ ڪافي ڪجھ پروگرامر ڪهاڻيون شايع ڪيون ويون آهن. مون کي پنهنجي پراڻي بيوقوف شين جي باري ۾ ياد ڪرڻ پسند آهي. خير، هتي هڪ ٻي اهڙي ڪهاڻي آهي.

مون کي پهريون ڀيرو ڪمپيوٽرن ۾ دلچسپي پيدا ٿي، خاص طور تي پروگرامنگ، جڏهن آئون اٽڪل 11 سالن جو هو. هاءِ اسڪول جي شروعات ۾ بيоمون پنهنجي مفت وقت جو گهڻو حصو پنهنجي C64 سان ٽِنڪر ڪرڻ ۽ BASIC لکڻ ۾ گذاريو، پوءِ خراب ڪوڊ کي اسڪيسر سان ڪٽيو. مان مذاق نه ڪري رهيو آهيان، اسڪسيسر.

اسڪول کان پوءِ (تقريبن 16 سالن جي عمر ۾)، برطانوي ٻار عام طور تي ڪاليج ويندا آهن، جتي هو يونيورسٽي وڃڻ کان اڳ ٽي يا چار مضمون پڙهڻ لاءِ چونڊيندا آهن. گهر ۾ بيج باڪس ۽ ٽيپ رڪارڊر سان منهنجي محبت کي نظر ۾ رکندي، مون فيصلو ڪيو ته ڪاليج ۾ ”ڪمپيوٽر سائنس“ پڙهڻ صحيح انتخاب هو.

مون کي توقع کان وڌيڪ ڪورس لطف اندوز ٿيو؛ اتي منهنجي پهرين ملاقات پاسڪل ۽ ڊيلفي سان ٿي.

ڪلاسن جي وچ ۾ وقفي دوران، شاگرد ڪمپيوٽر روم ۾ ڪنهن به مفت مشين تي ڪم ڪري سگهن ٿا. تصور ڪريو: ھڪڙو وڏو ڪمرو، اٽڪل سؤ ماڻھن لاءِ ٺاھيو ويو آھي، مشينن سان ڀريل ٽيبلن جي قطارن سان، جھڙوڪ جتي مانيٽر سسٽم يونٽ تي بيٺل آھي. مداح مسلسل گونجي رهيا آهن، مائوس بالز ٽيبل تي گونجي رهيا آهن، هڪ سيڪنڊ لاءِ به نه روڪي رهيا آهن. هوا ۾ هڪ عجيب بو آهي، ڄڻ ته 50-100 هارمونل نوجوان وقتاً فوقتاً تبديل ٿيندا رهيا آهن ته جيئن سوين پينٽيم III چپس ٿڌي ٿي وڃن.

صحت جي خطرن جي باوجود، مون ڪمپيوٽر تي ويهڻ پسند ڪيو جڏهن مون وٽ مفت منٽ هو.

ڪمري ۾ ڊيوٽي تي ويٺل منتظم هڪ ننڍو، وچين عمر وارو ماڻهو هو، جنهن کي هن ڪردار لاءِ چونڊيو ويو هو، ڇاڪاڻ ته هن جي هڪ برائي ڊڪٽيٽر ٿيڻ جي بيحد خواهش هئي. مان ائين سمجهان ٿو. فرض تي هڪ سمجھاڻي آهي، ڇوڪرو واقعي پنهنجي نوڪري سان پيار ڪيو. هن کي ترتيب ڏيڻ جو ڪم ڏنو ويو هو ته جيئن ڪو به اسڪول جي ڪمپيوٽر کي ڪنهن به غير مناسب ڪم لاء استعمال نه ڪري.

اڄ تائين، منهنجو وجدان مون کي ٻڌائي ٿو ته منتظم جو بونس سڌو سنئون انهن شاگردن جي تعداد تي منحصر آهي، جن کي هن هٿ سان پڪڙيو ۽ ڪمپيوٽر روم مان ٻاهر ڪڍيو ويو. مون کي پڪ آهي ته هن ماڻهو پنهنجي گروي کي جلدي ادا ڪيو.

هو ڪمپيوٽر روم جي پري ڪنڊ ۾ ڪنڊ واري ٽيبل تي ويٺو هو. ۽ اهو فرض ڪرڻ لاءِ محفوظ هو ته هن جي زرخيزي مانيٽر هڪ مؤثر انداز سان ٻيهر پيدا ڪرڻ جو هڪ طريقو ڳولي ورتو هو جنهن جي حمل جي مختصر مدت، انهن مان تمام گهڻا هئا. هڪ ئي حيران ٿي سگهي ٿو ته ڇا هن وٽ واقعي وقت هو انهن سڀني کي باخبر رکڻ لاء. يقينا، مان مذاق ڪري رهيو آهيان ... ڇا مون ذڪر ڪيو آهي ته هن پنهنجي ڪم کي تمام سنجيده ورتو؟

ان وقت، ڪمپيوٽر نيٽ ورڪ ونڊوز 2000 تي هلائي رهيو هو. مون جلد ئي دريافت ڪيو ته جڏهن به آئون سسٽم ۾ لاگ ان ٿيو آهيان، هڪ اسڪرپٽ شروع ڪئي وئي آهي جنهن ۾ ڊيسڪ ٽاپ تائين ريموٽ رسائي لاءِ ايڊمنسٽريٽر اڪائونٽ مان VNC سرور شروع ڪرڻ جي وضاحت ڪئي وئي آهي. جڏهن به هي ماڻهو توهان جي جاسوسي ڪرڻ چاهيندو هو، هو سڌو سنئون توهان جي مشين سان ڳنڍيندو ۽ ڏسندو هو. اهو خوفناڪ هو، ۽ هاڻي ته مان ان بابت سوچيان ٿو، شايد غير قانوني.

BASIC ۽ C64 تي منهنجا ڏند ڪٽيا، مون هاڻي C ۽ اڃا به ٿورو C ++ ۾ لکيو. ان وقت، مون کي اڃا تائين ڊي ٻولي ۾ ڏاڍي دلچسپي هئي، جنهن C++ جي ڪجهه خامين کي درست ڪيو، جيئن مون ڏٺو.

مان ڪمپيوٽر روم ۾ ويندو هوس ته ڊي تي ڪا نئين شيءِ پڙهڻ لاءِ يا ڊجيٽل مارس ڊي ڪمپائلر سان کيڏڻ لاءِ. ڪڏهن ڪڏهن، جڏهن مان ڊي جي عظيم مستقبل بابت سوچڻ کان پريشان ٿي ويندو هوس، ته مون ٻين Win32 پروگرامن کي انهن جي ونڊو ذريعي هيڪ ڪرڻ لاءِ سي ڪوڊ لکيو. هٿ.

Win32 پروگرامنگ جي سٺن پراڻن ڏينهن ۾، ونڊو هينڊل ڳولڻ ٻين پروگرامن کي هيڪ ڪرڻ جو آسان طريقو هو. ظاهر آهي، ونڊوز تي سڀني GUI پروگرامن وٽ هڪ ونڊو هوندو هو، جيتوڻيڪ اهو اسڪرين تي ظاهر نه ٿيندو هو. هڪ پروگرام لکڻ سان هڪ هينڊل ٻيهر حاصل ڪرڻ لاءِ ٻئي پروسيس (لازمي طور تي ان جي لنڪ)، توهان ان ڏانهن پيغام موڪلي سگهو ٿا. اهو ڪجهه بنيادي عملن لاءِ اجازت ڏئي ٿو جهڙوڪ پروگرام ونڊو کي لڪائڻ / ڏيکارڻ، ۽ انهي سان گڏ واقعي سٺيون شيون جهڙوڪ هڪ عمل کي مجبور ڪرڻ لاءِ هڪ خودمختيار DLL ان جي ميموري اسپيس ۾ لوڊ ڪرڻ ۽ ڪوڊ تي عمل ڪرڻ شروع ڪرڻ. ڊي ايل ايل انجڻ کان پوء، مزو شروع ٿيو.

پهرين مهيني ۽ اڌ ۾، هن جاسوس مون کي گهڻو پريشان نه ڪيو؛ اهو صرف هڪ يا ٻه ڀيرا منهنجي مشين تي VNC سرور سان ڳنڍيل آهي. پر هڪ خاص سيشن شايد هن جي دلچسپي کي وڌايو هجي. مان ڪجهه سي ڪوڊ لکي رهيو هوس مائنس ويپر ونڊوز کي لڪائڻ لاءِ (انهن کي بند ڪرڻ کان سواءِ) ڪلاس ۾ کيڏڻ کي آسان ڪرڻ لاءِ، جڏهن مون ڏٺو ته سسٽم ٽري ۾ اڇو VNC آئڪن ڪارو ٿي چڪو هو. ان جو مطلب اهو ٿيو ته هو هاڻي مون کي ڏسي رهيو هو.

مون هميشه وانگر ڪوڊنگ جاري رکي، کيس نظرانداز ڪرڻ جي ڪوشش ڪئي. ان دوران، مشين سست ٿيڻ شروع ڪيو، وڌ ۾ وڌ فريم جي شرح کي ڪمري جي ڪنڊ ۾ بيشمار مانيٽر مان هڪ ڏانهن منتقل ڪرڻ جي ڪوشش ڪئي. ونڊوز تقريبن جواب ڏيڻ بند ڪيو، جڏهن منهنجو صبر ختم ٿي ويو، مون لاگ آئوٽ ڪيو ۽ ڏينهن لاءِ ختم ٿي ويو.

ڪمپيوٽر روم ۾ ايندڙ دورن تي، ڪولمبو مون کي لڳ ڀڳ هر دفعي ڇا ڪري رهيو هو ان ۾ ڏاڍي دلچسپي ورتي. چوٿين وقت کان پوء، مون فيصلو ڪيو: مون کي هن بابت ڪجهه ڪرڻ جي ضرورت آهي.

مان سمجهان ٿو ته هڪ معقول، عقلي ماڻهو اهو مسئلو سڌو سنئون يا سندس باس سان اٿاري سگهي ٿو. بهرحال، مون هميشه لالچ ۾ ڏنو ۽ جلدي پاڻ کي مڪمل طور تي مختلف حڪمت عملي اختيار ڪرڻ ۾ ڳالهايو.

- توهان هن VNC سرور کان سواء ڪجھ به نٿا ڪري سگهو! - مون آرام سان ۽ فيصلي سان پاڻ کي ڪيترائي ڀيرا ٻڌايو.

VNC کي مارڻ ضروري هو.

مان شاگردن جي وڏي ٽولي سان گڏ ڪمپيوٽر روم ۾ وڃڻ لڳس ۽ مانيٽر سان جيترو پري ٿي ويٺس. اهو ڪجهه دير تائين ڪم ڪيو ۽ مون کي ڪجهه وقت ڏنو ته خيالن جي جانچ ڪرڻ لاء.

منهنجي پهرين ڪوشش، مان سمجهان ٿو ته توهان متفق آهيو، ڪافي ڪمزور هئي. سسٽم ٽري ۾ VNC آئڪن تي ساڄي ڪلڪ ڪندي، مون هڪ مينيو ڏٺو جنهن ۾ جادو خط E-X-I-T. بدقسمتيءَ سان، خط سرمائي خاڪو لکت ۾ لکيل هئا. ايڊمنسٽريٽر گروپ پاليسي ايڊيٽر ذريعي "Exit" مينيو آئٽم کي غير فعال ڪري ڇڏيو آهي. مون ٽاسڪ مئنيجر کان پروسيس کي مارڻ جي ڪوشش ڪئي، پر يقينن اهو مون کان پوشيده هو ڇو ته اهو هڪ مختلف، وڌيڪ امتيازي اڪائونٽ هيٺ هلندڙ هو. اهو ڪم نه ڪيو.

VNC سرور TCP پورٽ 5900 تي هلندو آهي، مون کي ياد آهي. منهنجو ايندڙ منصوبو هو ته خراب ٿيل پيڪيٽ هن بندرگاهه ڏانهن موڪلڻ لاءِ ان کي تباهه ڪرڻ لاءِ.

مون گهٽ ۾ گهٽ ڪجهه ڏينهن پروٽوڪول سان ٽڪرائڻ ۾ گذاريا، بندرگاهن 5900 ڏانهن مختلف قسم جي چڱي طرح ٺهيل ڪرپ موڪلڻ ۽ اميد آهي ته اهو ڀڄي ويندو. آخر ۾، اهو پڻ ڪم نه ڪيو.

مون اڳ ۾ ئي سوچڻ شروع ڪيو هو ته مان هن شيء کان نجات حاصل ڪرڻ جي قابل نه هوندا، جڏهن اوچتو اهو مون تي اچي ويو: اتي ضرور هڪ ونڊو هجڻ گهرجي! اسان کي ان کي ڏيکارڻ جي ضرورت آهي. ٿي سگهي ٿو ته اهو هڪ سٺو رسيل "خاموش" بٽڻ هوندو جنهن کي مان وڏي استعمال ۾ وجهي سگهان ٿو!

مون ھاڻي پنھنجي ھاڻي تقريباً ڪامل سي ڪوڊ کي ٻئي پروسيس جي مين ونڊو ڏانھن ھينڊل ڳولڻ لاءِ ڊوڙايو- ۽ پڪ سان، VNC ملي ويو. مون کي حوصلو محسوس ٿيو جڏهن منهنجي آڱرين ٽائپ ڪئي WM_SHOWWINDOW. اندازو لڳائڻ جي ڪوشش ڪريو ته مون پنهنجي سامهون ڇا ڏٺو؟

ڪجھ به نه!

هاڻي مون کي تجسس هو... ان ۾ هڪ ونڊو هئي، پر اها منهنجي پيغامن کي نظرانداز ڪري رهي هئي. مون ٻه ڀيرا چيڪ ڪيو منهنجو ڪوڊ پڪ ڪرڻ لاءِ ته اهو ڪم ڪري ٿو. ان کي ڪيترن ئي ٻين عملن تي آزمايو ۽ اهو تمام سٺو ڪم ڪيو. مون VNC ونڊو ڏانهن ٻيا پيغام موڪلڻ جي ڪوشش ڪئي، ۽ اڃا تائين ڪجھ به نه.

۽ پوءِ وري مون تي اُڀري آئي!

تمام گهڻي ٿلهي جي مهرباني ڪتاب چارلس پيٽزولڊ مون احتياط سان اڀياس ڪيو ته ڪيئن Win32 پروسيس سسٽم اندر ڪم ڪري ٿو. هر Win32 ايپليڪيشن هڪ ونڊو سان گڏ هڪ "پيغام قطار" آهي. پيغامات جيڪي صارف جي رابطي جي ذريعي شروع ڪيا ويا آهن، انهي سان گڏ ونڊوز طرفان موڪليا ويا پيغام، هڪ قطار ۾ اچن ٿا، ۽ ايپليڪيشن پاڻ فيصلو ڪري ٿو ته انهن کي ڪيئن پروسيس ڪيو وڃي.

پاڻ ۾ تمام دلچسپ نه آهي. پر جڏهن مون محسوس ڪيو ته هڪ وڏي ڪافي غير پروسيس ٿيل ميسيج قطار ونڊو پروسيس مئنيجر لاءِ هوريسٽڪ طور ڪم ڪري رهي آهي ته جيئن هڪ هٽي واري عمل ۾ مداخلت ڪري، مون خالص سروٽونين کي پسڻ شروع ڪيو.

هڪ سيڪنڊ ضايع ڪرڻ کان سواء، مان پنهنجي سي ڪوڊ ڏانهن واپس آيو آهيان، هڪ ٻيو پيغام موڪلڻ جي تياري ڪري رهيو آهيان مکيه VNC ونڊو ڏانهن WM_SHOWWINDOW. هڪ چڪر ۾. ابدي. تنهن ڪري، ڪيترائي پيغام. WM_SHOWWINDOW، جنهن کي مان هاڻي ڄاڻان ٿو VNC مڪمل طور تي نظر انداز ڪرڻ جي ڪوشش ڪندو ... ان جي خطري تي.

مون پنهنجي زندگيءَ جو سڀ کان وڌيڪ آزادي پسند ڪوڊ جو 4KB مرتب ڪيو ۽ ڊوڙايو. اٽڪل ٽن سيڪنڊن کان پوء، ونڊوز ٻڌايو ته عمل vncserver.ехе جواب نه ڏنو، ۽ هڪ آڇ ڪئي ته مان صرف انڪار نه ڪري سگهيو:

ڇا توھان ھن عمل کي مڪمل ڪرڻ چاھيو ٿا؟

هيل ها!

مون کي تسليم ڪرڻ ڏيو ته باقي ڏينهن لاء مان ناقابل برداشت طور تي پاڻ سان خوش آهيان.

منهنجي نئين سپر پاور کي هضم ڪرڻ ۾ ڪجهه ڪلاڪن کان پوءِ، مون فيصلو ڪيو ته مان ان کي ڪيئن استعمال ڪندس. هن جي سامهون سيشن کي مارڻ تمام آسان هو. مون کي هڪ بهتر خيال هو - مڪمل طور تي غائب ٿيڻ لاء.

پوء ساکٽ پروگرامنگ سان باهه جو بپتسما مون محسوس ڪيو ته مان ڪوڊ لکي سگهان ٿو جيڪو ٻه شيون ڪندو. اهو پهريون ڀيرو نئين آزاد ٿيل TCP بندرگاهه 5900 تي قبضو ڪندو، اڳي ئي بي خبر VNC سرور جي عمل تي قبضو ڪيو ويو هو. ان کان پوء اهو مخصوص مشين جي VNC سرور سان هڪ نئون TCP ڪنيڪشن ٺاهيندو. ڪوڊ صرف ٻن ساکٽس جي وچ ۾ سڀني ڊيٽا کي پراکسي ڪندو، ۽ ڪولمبو سوچيندو ته هو مون سان ڳنڍي رهيو آهي، جڏهن حقيقت ۾ هو مڪمل طور تي مختلف VNC سرور سان ڳنڍيندو.

منهنجو ڪوڊ منهنجي ۽ منهنجي پسند جي ڪجهه ٻين غريب روح جي وچ ۾ هڪ راز پل جي طور تي ڪم ڪندو. اهو شاندار هو.

مون فوري طور تي منهنجي جعلي VNC پل لکڻ شروع ڪيو. ڪولمبو ڪيترائي ڀيرا مون سان ڳنڍيو، پر مان هن جي سامهون پروگرام ڪندو رهيس. مان ان نتيجي تي پهتو آهيان ته هن کي ڪا به خبر نه هئي ته مان ڇا ڪري رهيو آهيان، جيتوڻيڪ مون واضح شيون لکيون آهن جهڙوڪ پورٽ نمبر ۽ تبصرا جهڙوڪ // Прощай, жуткий шпион VNC.

ڪجھ ڏينھن کان پوءِ مان صحيح ڪم ڪرڻ لاءِ ڪوڊ حاصل نه ڪري سگھيس. معاملن کي وڌيڪ خراب ڪرڻ لاء، مان سسٽم ٽري ۾ ڪارو VNC آئڪن سان لڳ ڀڳ مسلسل ڪم ڪري رهيو هو. جڏهن ته اهو ڳنڍيل هو، مان پنهنجي ڪوڊ کي جانچڻ لاءِ پورٽ کي ڇڏي نه سگهيو.

جيڪڏهن مون کي خبر هجي ها netcat!

آخر ۾، منھنجو اعصاب رستو ڏنو؛ آخرڪار، مان ھڪڙو بي صبري 17 سالن جو ڇوڪرو ھو. سفيد VNC سرور جي آئڪن کي وري ڪاري ٿيندي ڏسي، مان حيران ٿي ويس، اصل ڪوڊ کوليو جيڪو پيغام جي قطار کي آباد ڪيو، ۽ ان کي هن جي اکين جي سامهون ڊوڙايو. مون ڪلڪ ڪرڻ کان پهريان ڪجهه سيڪنڊن جو انتظار ڪيو End Process، صرف پڪ ڪرڻ لاءِ ته هن ڏٺو.

جيڪڏهن ان بٽڻ کي دٻائڻ سان مون کي پوريءَ طرح يقين نه آيو ته اهو ان جي لائق آهي، ته پوءِ هو پنهنجي مانيٽر جي قلعي جي پويان ٽپو ڏئي جلدي مون وٽ پهتو ۽ مون کي ڪمري مان ٻاهر وٺي آيو.

نتيجي طور، مون کي ٻن هفتن لاء نيٽ ورڪ کان منع ڪئي وئي هئي. هڪ منصفانه سزا، مون سوچيو. اٽڪل ٽن هفتن کان پوء، VNC سرور بوٽ اسڪرپٽ مان غائب ٿي ويو ۽ ڪٿي به ظاهر نه ٿيو. مون کي ڪڏهن به خبر نه هئي ته منهنجي واقعي ان ۾ ڪو ڪردار ادا ڪيو آهي يا نه، پر اهو مڪمل طور تي منهنجي منصوبي کي مڪمل طور تي تباهه ڪري ڇڏيو ته منهنجي VNC بندوق سڄي ملڪ ۾ ڪاليج جي ڪمپيوٽر هالن ۾ اداس شاگردن کي وڪرو ڪري شاندار طور تي امير ٿيڻ.

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

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