කෝඩර් සටන: මම එදිරිව එම VNC ගයි

В මෙම බ්ලොග් ක්‍රමලේඛක කතා කිහිපයක් ප්‍රකාශයට පත් කර ඇත. මගේ පරණ මෝඩ දේවල් මතක් කරන්න මම කැමතියි. හොඳයි, මෙන්න තවත් එවැනි කතාවක්.

මම මුලින්ම පරිගණක ගැන උනන්දු වුණේ, විශේෂයෙන්ම වැඩසටහන්කරණය, මට වයස අවුරුදු 11දී විතර. උසස් පාසල ආරම්භයේදී බීоමම මගේ නිදහස් කාලයෙන් වැඩි කාලයක් ගත කළේ මගේ C64 සමඟ ටින්කර් කරමින් සහ BASIC ලිවීමට, පසුව නරක කේතය කතුරෙන් කපා හැරීමටය. මම විහිළු කරන්නේ නැහැ, කතුර.

පාසලෙන් පසු (වයස අවුරුදු 16 පමණ) බ්‍රිතාන්‍ය දරුවන් සාමාන්‍යයෙන් විද්‍යාලයට යන අතර එහිදී ඔවුන් විශ්ව විද්‍යාලයට යාමට පෙර විෂයයන් තුනක් හෝ හතරක් ඉගෙනීමට තෝරා ගනී. නිවසේදී බේජ් පෙට්ටියට සහ ටේප් රෙකෝඩරයට මගේ ආදරය නිසා, විද්‍යාලයේ “පරිගණක විද්‍යාව” ඉගෙනීම නිවැරදි තේරීම බව මම තීරණය කළෙමි.

මම බලාපොරොත්තු වූවාට වඩා පාඨමාලාවෙන් සතුටක් ලැබුවා; එහිදී මට මුලින්ම පැස්කල් සහ ඩෙල්ෆි හමු විය.

පන්ති අතර විවේක කාලය තුළ සිසුන්ට පරිගණක කාමරයේ ඕනෑම නොමිලේ යන්ත්‍රයක් මත වැඩ කළ හැකිය. සිතන්න: මිනිසුන් සියයක් පමණ සඳහා නිර්මාණය කර ඇති විශාල කාමරයක්, පද්ධති ඒකකයේ මොනිටරය පිහිටා ඇති ආකාරයට යන්ත්‍ර වලින් පුරවා ඇති මේස පේළි ඇත. රසිකයින් නිරන්තරයෙන් මුමුණයි, මවුස් බෝල මේස මත ඝෝෂා කරයි, තත්පරයක්වත් නතර නොවේ. පෙන්ටියම් III චිප්ස් සිය ගණනක් සිසිල් කිරීම සඳහා හෝමෝන යෞවනයන් 50-100 ක් වරින් වර වෙනස් වන පරිදි වාතයේ අමුතු සුවඳක් ඇත.

සෞඛ්‍ය අවදානම් තිබියදීත්, මට නිදහස් මිනිත්තුවක් ඇති විට පරිගණකයේ වාඩි වීමට මම කැමතියි.

කාමරයේ රාජකාරියේ යෙදී සිටි ඇඩ්මින්වරයා දුෂ්ට ඒකාධිපතියෙකු වීමට ඇති අසීමිත ආශාව නිසා මෙම භූමිකාව සඳහා තෝරාගෙන ඇත්තේ මිටි, මැදි වියේ පුද්ගලයෙකි. මම එහෙම හිතනවා. රාජකාරිය යනු අවතක්සේරු කිරීමකි; මිනිහා ඔහුගේ රැකියාවට සැබවින්ම ආදරය කළේය. කිසිවකු පාසලේ පරිගණකය නුසුදුසු දෙයකට භාවිත නොකරන ලෙස පිළිවෙළක් තැබීම ඔහුට පැවරී තිබිණි.

අද දක්වාම, මගේ බුද්ධිය මට පවසන්නේ පරිපාලකගේ ප්‍රසාද දීමනාව කෙලින්ම රඳා පවතින්නේ ඔහු අතින් අල්ලාගෙන පරිගණක කාමරයෙන් පිටතට ගෙන යන සිසුන් සංඛ්‍යාව මත බවයි. මට හොඳටම විශ්වාසයි මේ මිනිහා එයාගේ උකස කලින් ගෙව්වා කියලා.

ඔහු කොම්පියුටර් කාමරයේ ඈත කෙළවරේ කෙළවරක මේසයක වාඩි විය. ඔහුගේ සශ්‍රීකත්ව නිරීක්ෂකයින් ඉතා කෙටි ගර්භණී කාලයක් සමඟ ප්‍රජනනය කිරීමට ක්‍රමයක් සොයාගෙන ඇති බව උපකල්පනය කිරීම ආරක්ෂිත විය, ඒවායින් බොහොමයක් තිබේ. ඒ සියල්ල ගැන සොයා බැලීමට ඔහුට ඇත්තටම කාලය තිබේදැයි කෙනෙකුට සිතිය හැකිය. හැබයි මම විහිලුවක් කරන්නේ... මම කිව්වද එයා එයාගේ වැඩේ ගොඩක් බැරෑරුම් විදියට ගත්තා කියලා?

ඒ වන විට පරිගණක ජාලය ක්‍රියාත්මක වූයේ Windows 2000. මම පද්ධතියට ලොග් වූ සෑම අවස්ථාවකම, ඩෙස්ක්ටොප් එකට දුරස්ථ ප්‍රවේශය සඳහා පරිපාලක ගිණුමෙන් VNC සේවාදායකය ආරම්භ කරන ලෙස සඳහන් කරන ලද ස්ක්‍රිප්ට් එකක් දියත් කරන බව මම ඉක්මනින්ම සොයා ගත්තෙමි. මෙම පුද්ගලයාට ඔබ ගැන ඔත්තු බැලීමට අවශ්‍ය වූ විට, ඔහු කෙලින්ම ඔබේ යන්ත්‍රයට සම්බන්ධ වී බලා සිටියේය. එය භයානක විය, දැන් මම ඒ ගැන සිතන විට, බොහෝ විට නීති විරෝධී විය හැකිය.

BASIC සහ C64 වල දත් කපපු මම දැන් C සහ C++ ටිකක් ලිව්වා. C++ හි යම් යම් අඩුපාඩු නිවැරදි කරන D language එක ගැන මම ඒ වන විටත් දැඩි උනන්දුවකින් පසුවුවෙමි.

D වල අලුත් දෙයක් කියවන්න හෝ Digital Mars D compiler එකෙන් සෙල්ලම් කරන්න මම පරිඝනක කාමරයට ගියා.සමහර වෙලාවට D වල සුපිරි අනාගතය ගැන හිත හිත ඉන්නකොට මම C code ලිව්වා අනිත් Win32 programme හැක් කරන්න. හසුරුවයි.

Win32 ක්‍රමලේඛනයේ හොඳ පැරණි දිනවල, වෙනත් වැඩසටහන් හැක් කිරීමට පහසුම ක්‍රමය වූයේ කවුළු හසුරුව සොයා ගැනීමයි. පැහැදිලිවම, වින්ඩෝස් හි සියලුම GUI වැඩසටහන් තිරයේ නොපෙන්වූවත් කවුළුවක් තිබුණි. වෙනත් ක්‍රියාවලියකට හසුරුව ලබා ගැනීමට වැඩසටහනක් ලිවීමෙන් (අත්‍යවශ්‍යයෙන්ම එයට සබැඳියක්), ඔබට එයට පණිවිඩ යැවිය හැකිය. මෙය ක්‍රමලේඛ කවුළුවක් සැඟවීම/පෙන්වීම වැනි මූලික මෙහෙයුම් සඳහා මෙන්ම අත්තනෝමතික DLL එකක් එහි මතක අවකාශයට පැටවීමට සහ කේතය ක්‍රියාත්මක කිරීම ආරම්භ කිරීමට ක්‍රියාවලියකට බල කිරීම වැනි නියම දේවල් සඳහා ඉඩ ලබා දුන්නේය. DLL එන්නත් කිරීමෙන් පසු විනෝදය ආරම්භ විය.

පළමු මාස ​​එකහමාර තුළ, මෙම රහස් පරීක්ෂක මට එතරම් කරදර කළේ නැත; එය මගේ යන්ත්‍රයේ VNC සේවාදායකයට සම්බන්ධ වූයේ වරක් හෝ දෙවරක් පමණි. නමුත් එක් විශේෂ සැසියක් ඔහුගේ උනන්දුව අවුස්සන්නට ඇත. මම පන්තියේ සෙල්ලම් කිරීමට පහසු වන පරිදි Minesweeper කවුළු (වසා නොගෙන) සැඟවීමට C කේතයක් ලියමින් සිටියදී, පද්ධති තැටියේ සුදු VNC නිරූපකය කළු වී ඇති බව මම දුටුවෙමි. මෙයින් අදහස් කළේ ඔහු දැන් මා දෙස බලා සිටින බවයි.

මම ඔහුව නොසලකා හැරීමට උත්සාහ කරමින් සුපුරුදු පරිදි කේත කිරීම දිගටම කරගෙන ගියෙමි. මේ අතර, කාමරයේ කෙළවරේ ඇති අසංඛ්‍යාත මොනිටරයකට උපරිම රාමු අනුපාතය සම්ප්‍රේෂණය කිරීමට උත්සාහ කරමින් යන්ත්‍රය මන්දගාමී වීමට පටන් ගත්තේය. Windows ප්‍රතිචාර දැක්වීම බොහෝ දුරට නැවැත්තුවා, මගේ ඉවසීමේ සීමාව අවසන් වූ විට, මම ලොග් අවුට් වී දවස අවසන් කළෙමි.

පසුකාලීනව පරිගණක කාමරයට ගිය විට, කොළඹ සෑම විටම පාහේ මා කරන දේ ගැන දැඩි උනන්දුවක් දැක්වීය. හතරවෙනි වතාවට පසු, මම තීරණය කළා: මම මේ ගැන යමක් කළ යුතුයි.

සාධාරණ, තාර්කික පුද්ගලයෙකුට මෙම ප්‍රශ්නය ඔහු හෝ ඔහුගේ ප්‍රධානියා සමඟ කෙලින්ම ඉදිරිපත් කළ හැකි බව මම පිළිගනිමි. කෙසේ වෙතත්, මම සෑම විටම පරීක්ෂාවට යටත් වූ අතර සම්පූර්ණයෙන්ම වෙනස් උපාය මාර්ගයක් අනුගමනය කිරීමට ඉක්මනින්ම කතා කළෙමි.

- මෙම VNC සේවාදායකය නොමැතිව ඔබට කිසිවක් කළ නොහැක! - මම සන්සුන්ව හා තීරණාත්මකව කිහිප වතාවක්ම මටම කීවෙමි.

VNC ඝාතනය කිරීමට අවශ්ය විය.

මම විශාල ශිෂ්‍ය කණ්ඩායම් සමඟ පරිගණක කාමරයට ගොස් මොනිටර සමඟ හැකි තරම් කෙළවරින් වාඩි වී සිටියෙමි. මෙය ටික කලක් ක්‍රියාත්මක වූ අතර අදහස් පරීක්ෂා කිරීමට මට යම් කාලයක් ලබා දුන්නේය.

මගේ පළමු උත්සාහය, ඔබ එකඟ වනු ඇතැයි මම සිතමි, එය තරමක් දුර්වල විය. පද්ධති තැටියේ ඇති VNC නිරූපකය මත දකුණු-ක්ලික් කළ විට, මම EXIT යන මැජික් අකුරු සහිත මෙනුවක් දුටුවෙමි. අවාසනාවකට, අකුරු ලියා ඇත්තේ අළු ලුහුඬු සටහන් පෙළෙනි. සමූහ ප්‍රතිපත්ති සංස්කාරකය හරහා පරිපාලකයා "පිටවීම" මෙනු අයිතමය අක්‍රීය කර ඇත. මම Task Manager වෙතින් ක්‍රියාවලිය විනාශ කිරීමට උත්සාහ කළ නමුත් ඇත්ත වශයෙන්ම එය මට නොපෙනී ගියේ එය වෙනස්, වඩා වරප්‍රසාද ලත් ගිණුමක් යටතේ ක්‍රියාත්මක වූ බැවිනි. ඒක හරි ගියේ නෑ.

VNC සේවාදායකය TCP port 5900 මත ක්‍රියාත්මක වන බව මට මතකයි. මගේ ඊළඟ සැලසුම වූයේ මෙම වරාය බිඳවැටීම සඳහා දූෂිත පැකට් යැවීමයි.

මම අවම වශයෙන් දින කිහිපයක් ප්‍රොටෝකෝලය සමඟ ටින්කර් කරමින්, 5900 වරායට විවිධ ආකාරයේ හොඳින් ව්‍යුහගත ජරාවක් යවා එය බිඳී යනු ඇතැයි අපේක්ෂා කළෙමි. අන්තිමට ඒකත් හරි ගියේ නෑ.

මම ඒ වන විටත් සිතන්නට පටන් ගෙන සිටියේ මට මේ දේ ඉවත් කිරීමට නොහැකි වනු ඇති බවයි, එය හදිසියේම මට උදා වූ විට: එහි කවුළුවක් තිබිය යුතුය! අපි එය ප්රදර්ශනය කළ යුතුයි. සමහර විට එහි හොඳ ඉස්ම සහිත "නිශ්ශබ්ද" බොත්තමක් තිබිය හැකි අතර එය මට හොඳින් භාවිතා කළ හැකිය!

වෙනත් ක්‍රියාවලියක ප්‍රධාන කවුළුව වෙත හසුරුව සොයා ගැනීමට මම මගේ දැන් පරිපූර්ණ C කේතය ධාවනය කළෙමි - සහ නිසැකවම, VNC සොයා ගන්නා ලදී. මගේ ඇඟිලි ටයිප් කරන විට මට ආශ්වාදයක් දැනුනි WM_SHOWWINDOW. මා ඉදිරිපිට මා දුටු දේ අනුමාන කිරීමට උත්සාහ කරන්න?

කිසිවක් නැත!

දැන් මම කුතුහලයෙන් සිටියෙමි ... එහි කවුළුවක් තිබුනා, නමුත් එය මගේ පණිවිඩ නොසලකා හරිමින් සිටියේය. එය ක්‍රියාත්මක වන බව සහතික කර ගැනීමට මම මගේ කේතය දෙවරක් පරීක්ෂා කළෙමි. වෙනත් ක්‍රියාවලි කිහිපයකින් එය පරීක්‍ෂා කළ අතර එය විශිෂ්ට ලෙස ක්‍රියාත්මක විය. මම VNC කවුළුව වෙත වෙනත් පණිවිඩ යැවීමට උත්සාහ කළ අතර තවමත් කිසිවක් නැත.

ඊට පස්සේ මට ආයෙත් තේරුණා!

ඉතා ඝනකමට ස්තූතියි පොත Charles Petzold මම Win32 ක්‍රියාවලි පද්ධතිය තුළ ක්‍රියා කරන ආකාරය හොඳින් අධ්‍යයනය කළෙමි. සෑම Win32 යෙදුමකම කවුළුවක් මෙන්ම "පණිවිඩ පෝලිමක්" ඇත. පරිශීලක අන්තර්ක්‍රියා මගින් අවුලුවන පණිවිඩ මෙන්ම වින්ඩෝස් විසින්ම එවන ලද පණිවිඩ පෝලිමකට පැමිණෙන අතර යෙදුම විසින්ම ඒවා සකසන ආකාරය තීරණය කරයි.

තමා තුළම ඉතා රසවත් නොවේ. නමුත් ප්‍රමාණවත් තරම් ප්‍රමාණවත් නොවන සැකසූ පණිවිඩ පෝලිමක් කවුළු ක්‍රියාවලි කළමණාකරුට එල්ලෙන ක්‍රියාවලියකට මැදිහත් වීමට හියුරිස්ටික් ලෙස ක්‍රියා කරන බව මට වැටහුණු විට, මම පිරිසිදු සෙරොටොනින් දහඩිය දැමීමට පටන් ගතිමි.

තත්පරයක් අපතේ නොයවා, මම ප්‍රධාන VNC කවුළුව වෙත තවත් පණිවිඩයක් යැවීමට සූදානම් වෙමින් මගේ C කේතය වෙත ආපසු ගියෙමි WM_SHOWWINDOW. චක්රයක් තුළ. සදාකාලිකයි. ඉතින්, පණිවිඩ ගොඩක්. WM_SHOWWINDOW, VNC සම්පූර්ණයෙන්ම නොසලකා හැරීමට උත්සාහ කරන බව මම දැන් දැන සිටියෙමි.

මම මගේ ජීවිතයේ වඩාත්ම නිදහසට ආදරය කරන කේතය 4KB සම්පාදනය කර ධාවනය කළෙමි. තත්පර තුනකට පමණ පසු, වින්ඩෝස් විසින් ක්රියාවලිය වාර්තා කරන ලදී vncserver.ехе පිළිතුරු නොදෙන අතර, මට ප්‍රතික්ෂේප කළ නොහැකි යෝජනාවක් ඉදිරිපත් කළේය:

ඔබට මෙම ක්‍රියාවලිය සම්පූර්ණ කිරීමට අවශ්‍යද?

හෙල් ඔව්!

දවස පුරාවටම මම මා ගැන දරාගත නොහැකි තරම් සතුටු වූ බව මට පිළිගනිමි.

මගේ නව සුපිරි බලය ජීර්ණය කිරීමට ගත වූ පැය කිහිපයකට පසු, මම එය භාවිතා කරන්නේ කෙසේදැයි තීරණය කළෙමි. ඔහු ඉදිරියෙහි සැසිවාරය මරා දැමීම ඉතා පහසු විය. මට වඩා හොඳ අදහසක් තිබුණා - සම්පූර්ණයෙන්ම අතුරුදහන් වීමට.

පසු සොකට් වැඩසටහන් සමඟ ගින්නෙන් බව්තීස්මය මට කරුණු දෙකක් කළ හැකි කේතයක් ලිවිය හැකි බව මට වැටහුණි. එය ප්‍රථමයෙන් අළුතින් නිදහස් කරන ලද TCP port 5900 අත්පත් කර ගනු ඇත, කලින් හෝඩුවාවක් නැති VNC සේවාදායක ක්‍රියාවලිය විසින් අත්පත් කරගෙන ඇත. එවිට එය නිශ්චිත යන්ත්‍රයේ VNC සේවාදායකයට නව TCP සම්බන්ධතාවයක් සාදනු ඇත. කේතය සරලව සොකට් දෙක අතර ඇති සියලුම දත්ත ප්‍රොක්සි කරනු ඇති අතර, ඇත්ත වශයෙන්ම ඔහු සම්පූර්ණයෙන්ම වෙනස් VNC සේවාදායකයකට සම්බන්ධ වන විට, ඔහු මා හා සම්බන්ධ වන බව Columbo සිතනු ඇත.

මගේ කේතය මා සහ මා තෝරාගත් වෙනත් දුප්පත් ආත්මයක් අතර රහස් පාලමක් ලෙස ක්‍රියා කරනු ඇත. එය අපූරු විය.

මම වහාම මගේ ව්‍යාජ VNC පාලම ලිවීමට පටන් ගතිමි. කොළඹ කිහිප වතාවක්ම මා හා සම්බන්ධ වූ නමුත් මම ඔහු ඉදිරියේ වැඩසටහන් දිගටම කරගෙන ගියෙමි. වගේ පෝට් නම්බර් වගේ කමෙන්ට් වගේ පැහැදිළි දේවල් ලිව්වත් එයාට මං මොනවද කරන්නේ කියලා තේරුමක් නෑ කියලා මම නිගමනයකට ආවා. // Прощай, жуткий шпион VNC.

දින කිහිපයකට පසු මට කේතය නිවැරදිව ක්‍රියා කිරීමට නොහැකි විය. තත්වය වඩාත් නරක අතට හැරීම සඳහා, මම පද්ධති තැටියේ කළු VNC නිරූපකය සමඟ අඛණ්ඩව පාහේ වැඩ කරමින් සිටියෙමි. එය සම්බන්ධ වී තිබියදී, මට මගේ කේතය පරීක්ෂා කිරීමට වරාය මුදා හැරීමට නොහැකි විය.

මම එදා දැනගෙන හිටියා නම් netcat!

අවසානයේදී, මගේ ස්නායුවලට මග පෑදීය; සියල්ලට පසු, මම නොඉවසිලිමත් 17 හැවිරිදි පිරිමි ළමයෙකු විය. සුදු VNC සේවාදායක නිරූපකය නැවතත් කළු පැහැයට හැරෙන ආකාරය දෙස බලා, මම කලබල වී, පණිවිඩ පෝලිමේ ඇති මුල් කේතය විවෘත කර, ඔහුගේ ඇස් ඉදිරිපිට එය ධාවනය කළෙමි. මම ක්ලික් කිරීමට පෙර තත්පර කිහිපයක් බලා සිටියෙමි End Process, ඔහු එය දුටු බව තහවුරු කර ගැනීමට පමණි.

එම බොත්තම එබීමෙන් එය වටින බව මට සම්පූර්ණයෙන් ඒත්තු නොදුන්නේ නම්, ඔහු තම මොනිටර බලකොටුව පිටුපසින් පැන ඉක්මනින් මා වෙත ළං වී මාව කාමරයෙන් පිටතට ගෙන ආවේ නිසැකය.

ඒ නිසා සති දෙකක කාලයක් මට ජාලය තහනම් කළා. සාධාරණ දඩුවමක්, මම හිතුවා. සති තුනකට පමණ පසු, VNC සේවාදායකය ඇරඹුම් ස්ක්‍රිප්ට් වලින් අතුරුදහන් වූ අතර වෙන කිසිම තැනක දර්ශනය නොවීය. මගේ සිදුවීම මේ සඳහා යම් කාර්යභාරයක් ඉටු කරයිද නැද්ද යන්න මම කිසි විටෙකත් දැන සිටියේ නැත, නමුත් එය රට පුරා විද්‍යාල පරිගණක ශාලා තුළ මානසික අවපීඩනයෙන් පෙළෙන සිසුන්ට මගේ VNC තුවක්කුව විකිණීමෙන් විශිෂ්ට ලෙස පොහොසත් වීමේ මගේ සැලැස්ම සම්පූර්ණයෙන්ම විනාශ කළේය.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න