کوڈر جنگ: میں بمقابلہ وہ VNC گائے

В یہ بلاگ پروگرامر کی کافی کہانیاں شائع ہو چکی ہیں۔ میں اپنی پرانی احمقانہ چیزوں کے بارے میں یاد دلانا پسند کرتا ہوں۔ خیر، یہاں ایک اور ایسی ہی کہانی ہے۔

مجھے پہلی بار کمپیوٹر میں دلچسپی ہوئی، خاص طور پر پروگرامنگ، جب میں 11 سال کا تھا۔ ہائی اسکول کے آغاز میں bоمیں نے اپنا زیادہ تر فارغ وقت اپنے C64 کے ساتھ ٹنکر کرنے اور BASIC لکھنے میں گزارا، پھر قینچی سے خراب کوڈ کو کاٹ دیا۔ میں مذاق نہیں کر رہا ہوں، قینچی.

اسکول کے بعد (16 سال کی عمر کے لگ بھگ)، برطانوی بچے عام طور پر کالج جاتے ہیں، جہاں وہ یونیورسٹی جانے سے پہلے تین یا چار مضامین پڑھنے کا انتخاب کرتے ہیں۔ گھر میں خاکستری باکس اور ٹیپ ریکارڈر سے میری محبت کو دیکھتے ہوئے، میں نے فیصلہ کیا کہ کالج میں "کمپیوٹر سائنس" کا مطالعہ کرنا صحیح انتخاب ہے۔

میں نے اپنی توقع سے زیادہ کورس کا لطف اٹھایا۔ وہاں میری پہلی ملاقات پاسکل اور ڈیلفی سے ہوئی۔

کلاسوں کے درمیان وقفے کے دوران، طلباء کمپیوٹر روم میں کسی بھی مفت مشین پر کام کر سکتے ہیں۔ تصور کریں: ایک بہت بڑا کمرہ، جس میں تقریباً سو لوگوں کے لیے ڈیزائن کیا گیا ہے، جس میں میزوں کی قطاریں مشینوں سے بھری ہوئی ہیں، جیسا کہ سسٹم یونٹ پر مانیٹر کھڑا ہے۔ شائقین مسلسل گنگناتے رہتے ہیں، میزوں پر ماؤس کی گیندیں گونج رہی ہیں، ایک سیکنڈ کے لیے بھی نہیں رک رہی ہیں۔ ہوا میں ایک عجیب بو ہے، جیسے کہ 50-100 ہارمونل نوجوان وقتاً فوقتاً سینکڑوں پینٹیم III چپس کو ٹھنڈا کرنے کے لیے تبدیل کر رہے ہیں۔

صحت کے خطرات کے باوجود، میں نے کمپیوٹر پر بیٹھنا پسند کیا جب میرے پاس مفت منٹ تھا۔

کمرے میں ڈیوٹی پر مامور ایڈمن ایک چھوٹا، ادھیڑ عمر کا آدمی تھا جسے اس کردار کے لیے اس کی ایک شیطانی آمر بننے کی خواہش کی وجہ سے چنا گیا تھا۔ مجھے ایسا لگتا ہے. ڈیوٹی پر ایک چھوٹی سی بات ہے؛ لڑکے کو واقعی اپنی نوکری پسند تھی۔ اسے نظم و ضبط رکھنے کا کام سونپا گیا تھا تاکہ کوئی بھی اسکول کے کمپیوٹر کو کسی نامناسب کام کے لیے استعمال نہ کرے۔

آج تک، میری بصیرت مجھے بتاتی ہے کہ منتظم کا بونس براہ راست ان طلباء کی تعداد پر منحصر ہے جو اس نے ہاتھ سے پکڑ کر کمپیوٹر روم سے باہر نکالے۔ مجھے پورا یقین ہے کہ اس آدمی نے اپنا رہن جلد ادا کر دیا ہے۔

وہ کمپیوٹر روم کے دور کونے میں ایک کونے کی میز پر بیٹھ گیا۔ اور یہ سمجھنا محفوظ تھا کہ اس کے زرخیزی مانیٹروں نے ایک متاثر کن مختصر حمل کی مدت کے ساتھ دوبارہ پیدا کرنے کا ایک طریقہ ڈھونڈ لیا تھا، ان میں سے بہت سارے تھے۔ کوئی صرف یہ سوچ سکتا تھا کہ آیا اس کے پاس واقعی ان سب پر نظر رکھنے کا وقت تھا؟ بالکل، میں مذاق کر رہا ہوں... کیا میں نے ذکر کیا کہ اس نے اپنے کام کو بہت سنجیدگی سے لیا؟

اس وقت، کمپیوٹر نیٹ ورک ونڈوز 2000 چلا رہا تھا۔ میں نے جلد ہی دریافت کیا کہ جب بھی میں نے سسٹم میں لاگ ان کیا، ایک اسکرپٹ لانچ کیا گیا جس میں ڈیسک ٹاپ تک ریموٹ رسائی کے لیے ایڈمنسٹریٹر اکاؤنٹ سے VNC سرور شروع کرنے کی وضاحت کی گئی تھی۔ جب بھی یہ لڑکا آپ کی جاسوسی کرنا چاہتا، وہ براہ راست آپ کی مشین سے جڑ کر دیکھتا۔ یہ عجیب تھا، اور اب جب میں اس کے بارے میں سوچتا ہوں، شاید غیر قانونی۔

BASIC اور C64 پر اپنے دانت کاٹنے کے بعد، میں نے اب C اور یہاں تک کہ تھوڑا سا C++ لکھا ہے۔ اس وقت، میں ابھی بھی ڈی زبان میں بہت دلچسپی رکھتا تھا، جس نے C++ کی کچھ خامیوں کو درست کیا، جیسا کہ میں نے دیکھا۔

میں ڈی پر کچھ نیا پڑھنے یا ڈیجیٹل مارس ڈی کمپائلر کے ساتھ کھیلنے کے لیے کمپیوٹر روم میں جاتا تھا۔ کبھی کبھی، جب میں ڈی کے عظیم مستقبل کے بارے میں سوچنے سے مشغول رہتا تھا، میں نے ان کی کھڑکی سے دوسرے Win32 پروگراموں کو ہیک کرنے کے لیے C کوڈ لکھا تھا۔ ہینڈل

Win32 پروگرامنگ کے اچھے پرانے دنوں میں، ونڈو ہینڈل تلاش کرنا دوسرے پروگراموں کو ہیک کرنے کا سب سے آسان طریقہ تھا۔ ظاہر ہے، ونڈوز پر تمام GUI پروگراموں میں ایک ونڈو ہوتی ہے، چاہے وہ اسکرین پر ظاہر نہ ہو۔ کسی دوسرے عمل کے ہینڈل کو بازیافت کرنے کے لیے ایک پروگرام لکھ کر (بنیادی طور پر اس کا لنک)، آپ اسے پیغامات بھیج سکتے ہیں۔ اس سے کچھ بنیادی کارروائیوں کی اجازت ملتی ہے جیسے پروگرام ونڈو کو چھپانا/دکھانا، نیز واقعی ٹھنڈی چیزیں جیسے کسی عمل کو اس کی میموری اسپیس میں صوابدیدی DLL لوڈ کرنے اور کوڈ پر عمل درآمد شروع کرنے پر مجبور کرنا۔ ڈی ایل ایل انجکشن کے بعد، مزہ شروع ہوا.

پہلے ڈیڑھ مہینے میں، اس جاسوس نے مجھے زیادہ پریشان نہیں کیا؛ یہ صرف ایک یا دو بار میری مشین پر VNC سرور سے منسلک ہوا۔ لیکن ایک خاص سیشن نے اس کی دلچسپی کو بڑھاوا دیا ہو گا۔ میں مائن سویپر ونڈوز کو چھپانے کے لیے کچھ C کوڈ لکھ رہا تھا (ان کو بند کیے بغیر) تاکہ کلاس میں کھیلنا آسان ہو، جب میں نے دیکھا کہ سسٹم ٹرے میں سفید VNC کا آئیکن سیاہ ہو گیا ہے۔ اس کا مطلب تھا کہ وہ اب مجھے دیکھ رہا تھا۔

میں نے ہمیشہ کی طرح کوڈنگ جاری رکھی، اسے نظر انداز کرنے کی کوشش کی۔ دریں اثنا، مشین سست ہونے لگی، زیادہ سے زیادہ فریم ریٹ کو کمرے کے کونے میں موجود ان گنت مانیٹروں میں سے ایک تک پہنچانے کی کوشش کر رہی تھی۔ ونڈوز نے تقریباً جواب دینا بند کر دیا، جب میرے صبر کا پیمانہ لبریز ہو گیا، میں نے لاگ آؤٹ کر کے دن کو ختم کر دیا۔

کمپیوٹر روم کے بعد کے دوروں پر، کولمبو نے اس میں گہری دلچسپی لی جو میں تقریباً ہر بار کر رہا تھا۔ چوتھی بار کے بعد، میں نے فیصلہ کیا: مجھے اس کے بارے میں کچھ کرنے کی ضرورت ہے۔

میں تسلیم کرتا ہوں کہ ایک معقول، عقلی شخص اس مسئلے کو براہ راست اپنے یا اس کے باس کے ساتھ اٹھا سکتا تھا۔ تاہم، میں نے ہمیشہ لالچ کا سامنا کیا اور جلدی سے اپنے آپ سے بالکل مختلف حکمت عملی اپنانے کی بات کی۔

- آپ اس VNC سرور کے بغیر کچھ نہیں کر سکتے! - میں نے سکون سے اور فیصلہ کن طور پر خود کو کئی بار بتایا۔

VNC کو مارنا ضروری تھا۔

میں نے طلباء کے بڑے گروپوں کے ساتھ کمپیوٹر روم میں جانا شروع کر دیا اور کونے سے جہاں تک ممکن ہو سکے کے ساتھ بیٹھنا شروع کیا۔ اس نے تھوڑی دیر کے لیے کام کیا اور مجھے خیالات کی جانچ کرنے کے لیے کچھ وقت دیا۔

میری پہلی کوشش، مجھے لگتا ہے کہ آپ اتفاق کریں گے، کافی کمزور تھی۔ سسٹم ٹرے میں VNC آئیکون پر دائیں کلک کرنے سے، میں نے ایک مینو دیکھا جس میں جادوئی حروف EXIT تھے۔ بدقسمتی سے، حروف خاکستری متن میں لکھے گئے تھے۔ منتظم نے گروپ پالیسی ایڈیٹر کے ذریعے "Exit" مینو آئٹم کو غیر فعال کر دیا ہے۔ میں نے ٹاسک مینیجر سے اس عمل کو ختم کرنے کی کوشش کی، لیکن یقیناً یہ میرے لیے پوشیدہ تھا کیونکہ یہ ایک مختلف، زیادہ مراعات یافتہ اکاؤنٹ کے تحت چل رہا تھا۔ یہ کام نہیں کیا.

VNC سرور TCP پورٹ 5900 پر چلتا ہے، مجھے یاد آیا۔ میرا اگلا منصوبہ اس بندرگاہ پر خراب پیکٹ بھیجنا تھا تاکہ اسے کریش کیا جا سکے۔

میں نے کم از کم کچھ دن پروٹوکول کے ساتھ چھیڑ چھاڑ کرتے ہوئے گزارے، پورٹ 5900 پر مختلف قسم کی اچھی طرح سے ساختہ کریپ بھیجے اور امید کی کہ یہ ٹوٹ جائے گا۔ آخر میں، یہ بھی کام نہیں کیا.

میں نے پہلے ہی سوچنا شروع کر دیا تھا کہ میں اس چیز سے چھٹکارا نہیں پا سکوں گا، جب یہ اچانک مجھ پر آ گئی: وہاں ایک کھڑکی ضرور ہونی چاہیے! ہمیں اسے ظاہر کرنے کی ضرورت ہے۔ ہوسکتا ہے کہ اس میں ایک اچھا رسیلی "خاموش" بٹن ہو جسے میں اچھے استعمال میں لا سکتا ہوں!

میں نے ایک اور عمل کی مرکزی ونڈو پر ہینڈل تلاش کرنے کے لیے اپنا اب تقریباً کامل C کوڈ چلایا - اور یقینی طور پر، VNC مل گیا۔ جب میری انگلیوں نے ٹائپ کیا تو مجھے حوصلہ ملا WM_SHOWWINDOW. اندازہ لگانے کی کوشش کریں کہ میں نے اپنے سامنے کیا دیکھا؟

کچھ نہیں!

اب میں متجسس تھا... اس میں ایک کھڑکی تھی، لیکن وہ میرے پیغامات کو نظر انداز کر رہی تھی۔ میں نے اپنے کوڈ کو دو بار چیک کیا تاکہ یہ یقینی بنایا جا سکے کہ یہ کام کرتا ہے۔ اسے کئی دیگر عملوں پر آزمایا اور اس نے بہت اچھا کام کیا۔ میں نے VNC ونڈو پر دوسرے پیغامات بھیجنے کی کوشش کی، اور پھر بھی کچھ نہیں۔

اور پھر یہ مجھ پر دوبارہ طلوع ہوا!

بہت موٹی کا شکریہ کتاب چارلس پیٹزولڈ میں نے بغور مطالعہ کیا کہ سسٹم کے اندر Win32 کے عمل کیسے کام کرتے ہیں۔ ہر Win32 ایپلی کیشن میں ایک ونڈو کے ساتھ ساتھ "پیغام کی قطار" بھی ہوتی ہے۔ صارف کے تعامل سے شروع ہونے والے پیغامات، نیز خود ونڈوز کے ذریعے بھیجے گئے پیغامات، ایک قطار میں آتے ہیں، اور ایپلیکیشن خود فیصلہ کرتی ہے کہ ان پر کیسے عمل کیا جائے۔

اپنے آپ میں بہت دلچسپ نہیں ہے۔ لیکن جب میں نے محسوس کیا کہ ونڈو پروسیس مینیجر کے لیے ایک بڑی حد تک غیر پروسیس شدہ میسج کی قطار ایک ہنگ پروسیس میں مداخلت کرنے کے لیے ایک ہیورسٹک کے طور پر کام کرتی ہے، تو میں نے خالص سیروٹونن کو پسینہ کرنا شروع کر دیا۔

ایک سیکنڈ ضائع کیے بغیر، میں اپنے C کوڈ پر واپس آ گیا، مین 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

نیا تبصرہ شامل کریں