కోడర్ యుద్ధం: నేను వర్సెస్ దట్ VNC గై

В ఈ బ్లాగ్ చాలా కొన్ని ప్రోగ్రామర్ కథలు ప్రచురించబడ్డాయి. నా పాత తెలివితక్కువ విషయాలను గుర్తుచేసుకోవడం నాకు ఇష్టం. సరే, ఇక్కడ మరొక కథ ఉంది.

నాకు 11 ఏళ్ల వయసులో కంప్యూటర్‌లపై, ముఖ్యంగా ప్రోగ్రామింగ్‌పై ఆసక్తి ఏర్పడింది. ఉన్నత పాఠశాల ప్రారంభంలో బిоనేను చాలా ఖాళీ సమయాన్ని నా C64తో టింకర్ చేస్తూ మరియు బేసిక్ వ్రాస్తూ గడిపాను, ఆపై కత్తెరతో చెడు కోడ్‌ను కత్తిరించాను. నేను తమాషా చేయడం లేదు, కత్తెర.

పాఠశాల తర్వాత (సుమారు 16 సంవత్సరాల వయస్సులో), బ్రిటీష్ పిల్లలు సాధారణంగా కళాశాలకు వెళతారు, అక్కడ వారు విశ్వవిద్యాలయానికి వెళ్లే ముందు మూడు లేదా నాలుగు విషయాలను అధ్యయనం చేయడానికి ఎంచుకుంటారు. ఇంట్లో లేత గోధుమరంగు బాక్స్ మరియు టేప్ రికార్డర్ పట్ల నాకున్న ప్రేమ కారణంగా, కాలేజీలో “కంప్యూటర్ సైన్స్” చదవడం సరైన ఎంపిక అని నేను నిర్ణయించుకున్నాను.

నేను ఊహించిన దాని కంటే ఎక్కువ కోర్సును ఆస్వాదించాను; అక్కడ నేను మొదట పాస్కల్ మరియు డెల్ఫీని కలిశాను.

తరగతుల మధ్య విరామ సమయంలో, విద్యార్థులు కంప్యూటర్ గదిలో ఏదైనా ఉచిత యంత్రంపై పని చేయవచ్చు. ఇమాజిన్: ఒక భారీ గది, సుమారు వంద మంది వ్యక్తుల కోసం రూపొందించబడింది, మానిటర్ సిస్టమ్ యూనిట్‌లో ఉన్నటువంటి మెషీన్లతో నిండిన పట్టికల వరుసలతో ఉంటుంది. అభిమానులు నిరంతరం హమ్ చేస్తున్నారు, మౌస్ బాల్స్ టేబుల్స్‌పై సందడి చేస్తున్నాయి, ఒక్క క్షణం కూడా ఆగవు. 50-100 మంది హార్మోన్ల టీనేజర్లు క్రమానుగతంగా వందలాది పెంటియమ్ III చిప్‌లను చల్లబరచడానికి మారుతున్నట్లుగా గాలిలో వింత వాసన ఉంది.

ఆరోగ్య ప్రమాదాలు ఉన్నప్పటికీ, నాకు ఖాళీ నిమిషం ఉన్నప్పుడు కంప్యూటర్ వద్ద కూర్చోవడానికి నేను ఇష్టపడ్డాను.

గదిలో డ్యూటీలో ఉన్న అడ్మిన్ ఒక పొట్టి, మధ్య వయస్కుడైన వ్యక్తి, దుష్ట నియంతగా మారాలనే అతని తృప్తిలేని కోరిక కారణంగా ఈ పాత్రకు ఎంపికయ్యాడు. నేను అలా అనుకుంటాను. డ్యూటీ అనేది తక్కువ అంచనా; వ్యక్తి తన ఉద్యోగాన్ని నిజంగా ఇష్టపడ్డాడు. పాఠశాల కంప్యూటర్‌ను ఎవరూ తగని పనికి ఉపయోగించకుండా ఆర్డర్‌ను ఉంచే బాధ్యత అతనికి అప్పగించబడింది.

ఈ రోజు వరకు, అడ్మిన్ యొక్క బోనస్ నేరుగా అతను చేతితో పట్టుకుని కంప్యూటర్ గది నుండి బయటకు వెళ్ళిన విద్యార్థుల సంఖ్యపై ఆధారపడి ఉంటుందని నా అంతర్ దృష్టి నాకు చెబుతోంది. ఈ వ్యక్తి తన తనఖాని ముందుగానే చెల్లించాడని నాకు ఖచ్చితంగా తెలుసు.

అతను కంప్యూటర్ గదికి చాలా మూలలో ఒక మూల టేబుల్ వద్ద కూర్చున్నాడు. మరియు అతని సంతానోత్పత్తి మానిటర్లు చాలా తక్కువ గర్భధారణ కాలంతో పునరుత్పత్తి చేయడానికి ఒక మార్గాన్ని కనుగొన్నాయని భావించడం సురక్షితం, వాటిలో చాలా ఉన్నాయి. వాటన్నింటిని ట్రాక్ చేయడానికి అతనికి నిజంగా సమయం ఉందా అని ఎవరైనా ఆశ్చర్యపోవచ్చు. అయితే, నేను తమాషా చేస్తున్నాను ... అతను తన పనిని చాలా సీరియస్‌గా తీసుకున్నాడని నేను చెప్పాను?

ఆ సమయంలో, కంప్యూటర్ నెట్‌వర్క్ విండోస్ 2000ని అమలు చేస్తోంది. నేను సిస్టమ్‌లోకి లాగిన్ చేసిన ప్రతిసారీ, డెస్క్‌టాప్‌కు రిమోట్ యాక్సెస్ కోసం అడ్మినిస్ట్రేటర్ ఖాతా నుండి VNC సర్వర్‌ను ప్రారంభించడాన్ని పేర్కొనే స్క్రిప్ట్ ప్రారంభించబడిందని నేను వెంటనే కనుగొన్నాను. ఈ వ్యక్తి మీపై గూఢచర్యం చేయాలనుకున్నప్పుడు, అతను నేరుగా మీ మెషీన్‌కి కనెక్ట్ అయ్యి చూసేవాడు. ఇది గగుర్పాటుగా ఉంది మరియు ఇప్పుడు నేను దాని గురించి ఆలోచిస్తున్నాను, బహుశా చట్టవిరుద్ధం.

బేసిక్ మరియు సి 64లో నా దంతాలను కత్తిరించిన తరువాత, నేను ఇప్పుడు సి మరియు కొంచెం సి ++లో రాశాను. ఆ సమయంలో, నేను C++ లో ఉన్న కొన్ని లోటుపాట్లను సరిదిద్దే D భాషపై నాకు ఇంకా చాలా ఆసక్తి ఉంది.

నేను డిలో ఏదైనా కొత్తది చదవడానికి లేదా డిజిటల్ మార్స్ డి కంపైలర్‌తో ఆడుకోవడానికి కంప్యూటర్ రూమ్‌లోకి వెళ్లేవాడిని. కొన్నిసార్లు, నేను డి గొప్ప భవిష్యత్తు గురించి ఆలోచించకుండా పరధ్యానంలో ఉన్నప్పుడు, ఇతర Win32 ప్రోగ్రామ్‌లను వాటి విండో ద్వారా హ్యాక్ చేయడానికి సి కోడ్ రాశాను. నిర్వహిస్తుంది.

Win32 ప్రోగ్రామింగ్ యొక్క పాత రోజుల్లో, ఇతర ప్రోగ్రామ్‌లను హ్యాక్ చేయడానికి విండో హ్యాండిల్‌ను కనుగొనడం సులభమైన పద్ధతి. సహజంగానే, విండోస్‌లోని అన్ని GUI ప్రోగ్రామ్‌లు స్క్రీన్‌పై కనిపించకపోయినా విండోను కలిగి ఉంటాయి. మరొక ప్రక్రియకు (ముఖ్యంగా దానికి లింక్) హ్యాండిల్‌ను తిరిగి పొందడానికి ప్రోగ్రామ్‌ను వ్రాయడం ద్వారా మీరు దానికి సందేశాలను పంపవచ్చు. ఇది ప్రోగ్రామ్ విండోను దాచడం/చూపడం వంటి కొన్ని ప్రాథమిక కార్యకలాపాలకు అనుమతించింది, అలాగే ఒక ప్రక్రియను ఏకపక్ష DLLని దాని మెమరీ స్పేస్‌లోకి లోడ్ చేయడానికి మరియు కోడ్‌ని అమలు చేయడం ప్రారంభించేలా ఒత్తిడి చేయడం వంటి మంచి విషయాలు. DLL ఇంజెక్షన్ తర్వాత, వినోదం ప్రారంభమైంది.

మొదటి నెలన్నరలో, ఈ డిటెక్టివ్ నన్ను పెద్దగా ఇబ్బంది పెట్టలేదు; ఇది నా మెషీన్‌లోని VNC సర్వర్‌కి ఒకటి లేదా రెండుసార్లు మాత్రమే కనెక్ట్ చేయబడింది. కానీ ఒక ప్రత్యేక సెషన్ అతని ఆసక్తిని రేకెత్తించి ఉండవచ్చు. క్లాస్‌లో ప్లే చేయడం సులభతరం చేయడానికి మైన్స్‌వీపర్ విండోలను (వాటిని మూసివేయకుండా) దాచడానికి నేను కొన్ని C కోడ్‌ను వ్రాస్తున్నాను, సిస్టమ్ ట్రేలోని తెలుపు VNC చిహ్నం నల్లగా మారిందని నేను గమనించాను. అతను ఇప్పుడు నన్ను చూస్తున్నాడని దీని అర్థం.

నేను అతనిని పట్టించుకోకుండా ఎప్పటిలాగే కోడింగ్ కొనసాగించాను. ఇంతలో, యంత్రం వేగాన్ని తగ్గించడం ప్రారంభించింది, గరిష్ట ఫ్రేమ్ రేట్‌ను గది మూలలో ఉన్న లెక్కలేనన్ని మానిటర్‌లలో ఒకదానికి ప్రసారం చేయడానికి ప్రయత్నిస్తుంది. Windows దాదాపుగా ప్రతిస్పందించడం ఆగిపోయింది, నా సహనం నశించినప్పుడు, నేను లాగ్ అవుట్ చేసి ఆ రోజు పూర్తి చేసాను.

కంప్యూటర్ గదికి తదుపరి సందర్శనల సమయంలో, కొలంబో దాదాపు ప్రతిసారీ నేను ఏమి చేస్తున్నానో దాని పట్ల చాలా ఆసక్తిని కనబరిచింది. నాల్గవసారి తర్వాత, నేను నిర్ణయించుకున్నాను: నేను దీని గురించి ఏదైనా చేయాలి.

సహేతుకమైన, హేతుబద్ధమైన వ్యక్తి ఈ సమస్యను నేరుగా అతనితో లేదా అతని యజమానితో లేవనెత్తవచ్చని నేను అంగీకరిస్తున్నాను. అయినప్పటికీ, నేను ఎల్లప్పుడూ టెంప్టేషన్‌కు లొంగిపోయాను మరియు పూర్తిగా భిన్నమైన వ్యూహాన్ని అనుసరించేలా త్వరగా మాట్లాడాను.

- ఈ VNC సర్వర్ లేకుండా మీరు ఏమీ చేయలేరు! - నేను చాలాసార్లు ప్రశాంతంగా మరియు నిర్ణయాత్మకంగా చెప్పాను.

VNCని చంపడం అవసరం.

నేను పెద్ద పెద్ద విద్యార్థులతో కంప్యూటర్ గదిలోకి వెళ్లడం ప్రారంభించాను మరియు మానిటర్లతో వీలైనంత దూరంగా కూర్చోవడం ప్రారంభించాను. ఇది కొంతకాలం పనిచేసింది మరియు ఆలోచనలను పరీక్షించడానికి నాకు కొంత సమయం ఇచ్చింది.

నా మొదటి ప్రయత్నం, మీరు అంగీకరిస్తారని నేను భావిస్తున్నాను, చాలా బలహీనంగా ఉంది. సిస్టమ్ ట్రేలోని VNC చిహ్నంపై కుడి-క్లిక్ చేస్తే, నేను EXIT అనే మ్యాజిక్ అక్షరాలతో కూడిన మెనుని చూశాను. దురదృష్టవశాత్తు, అక్షరాలు బూడిద రంగు అవుట్‌లైన్ వచనంలో వ్రాయబడ్డాయి. నిర్వాహకుడు గ్రూప్ పాలసీ ఎడిటర్ ద్వారా "నిష్క్రమించు" మెను ఐటెమ్‌ను నిలిపివేసారు. నేను టాస్క్ మేనేజర్ నుండి ప్రాసెస్‌ని చంపడానికి ప్రయత్నించాను, అయితే అది వేరే, మరింత ప్రత్యేక ఖాతాలో నడుస్తున్నందున అది నాకు కనిపించదు. అది ఫలించలేదు.

VNC సర్వర్ TCP పోర్ట్ 5900లో నడుస్తుంది, నాకు గుర్తుంది. ఈ పోర్ట్‌ను క్రాష్ చేయడానికి పాడైన ప్యాకెట్‌లను పంపడం నా తదుపరి ప్రణాళిక.

నేను ప్రోటోకాల్‌తో టింకర్‌ చేస్తూ కనీసం కొన్ని రోజులు గడిపాను, పోర్ట్ 5900కి వివిధ రకాల మంచి నిర్మాణాత్మక చెత్తను పంపాను మరియు అది విచ్ఛిన్నమవుతుందని ఆశిస్తున్నాను. చివరికి అది కూడా ఫలించలేదు.

నేను ఈ విషయాన్ని వదిలించుకోలేనని నేను ఇప్పటికే ఆలోచించడం ప్రారంభించాను, అది అకస్మాత్తుగా నాపైకి వచ్చినప్పుడు: అక్కడ ఒక కిటికీ ఉండాలి! మనం దానిని ప్రదర్శించాలి. బహుశా ఇది మంచి జ్యుసి "మ్యూట్" బటన్‌ను కలిగి ఉండవచ్చు, నేను గొప్పగా ఉపయోగించగలను!

నేను హ్యాండిల్‌ను మరొక ప్రక్రియ యొక్క ప్రధాన విండోకు కనుగొనడానికి నా ఇప్పుడు దాదాపు ఖచ్చితమైన C కోడ్‌ని అమలు చేసాను - మరియు ఖచ్చితంగా, VNC కనుగొనబడింది. నా వేళ్లు టైప్ చేసినప్పుడు నేను ప్రేరణ పొందాను WM_SHOWWINDOW. నేను నా ముందు ఏమి చూసానో ఊహించడానికి ప్రయత్నించాలా?

ఏమిలేదు!

ఇప్పుడు నేను ఆసక్తిగా ఉన్నాను... దానికి విండో ఉంది, కానీ అది నా సందేశాలను విస్మరిస్తోంది. నా కోడ్ పని చేస్తుందని నిర్ధారించుకోవడానికి నేను ఒకటికి రెండుసార్లు తనిఖీ చేసాను. అనేక ఇతర ప్రక్రియలలో దీనిని పరీక్షించారు మరియు ఇది గొప్పగా పనిచేసింది. నేను VNC విండోకు ఇతర సందేశాలను పంపడానికి ప్రయత్నించాను, ఇంకా ఏమీ లేదు.

ఆపై నాకు మళ్ళీ అర్థమైంది!

చాలా మందపాటి ధన్యవాదాలు పుస్తకం చార్లెస్ పెట్జోల్డ్ నేను సిస్టమ్ లోపల Win32 ప్రక్రియలు ఎలా పనిచేస్తాయో జాగ్రత్తగా అధ్యయనం చేసాను. ప్రతి Win32 అప్లికేషన్‌లో ఒక విండో అలాగే "మెసేజ్ క్యూ" ఉంటుంది. వినియోగదారు పరస్పర చర్య ద్వారా ప్రేరేపించబడిన సందేశాలు, అలాగే Windows ద్వారా పంపబడిన సందేశాలు క్యూలో వస్తాయి మరియు వాటిని ఎలా ప్రాసెస్ చేయాలో అప్లికేషన్ స్వయంగా నిర్ణయిస్తుంది.

స్వయంగా చాలా ఆసక్తికరంగా లేదు. కానీ, తగినంత పెద్ద ప్రాసెస్ చేయని మెసేజ్ క్యూ విండో ప్రాసెస్ మేనేజర్‌కి హంగ్ ప్రాసెస్‌లో జోక్యం చేసుకోవడానికి హ్యూరిస్టిక్‌గా పని చేస్తుందని నేను గ్రహించినప్పుడు, నేను స్వచ్ఛమైన సెరోటోనిన్‌ను చెమట పట్టడం ప్రారంభించాను.

ఒక సెకను వృధా చేయకుండా, నేను నా C కోడ్‌కి తిరిగి వచ్చాను, ప్రధాన VNC విండోకు మరొక సందేశాన్ని పంపడానికి సిద్ధమయ్యాను WM_SHOWWINDOW. ఒక చక్రంలో. శాశ్వతమైన. కాబట్టి, చాలా సందేశాలు. WM_SHOWWINDOW, VNC పూర్తిగా విస్మరించడానికి ప్రయత్నిస్తుందని నాకు ఇప్పుడు తెలుసు... దాని ప్రమాదంలో.

నేను నా జీవితంలో అత్యంత స్వేచ్ఛను ప్రేమించే కోడ్‌ని 4KB సంకలనం చేసి అమలు చేసాను. సుమారు మూడు సెకన్ల తర్వాత, విండోస్ ప్రక్రియను నివేదించింది vncserver.ехе సమాధానం ఇవ్వలేదు మరియు నేను తిరస్కరించలేని ఆఫర్‌ను ఇచ్చాను:

మీరు ఈ ప్రక్రియను పూర్తి చేయాలనుకుంటున్నారా?

హెల్ అవును!

మిగిలిన రోజంతా నేను భరించలేనంత సంతోషించాను అని ఒప్పుకుంటాను.

నా కొత్త సూపర్ పవర్‌ని జీర్ణించుకున్న కొన్ని గంటల తర్వాత, నేను దానిని ఎలా ఉపయోగించాలో నిర్ణయించుకున్నాను. అతని ముందు సెషన్‌ను చంపడం చాలా సులభం. నాకు మంచి ఆలోచన వచ్చింది - పూర్తిగా అదృశ్యం.

తరువాత సాకెట్ ప్రోగ్రామింగ్‌తో అగ్ని బాప్టిజం నేను రెండు పనులు చేసే కోడ్ రాయగలనని గ్రహించాను. ఇది ముందుగా క్లూలెస్ VNC సర్వర్ ప్రక్రియచే ఆక్రమించబడిన, కొత్తగా విడుదల చేయబడిన TCP పోర్ట్ 5900ని ఆక్రమిస్తుంది. అప్పుడు అది పేర్కొన్న మెషీన్ యొక్క VNC సర్వర్‌కు కొత్త TCP కనెక్షన్‌ని సృష్టిస్తుంది. కోడ్ రెండు సాకెట్ల మధ్య ఉన్న మొత్తం డేటాను ప్రాక్సీ చేస్తుంది మరియు కొలంబో అతను నాకు కనెక్ట్ చేస్తున్నాడని అనుకుంటాడు, వాస్తవానికి అతను పూర్తిగా భిన్నమైన VNC సర్వర్‌కి కనెక్ట్ అవుతాడు.

నా కోడ్ నాకు మరియు నేను ఎంచుకున్న ఇతర పేద ఆత్మకు మధ్య రహస్య వంతెనలా పని చేస్తుంది. ఇది చాలా అద్భుతమైనది.

నేను వెంటనే నా నకిలీ VNC వంతెన రాయడం ప్రారంభించాను. కొలంబో నాతో చాలాసార్లు కనెక్ట్ అయ్యాను, కానీ నేను అతని ముందు ప్రోగ్రామ్ చేయడం కొనసాగించాను. నేను పోర్ట్ నంబర్లు మరియు వ్యాఖ్యలు వంటి స్పష్టమైన విషయాలు వ్రాసినప్పటికీ, నేను ఏమి చేస్తున్నానో అతనికి తెలియదని నేను నిర్ధారణకు వచ్చాను // Прощай, жуткий шпион VNC.

రెండు రోజుల తర్వాత నేను కోడ్ సరిగ్గా పని చేయలేకపోయాను. విషయాలను మరింత దిగజార్చడానికి, నేను సిస్టమ్ ట్రేలోని నలుపు VNC చిహ్నంతో దాదాపు నిరంతరం పని చేస్తున్నాను. ఇది కనెక్ట్ చేయబడినప్పుడు, నా కోడ్‌ని పరీక్షించడానికి నేను పోర్ట్‌ను విడుదల చేయలేకపోయాను.

నాకు అప్పుడు తెలిసి ఉంటే netcat!

చివరికి, నా నరాలు దారితీశాయి; అన్నింటికంటే, నేను 17 ఏళ్ల అసహనపు వ్యక్తిని. తెల్లటి VNC సర్వర్ ఐకాన్ మళ్లీ నల్లగా మారడం చూసి, నేను ఆశ్చర్యపోయాను, మెసేజ్ క్యూలో ఉన్న ఒరిజినల్ కోడ్‌ని తెరిచి అతని కళ్ల ముందు రన్ చేసాను. నేను క్లిక్ చేయడానికి ముందు కొన్ని సెకన్లు వేచి ఉన్నాను End Process, అతను చూశానని నిర్ధారించుకోవడానికి.

ఆ బటన్‌ని నొక్కడం వల్ల అది విలువైనదని నన్ను పూర్తిగా ఒప్పించకపోతే, అతను తన మానిటర్‌ల కోట వెనుక నుండి త్వరగా నా దగ్గరికి వచ్చి నన్ను గది నుండి బయటకు పంపించాడు.

ఫలితంగా, నేను రెండు వారాల పాటు నెట్‌వర్క్ నుండి నిషేధించబడ్డాను. న్యాయమైన శిక్ష, నేను అనుకున్నాను. దాదాపు మూడు వారాల తర్వాత, VNC సర్వర్ బూట్ స్క్రిప్ట్‌ల నుండి అదృశ్యమైంది మరియు మరెక్కడా కనిపించలేదు. ఇందులో నా సంఘటన ఏదైనా పాత్ర పోషించిందో లేదో నాకు ఎప్పటికీ తెలియదు, కానీ నా VNC తుపాకీని దేశవ్యాప్తంగా కళాశాల కంప్యూటర్ హాళ్లలో అణగారిన విద్యార్థులకు విక్రయించడం ద్వారా అద్భుతంగా ధనవంతులు కావాలనే నా ప్రణాళికను పూర్తిగా నాశనం చేసింది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి