Vita vya Coder: Me vs. That VNC Guy

Π’ blog hii Hadithi chache za programu zimechapishwa. Ninapenda kukumbuka mambo yangu ya kijinga ya zamani. Kweli, hapa kuna hadithi nyingine kama hiyo.

Nilianza kupendezwa na kompyuta, haswa programu, nilipokuwa na umri wa miaka 11 hivi. Mwanzoni mwa shule ya upili bΠΎNilitumia muda wangu mwingi wa bure kucheza na C64 yangu na kuandika BASIC, kisha nikakata msimbo mbaya kwa mkasi. Sitanii, mkasi.

Baada ya shule (karibu na umri wa miaka 16), watoto wa Uingereza kwa kawaida huenda chuo kikuu, ambako huchagua kusoma masomo matatu au manne kabla ya kwenda chuo kikuu. Kutokana na upendo wangu kwa sanduku la beige na rekodi ya tepi nyumbani, niliamua kuwa kusoma "sayansi ya kompyuta" katika chuo kikuu ilikuwa chaguo sahihi.

Nilifurahia kozi hiyo kuliko nilivyotarajia; huko nilikutana kwa mara ya kwanza na Pascal na Delphi.

Wakati wa mapumziko kati ya madarasa, wanafunzi wangeweza kufanya kazi kwenye mashine yoyote ya bure kwenye chumba cha kompyuta. Hebu fikiria: chumba kikubwa, kilichoundwa kwa ajili ya watu wapatao mia moja, na safu za meza zilizojaa mashine, kama zile ambazo mfuatiliaji anasimama kwenye kitengo cha mfumo. Mashabiki wanavuma mara kwa mara, mipira ya panya inasikika kwenye meza, bila kusimama kwa sekunde moja. Kuna harufu ya kushangaza hewani, kana kwamba vijana 50-100 wenye homoni hubadilika mara kwa mara hadi mamia ya chipsi za Pentium III.

Licha ya hatari za kiafya, nilipenda kukaa kwenye kompyuta nilipokuwa na dakika ya bure.

Msimamizi wa zamu katika chumba hicho alikuwa mwanamume mfupi, wa makamo ambaye alichaguliwa kwa jukumu hili kwa sababu ya tamaa yake isiyotosheka ya kuwa dikteta mbaya. Nadhani hivyo. Kazini ni dharau; mtu huyo alipenda kazi yake sana. Alipewa jukumu la kuweka utaratibu ili hakuna mtu anayetumia kompyuta ya shule kwa jambo lolote lisilofaa.

Hadi leo, angalizo langu linaniambia kuwa bonasi ya msimamizi ilitegemea moja kwa moja idadi ya wanafunzi aliowashika kwa mkono na kusindikizwa nje ya chumba cha kompyuta. Nina hakika mtu huyu alilipa rehani yake mapema.

Alikaa pembeni kabisa ya chumba cha kompyuta kwenye kona ya meza. Na ilikuwa salama kudhani kwamba wachunguzi wake wa uzazi wamepata njia ya kuzaliana na kipindi kifupi cha ujauzito, kulikuwa na wengi wao. Mtu anaweza kujiuliza ikiwa kweli alikuwa na wakati wa kuwafuatilia wote. Bila shaka, ninatania... nilimtaja kuwa aliichukulia kazi yake kwa uzito sana?

Wakati huo, mtandao wa kompyuta ulikuwa ukiendesha Windows 2000. Hivi karibuni niligundua kwamba kila wakati nilipoingia kwenye mfumo, script ilizinduliwa ambayo ilibainisha kuanzia seva ya VNC kutoka kwa akaunti ya msimamizi kwa upatikanaji wa kijijini kwenye desktop. Kila mtu huyu alipotaka kukupeleleza, angeunganisha moja kwa moja kwenye mashine yako na kutazama. Ilikuwa ya kutisha, na sasa ninapofikiria juu yake, labda haramu.

Baada ya kukata meno yangu kwenye BASIC na C64, sasa niliandika kwa C na hata C++ kidogo. Wakati huo, nilikuwa bado ninapenda sana lugha ya D, ambayo ilirekebisha baadhi ya mapungufu ya C++, kama nilivyoona wakati huo.

Nilikuwa nikiingia kwenye chumba cha kompyuta ili kusoma kitu kipya kwenye D au kucheza na mkusanyaji wa Digital Mars D. Wakati mwingine, nilipokuwa nimekengeushwa kutoka kufikiria kuhusu mustakabali mzuri wa D, niliandika msimbo wa C ili kudukua programu nyingine za Win32 kupitia dirisha lao. Hushughulikia.

Katika siku nzuri za zamani za programu ya Win32, kutafuta kishikio cha dirisha ilikuwa njia rahisi ya kudukua programu zingine. Kwa wazi, programu zote za GUI kwenye Windows zilikuwa na dirisha, hata ikiwa haikuonekana kwenye skrini. Kwa kuandika programu ya kurejesha mpini kwa mchakato mwingine (kimsingi kiunga kwake), unaweza kutuma ujumbe kwake. Hii iliruhusu shughuli zingine za kimsingi kama kuficha/kuonyesha kidirisha cha programu, na vile vile vitu vizuri kama vile kulazimisha mchakato wa kupakia DLL kiholela kwenye nafasi yake ya kumbukumbu na kuanza kutekeleza nambari. Baada ya sindano ya DLL, furaha ilianza.

Katika mwezi wa kwanza na nusu, mpelelezi huyu hakunisumbua sana; iliunganishwa na seva ya VNC kwenye mashine yangu mara moja tu au mbili. Lakini kikao kimoja cha pekee kinaweza kuwa kilichochea kupendezwa kwake. Nilikuwa nikiandika msimbo fulani wa C kuficha madirisha ya Minesweeper (bila kuifunga) ili kurahisisha kucheza darasani, nilipogundua kuwa ikoni nyeupe ya VNC kwenye trei ya mfumo ilikuwa imebadilika kuwa nyeusi. Hii ilimaanisha kuwa sasa alikuwa akinitazama.

Niliendelea kuandika kama kawaida, nikijaribu kumpuuza. Wakati huo huo, mashine ilianza kupungua, ikijaribu kusambaza kiwango cha juu cha fremu kwa moja ya wachunguzi isitoshe kwenye kona ya chumba. Windows ilikaribia kuacha kujibu, wakati uvumilivu wangu uliisha, nilitoka na kumaliza kwa siku.

Katika ziara zilizofuata kwenye chumba cha kompyuta, Colombo alipendezwa sana na nilichokuwa nikifanya karibu kila mara. Baada ya kama mara ya nne, niliamua: Ninahitaji kufanya kitu kuhusu hili.

Ninakubali kwamba mtu mwenye akili timamu, mwenye akili timamu angeweza tu kuzungumzia suala hili moja kwa moja na yeye au bosi wake. Hata hivyo, sikuzote nilijiingiza kwenye majaribu na haraka nikazungumza mwenyewe kuchukua mkakati tofauti kabisa.

- Hauwezi kufanya chochote bila seva hii ya VNC! - Nilijiambia kwa utulivu na kwa uamuzi mara kadhaa.

Ilikuwa ni lazima kuua VNC.

Nilianza kuingia kwenye chumba cha kompyuta na makundi makubwa ya wanafunzi na kukaa mbali na kona na wachunguzi iwezekanavyo. Hii ilifanya kazi kwa muda na ilinipa wakati wa kujaribu maoni.

Jaribio langu la kwanza, nadhani utakubali, lilikuwa dhaifu sana. Kubofya kulia kwenye ikoni ya VNC kwenye tray ya mfumo, niliona menyu iliyo na herufi za uchawi EXIT. Kwa bahati mbaya, barua ziliandikwa kwa maandishi ya muhtasari wa kijivu. Msimamizi amezima kipengee cha menyu ya "Ondoka" kupitia Kihariri cha Sera ya Kikundi. Nilijaribu kuua mchakato huo kutoka kwa Kidhibiti Kazi, lakini kwa kweli haikuonekana kwangu kwa sababu ilikuwa ikifanya kazi chini ya akaunti tofauti, iliyobahatika zaidi. Haikufaulu.

Seva ya VNC inaendesha kwenye bandari ya TCP 5900, nilikumbuka. Mpango wangu uliofuata ulikuwa kutuma pakiti mbovu kwenye bandari hii ili kuiharibu.

Nilitumia angalau siku chache kuchezea itifaki, nikituma aina mbali mbali za ujanja ulioandaliwa vizuri kwenye bandari 5900 na nikitumai ingevunjika. Mwishowe, hiyo pia haikufanya kazi.

Nilikuwa tayari nimeanza kufikiri kwamba sitaweza kuondokana na jambo hili, wakati ghafla ilikuja kwangu: lazima kuwe na dirisha huko! Tunahitaji kuionyesha. Labda itakuwa na kitufe cha juisi nzuri cha "Nyamaza" ambacho ninaweza kutumia vizuri!

Niliendesha nambari yangu ya C karibu kabisa kupata kipini kwa dirisha kuu la mchakato mwingine - na hakika, VNC ilipatikana. Nilihisi msukumo wakati vidole vyangu vilipoandikwa WM_SHOWWINDOW. Jaribu kukisia nilichokiona mbele yangu?

Hakuna kitu!

Sasa nilikuwa na hamu ... ilikuwa na dirisha, lakini ilikuwa ikipuuza jumbe zangu. Niliangalia nambari yangu mara mbili ili kuhakikisha inafanya kazi. Ilijaribu kwenye michakato mingine kadhaa na ilifanya kazi vizuri. Nilijaribu kutuma ujumbe mwingine kwenye dirisha la VNC, na bado hakuna chochote.

Na hapo ikanijia tena!

Shukrani kwa nene sana kitabu Charles Petzold Nilisoma kwa uangalifu jinsi michakato ya Win32 inavyofanya kazi ndani ya mfumo. Kila programu ya Win32 ina dirisha na "foleni ya ujumbe". Ujumbe unaosababishwa na mwingiliano wa mtumiaji, pamoja na ujumbe uliotumwa na Windows yenyewe, hufika kwenye foleni, na programu yenyewe huamua jinsi ya kuzishughulikia.

Sio ya kuvutia sana yenyewe. Lakini nilipogundua kuwa foleni kubwa ya kutosha ya ujumbe ambao haujachakatwa ilifanya kazi kama kigezo kwa Meneja wa Mchakato wa Dirisha kuingilia kati mchakato ulioning'inia, nilianza kutoa jasho la serotonini safi.

Bila kupoteza sekunde, nilirudi kwa nambari yangu ya C, nikijiandaa kutuma ujumbe mwingine kwenye dirisha kuu la VNC WM_SHOWWINDOW. Katika mzunguko. Milele. Kwa hivyo, ujumbe mwingi. WM_SHOWWINDOW, ambayo sasa nilijua VNC ingejaribu kupuuza kabisa... kwa hatari yake.

Nilikusanya na kukimbia 4KB ya msimbo wa kupenda uhuru zaidi maishani mwangu. Baada ya kama sekunde tatu, Windows iliripoti kuwa mchakato huo vncserver.Π΅Ρ…Π΅ hajibu, na akatoa ofa ambayo sikuweza kukataa:

Je, ungependa kukamilisha mchakato huu?

KUZIMU NDIYO!

Acha nikiri kwamba kwa siku nzima nilifurahiya sana.

Baada ya saa chache kumeng'enya uwezo wangu mpya, niliamua jinsi ningeutumia. Ilikuwa rahisi sana kuua tu kikao mbele yake. Nilikuwa na wazo bora - kutoweka kabisa.

Baada ya ubatizo wa moto na programu ya tundu Niligundua kuwa ningeweza kuandika msimbo ambao ungefanya mambo mawili. Kwanza itachukua bandari mpya ya TCP 5900 iliyoachiliwa, ambayo hapo awali ilichukuliwa na mchakato wa seva ya VNC usio na ufahamu. Kisha itaunda muunganisho mpya wa TCP kwa seva ya VNC ya mashine maalum. Nambari hiyo itawakilisha data yote kati ya soketi hizo mbili, na Columbo atafikiria ananiunganisha, wakati kwa kweli atakuwa akiunganisha kwa seva tofauti kabisa ya VNC.

Nambari yangu itafanya kama daraja la siri kati yangu na roho nyingine mbaya ya chaguo langu. Ilikuwa ya ajabu.

Mara moja nilianza kuandika daraja langu bandia la VNC. Columbo aliunganishwa nami mara kadhaa, lakini niliendelea kupanga mbele yake. Nilifikia hitimisho kwamba hakujua nilichokuwa nikifanya, ingawa niliandika vitu dhahiri kama nambari za bandari na maoni kama // ΠŸΡ€ΠΎΡ‰Π°ΠΉ, ΠΆΡƒΡ‚ΠΊΠΈΠΉ шпион VNC.

Baada ya siku kadhaa sikuweza kupata msimbo kufanya kazi ipasavyo. Ili kufanya mambo kuwa mbaya zaidi, nilikuwa nikifanya kazi karibu kila wakati na ikoni nyeusi ya VNC kwenye trei ya mfumo. Ilipokuwa imeunganishwa, sikuweza kutoa lango ili kujaribu msimbo wangu.

Kama ningejua basi netcat!

Mwishowe, neva zangu zililegea; baada ya yote, nilikuwa kijana mwenye umri wa miaka 17 asiye na subira. Kuangalia aikoni nyeupe ya seva ya VNC ikigeuka kuwa nyeusi tena, nilichanganyikiwa, nikafungua msimbo asilia uliojaza foleni ya ujumbe, na kuukimbia mbele ya macho yake. Nilisubiri hata sekunde chache kabla ya kubofya End Process, ili tu kuhakikisha kuwa ameiona.

Ikiwa kubonyeza kitufe hicho hakunishawishi kabisa kuwa inafaa, basi aliruka kutoka nyuma ya ngome yake ya wachunguzi ili kunikaribia haraka na kunitoa nje ya chumba hakika alinifanya.

Matokeo yake, nilipigwa marufuku kutoka kwa mtandao kwa wiki mbili. Adhabu ya haki, nilifikiri. Baada ya kama wiki tatu, seva ya VNC ilitoweka kutoka kwa maandishi ya boot na haikuonekana popote pengine. Sikuwahi kujua kama tukio langu lilikuwa na jukumu lolote katika hili au la, lakini liliharibu kabisa mpango wangu wa kupata utajiri wa ajabu kwa kuuza bunduki yangu ya VNC kwa wanafunzi walioshuka moyo katika kumbi za kompyuta za chuo kikuu kote nchini.

Chanzo: mapenzi.com

Kuongeza maoni