I-Coder Battle: Mina vs. That VNC Guy

Π’ le bhulogi Kunezinganekwane ezimbalwa zohlelo ezishicilelwe. Ngithanda ukukhumbula izinto zami zakudala eziwubulima. Nansi enye indaba enjalo.

Ngaqala ukuba nesithakazelo kumakhompiyutha, ikakhulukazi ukuhlela, lapho ngineminyaka engaba ngu-11 ubudala. Ekuqaleni kwesikole samabanga aphezulu bΠΎNgichithe isikhathi sami esiningi samahhala ngidlala i-C64 yami futhi ngibhala i-BASIC, ngabe sengikhipha ikhodi embi ngesikele. Angidlali, sikelo.

Ngemva kokuphuma kwesikole (ezineminyaka engaba ngu-16), izingane zaseBrithani ngokuvamile ziya ekolishi, lapho zikhetha khona ukufunda izifundo ezintathu noma ezine ngaphambi kokuya enyuvesi. Ngokunikezwa uthando lwami ngebhokisi le-beige kanye ne-tape rekhoda ekhaya, nganquma ukuthi ukufunda "isayensi yekhompyutha" ekolishi kwakuyisinqumo esifanele.

Ngasijabulela kakhulu isifundo kunalokho engangikulindele; lapho ngahlangana okokuqala noPascal noDelphi.

Ngesikhathi sekhefu phakathi kwamakilasi, abafundi bangasebenza kunoma yimuphi umshini wamahhala egumbini lekhompyutha. Cabanga nje: igumbi elikhulu, eliklanyelwe abantu abangaba yikhulu, elinemigqa yamatafula agcwele imishini, njengalawo lapho umqaphi umi khona kuyunithi yesistimu. Abalandeli balokhu bevungazela, amabhola egundane ayaphithizela ematafuleni, awami umzuzwana. Kukhona iphunga elingavamile emoyeni, sengathi intsha engama-hormone engu-50-100 ishintsha ngezikhathi ezithile ukuze ipholise amakhulu e-Pentium III chips.

Naphezu kwezingozi zempilo, ngangithanda ukuhlala ekhompyutheni lapho ngithola umzuzu wamahhala.

U-admin owayesebenza ekamelweni kwakuyindoda emfishane, eneminyaka ephakathi nendawo eyakhethwa kule ndima ngenxa yesifiso sayo esinganeliseki sokuba umashiqela omubi. Ngicabanga kanjalo. Emsebenzini kuwukubukela phansi; umfana wayewuthanda ngempela umsebenzi wakhe. Wayejutshwe ukuba agcine ukuhleleka ukuze kungabikho muntu osebenzisa ikhompyutha yesikole kunoma yini engafanele.

Kuze kube namuhla, intuition yami ingitshela ukuthi ibhonasi yomphathi incike ngokuqondile enanini labafundi ababambe ngesandla futhi ebakhiphela ngaphandle kwegumbi lekhompyutha. Nginesiqiniseko sokuthi lo mfana ukhokhe imali yendlu ngaphambi kwesikhathi.

Wahlala ekhoneni elikude legumbi lekhompyutha etafuleni elisekhoneni. Futhi kwakuphephile ukucabanga ukuthi abaqaphi bakhe benzalo babethole indlela yokuzala ngesikhathi esifushane ngokumangazayo sokukhulelwa, babebaningi kakhulu. Umuntu angazibuza ukuthi ngabe unaso ngempela yini isikhathi sokuzilandela zonke. Yebo, ngiyadlala...ngike ngasho ukuthi uwuthathele phezulu umsebenzi wakhe?

Ngaleso sikhathi, inethiwekhi yekhompiyutha yayisebenzisa i-Windows 2000. Ngokushesha ngathola ukuthi ngaso sonke isikhathi lapho ngingena ohlelweni, kwaqalwa iskripthi esicacisa ukuqalisa iseva ye-VNC kusuka ku-akhawunti yomqondisi ukuze uthole ukufinyelela kude kudeskithophu. Noma nini lapho lo mfana efuna ukukuhlola, wayexhuma ngqo emshinini wakho futhi abukele. Kwakwethusa, futhi manje njengoba ngicabanga ngakho, mhlawumbe kwakungekho emthethweni.

Ngemva kokunquma amazinyo ami ku-BASIC ne-C64, manje sengibhale ngo-C ngisho ne-C++ encane. Ngaleso sikhathi, ngangisenesithakazelo esikhulu olimini luka-D, olwalungisa okunye ukushiyeka kwe-C++, njengoba ngakubona ngaleso sikhathi.

Ngangivame ukungena ekamelweni lekhompiyutha ukuze ngifunde okuthile okusha ku-D noma ngidlale nge-compiler ye-Digital Mars D. Ngezinye izikhathi, ngenkathi ngiphazamiseka ekucabangeni ngekusasa elihle lika-D, ngangibhala ikhodi engu-C ukuze ngigqekeze ezinye izinhlelo ze-Win32 ngefasitela lazo. izibambo.

Ezinsukwini zakudala ezinhle zohlelo lweWin32, ukuthola isibambo sewindi kwakuyindlela elula yokugebenga ezinye izinhlelo. Ngokusobala, zonke izinhlelo ze-GUI ku-Windows zazinefasitela, noma lingaveli esikrinini. Ngokubhala uhlelo lokubuyisa isibambo kwenye inqubo (empeleni isixhumanisi kuso), ungathumela imilayezo kuso. Lokhu kuvumele imisebenzi ethile eyisisekelo njengokufihla/ukukhombisa iwindi lohlelo, kanye nezinto ezipholile ngempela njengokuphoqa inqubo ukulayisha i-DLL engafanele endaweni yayo yenkumbulo bese iqala ukwenza ikhodi. Ngemuva komjovo we-DLL, ubumnandi baqala.

Ngenyanga yokuqala nengxenye, lo mseshi akazange angikhathaze kakhulu; uxhume kuseva ye-VNC emshinini wami kanye kuphela noma kabili. Kodwa isikhathi esisodwa kungenzeka savusa isithakazelo sakhe. Bengibhala ikhodi ethile C ukuze ngifihle amafasitela e-Minesweeper (ngaphandle kokuwavala) ukuze kube lula ukudlala ekilasini, lapho ngibona ukuthi isithonjana esimhlophe se-VNC kuthreyi yesistimu sesiphenduke saba mnyama. Lokhu kwakusho ukuthi wayesengibhekile manje.

Ngaqhubeka ngibhala amakhodi njengenjwayelo, ngizama ukumziba. Ngaleso sikhathi, umshini waqala ukwehlisa ijubane, uzama ukudlulisa izinga eliphezulu lozimele kwelinye lamamonitha angenakubalwa ekhoneni legumbi. Amawindi acishe ayeka ukuphendula, lapho isineke sami siphela, ngaphuma ngaqeda usuku.

Lapho evakashela igumbi lama-computer, uColombo waba nesithakazelo esijulile kulokho engangikwenza cishe njalo. Cishe ngemva kwesikhathi sesine, nganquma: Kudingeka ngenze okuthile ngalokhu.

Ngiyavuma ukuthi umuntu onengqondo, onengqondo ubengavele aphakamise lolu daba kuye noma kumphathi wakhe. Nokho, ngaso sonke isikhathi ngangivumela isilingo futhi ngisheshe ngikhulume nami ukuba ngisebenzise isu elihluke ngokuphelele.

- Awukwazi ukwenza lutho ngaphandle kwale seva ye-VNC! - Ngazitshela ngomoya ophansi nangokuzimisela izikhathi eziningana.

Kwadingeka ukubulala i-VNC.

Ngaqala ukungena ekamelweni lekhompyutha namaqembu amakhulu abafundi futhi ngihlezi kude nekhoneni nama-monitor ngangokunokwenzeka. Lokhu kwasebenza isikhashana futhi kwanginika isikhathi sokuhlola imibono.

Umzamo wami wokuqala, ngicabanga ukuthi uzovuma, wawubuthakathaka kakhulu. Ngokuchofoza kwesokudla kusithonjana se-VNC kuthreyi yesistimu, ngibone imenyu enezinhlamvu zomlingo EXIT. Ngeshwa, izinhlamvu zazibhalwe ngombhalo wohlaka olumpunga. Umlawuli ukhubaze into yemenyu ethi "Phuma" esebenzisa Isihleli Senqubomgomo Yeqembu. Ngizamile ukubulala inqubo ku-Task Manager, kodwa-ke bekungabonakali kimi ngoba ibisebenza ngaphansi kwe-akhawunti ehlukile, enelungelo elikhulu. Akuphumelelanga.

Iseva ye-VNC isebenza ku-TCP port 5900, ngikhumbule. Icebo lami elilandelayo kwakuwukuthumela amaphakethe onakele kulesi sikhumulo ukuze ngisiphahlaze.

Ngichithe okungenani izinsuku ezimbalwa ngixoxa ngephrothokholi, ngithumela izinhlobo ezahlukahlukene ze-crap eyakhiwe kahle ku-port 5900 futhi ngethemba ukuthi izophuka. Ekugcineni, nakho akuzange kusebenze.

Ngangivele ngiqala ukucabanga ukuthi ngeke ngikwazi ukuqeda le nto, lapho ngokuzumayo kwafika kimi: kufanele kube khona iwindi lapho! Sidinga ukuyibonisa. Mhlawumbe izoba nenkinobho emnandi ethi β€œThulisa” engingayisebenzisa kahle!

Ngisebenzise ikhodi yami ecishe iphelele u-C ukuze ngithole isibambo efasiteleni elikhulu lenye inqubo - futhi ngokuqinisekile, i-VNC yatholwa. Ngazizwa ngikhuthazeka lapho iminwe yami ithayipha WM_SHOWWINDOW. Zama ukuqagela engikubone phambi kwami?

Lutho!

Manje ngangifuna ukwazi...yayinefasitela, kodwa yayiziba imilayezo yami. Ngihlole kabili ikhodi yami ukuze ngiqiniseke ukuthi iyasebenza. Ihlolwe kwezinye izinqubo ezimbalwa futhi yasebenza kahle. Ngizamile ukuthumela eminye imilayezo efasiteleni le-VNC, kodwa lutho.

Kwaphinde kwangikhanyela!

Sibonga ubukhulu kakhulu incwadi UCharles Petzold Ngafunda ngokucophelela ukuthi izinqubo ze-Win32 zisebenza kanjani ngaphakathi kwesistimu. Lonke uhlelo lwe-Win32 lunefasitela kanye "nomugqa womlayezo". Imilayezo ecushwe ukusebenzisana komsebenzisi, kanye nemilayezo ethunyelwe yi-Windows ngokwayo, ifika kulayini, futhi uhlelo lokusebenza ngokwalo lunquma ukuthi luyicubungule kanjani.

Ayithakaseli kakhulu ngokwayo. Kodwa lapho ngibona ukuthi ulayini womlayezo omkhulu ngokwanele ongakacutshungulwa usebenze njenge-heuristic ye-Window Process Manager ukuthi ingenelele enqubweni elengayo, ngaqala ukujuluka i-serotonin emsulwa.

Ngaphandle kokumosha nomzuzwana, ngabuyela kukhodi yami engu-C, ngilungiselela ukuthumela omunye umlayezo efasiteleni elikhulu le-VNC WM_SHOWWINDOW. Emjikelezweni. Okuphakade. Ngakho, imiyalezo eminingi. WM_SHOWWINDOW, engangikwazi manje ukuthi i-VNC izozama ukuyiziba ngokuphelele... engozini yayo.

Ngihlanganise futhi ngasebenzisa u-4KB wekhodi ethanda inkululeko kakhulu yempilo yami. Ngemuva kwemizuzwana emithathu, iWindows ibike ukuthi inqubo vncserver.Π΅Ρ…Π΅ angaphenduli, futhi ngenze isithembiso engingeke ngikwazi ukwenqaba:

Uyafuna ukuqeda le nqubo?

HAYI YEBO!

Angivume ukuthi usuku lonke ngangijabule ngendlela engabekezeleleki ngami.

Ngemva kwamahora ambalwa engiwachithe ngigaya amandla ami amasha, nganquma ukuthi ngizowasebenzisa kanjani. Kwakulula kakhulu ukubulala iseshini phambi kwakhe. Ngaba nombono ongcono - ukunyamalala ngokuphelele.

ngemuva ubhapathizo lomlilo ngohlelo lwesokhethi Ngabona ukuthi ngingabhala ikhodi engenza izinto ezimbili. Izoqala ithathe imbobo ye-TCP 5900 esanda kukhululwa, ebikade isetshenziswa inqubo yeseva ye-VNC engenalwazi. Ngemuva kwalokho izodala uxhumano olusha lwe-TCP kuseva ye-VNC yomshini oshiwo. Ikhodi izovele ibambe iqhaza kuyo yonke idatha phakathi kwamasokhethi amabili, futhi u-Columbo uzocabanga ukuthi uxhuma kimi, kuyilapho empeleni uzobe exhuma kuseva ye-VNC ehluke ngokuphelele.

Ikhodi yami izosebenza njengebhuloho eliyimfihlo phakathi kwami ​​nomunye umphefumulo ompofu engiwukhethile. Kwakumnandi.

Ngokushesha ngaqala ukubhala ibhuloho lami le-VNC elingamanga. U-Columbo wangixhuma izikhathi eziningana, kodwa ngaqhubeka nokuhlela phambi kwakhe. Ngafinyelela esiphethweni sokuthi wayengazi ukuthi ngenzani, nakuba ngibhala izinto ezisobala njengezinombolo zamachweba nama-comments afana nawo // ΠŸΡ€ΠΎΡ‰Π°ΠΉ, ΠΆΡƒΡ‚ΠΊΠΈΠΉ шпион VNC.

Ngemva kwezinsuku ezimbalwa angikwazanga ukuthola ikhodi ukuthi isebenze kahle. Ukwenza izinto zibe zimbi kakhulu, bengisebenza cishe ngokuqhubekayo nesithonjana esimnyama se-VNC kuthreyi yesistimu. Ngenkathi ixhunyiwe, angikwazanga ukukhulula imbobo ukuze ngihlole ikhodi yami.

Ukube ngangazi ke netcat!

Ekugcineni, ngaphelelwa amandla, phela ngangiyinsizwa eneminyaka engu-17 ubudala engenasineke. Ngibuka isithonjana seseva emhlophe ye-VNC siphenduka sibe mnyama futhi, ngathuka, ngavula ikhodi yoqobo egcwele ulayini womlayezo, ngayigijimisa phambi kwamehlo akhe. Ngize ngalinda imizuzwana embalwa ngaphambi kokuchofoza End Process,ukwenza isiqiniseko sokuthi uyayibona.

Uma ukucindezela leyo nkinobho kungazange kungiqinisekise ngokugcwele ukuthi bekufanele, khona-ke egxuma esuka ngemuva kwenqaba yakhe yabaqaphi ukuze asondele kimi ngokushesha futhi angikhiphe ekamelweni ngokuqinisekile uyenzile.

Ngenxa yalokho, ngavinjelwa kunethiwekhi amasonto amabili. Ngacabanga isijeziso esifanele. Cishe ngemva kwamasonto amathathu, iseva ye-VNC yanyamalala emibhalweni yokuqalisa futhi ayizange ivele kwenye indawo. Angikaze ngazi ukuthi isigameko sami saba neqhaza yini kulokhu noma cha, kodwa sonakalise ngokuphelele uhlelo lwami lokuceba ngendlela emangalisayo ngokuthengisa isibhamu sami se-VNC kubafundi abacindezelekile emahholo ekhompyutha ekolishi ezweni lonke.

Source: www.habr.com

Engeza amazwana