Coder Battle: ʻO wau me kēlā VNC Guy

В kēia blog Ua paʻi ʻia kekahi mau moʻolelo programmer. Makemake au e hoʻomanaʻo i kaʻu mau mea lapuwale kahiko. ʻAe, eia kekahi moʻolelo like.

Ua makemake mua au i ka lolouila, ʻoi aku ka hoʻonohonoho ʻana, i ka piha ʻana o koʻu mau makahiki he 11. I ka hoʻomaka ʻana o ke kula kiʻekiʻe bоUa hoʻohana au i ka hapa nui o koʻu manawa kūʻokoʻa me kaʻu C64 a kākau i ka BASIC, a laila ʻoki i ke code hewa me nā ʻoki. ʻAʻole wau e ʻakaʻaka, ʻoki.

Ma hope o ke kula (ma kahi o 16 makahiki), hele pinepine nā keiki Pelekāne i ke kulanui, kahi e koho ai lākou e aʻo i ʻekolu a ʻehā mau kumuhana ma mua o ka hele ʻana i ke kulanui. Ma muli o koʻu aloha i ka pahu beige a me ka tape recorder ma ka home, ua hoʻoholo wau ʻo ke aʻo ʻana i ka "ʻepekema kamepiula" ma ke kulanui ʻo ia ke koho kūpono.

Ua hauʻoli au i ka papa ma mua o kaʻu i manaʻo ai; Ma laila au i ʻike mua ai iā Pascal lāua ʻo Delphi.

I ka wā hoʻomaha ma waena o nā papa, hiki i nā haumāna ke hana i kekahi mīkini manuahi ma ka lumi kamepiula. E noʻonoʻo: he lumi nui, i hoʻolālā ʻia no kahi haneli poʻe, me nā lālani o nā papa i hoʻopiha ʻia me nā mīkini, e like me nā mea i kū ai ka monitor ma ka ʻōnaehana ʻōnaehana. Ke kani mau nei ka poʻe pā, ke kani nei nā pōlele ʻiole ma luna o nā papa ʻaina, ʻaʻole kū i kekona. Aia kekahi ʻala ʻē aʻe i ka lewa, me he mea lā he 50-100 mau ʻōpio hormonal e hoʻololi i kēlā me kēia manawa e hōʻoluʻolu i nā haneli Pentium III.

ʻOiai nā pilikia olakino, makemake au e noho ma ke kamepiula ke loaʻa iaʻu kahi minuke kaʻawale.

ʻO ka luna hoʻomalu ma ke keʻena he kanaka pōkole, waena o ka makahiki i koho ʻia no kēia kuleana ma muli o kona makemake ʻole e lilo i dictator ʻino. Manaʻo wau pēlā. He haʻahaʻa loa ka hana; makemake nui ke kanaka i kāna hana. Ua hoʻokau ʻia ʻo ia i ka mālama ʻana i ʻole e hoʻohana kekahi i ke kamepiula kula no kekahi mea kūpono ʻole.

A hiki i kēia lā, haʻi mai koʻu intuition iaʻu ua hilinaʻi pololei ka bonus a ke admin i ka helu o nā haumāna āna i hopu ai i ka lima a alakaʻi ʻia i waho o ka lumi kamepiula. Ua maopopo ia'u ua uku mua keia kanaka i kana moraki.

Noho ʻo ia ma ke kihi loa o ka lumi kamepiula ma kahi pākaukau kihi. A he mea palekana ka manaʻo ua loaʻa i kāna mau mea mālama hānai kahi ala e hoʻohua ai me ka manawa pōkole pōkole, ua nui loa lākou. Hiki i kekahi ke noʻonoʻo inā loaʻa iā ia ka manawa e mālama ai iā lākou a pau. ʻOiaʻiʻo, he ʻakaʻaka wau... ua ʻōlelo anei au ua hana koʻikoʻi ʻo ia i kāna hana?

I kēlā manawa, e holo ana ka pūnaewele kamepiula i ka Windows 2000. Ua ʻike koke wau i kēlā me kēia manawa aʻu i komo ai i loko o ka ʻōnaehana, ua hoʻomaka ʻia kahi palapala e hoʻomaka ana i ka server VNC mai ka moʻokāki luna no ke komo mamao i ka papapihi. I kēlā me kēia manawa e makemake ai kēia kanaka e kiu iā ʻoe, hoʻopili pololei ʻo ia i kāu mīkini a nānā. He mea weliweli ia, a i kēia manawa ke noʻonoʻo nei au iā ia, he kānāwai ʻole paha.

I ka ʻoki ʻana i koʻu mau niho ma BASIC a me C64, ua kākau wau i kēia manawa ma C a me kahi C++ liʻiliʻi. I kēlā manawa, makemake nui au i ka ʻōlelo D, nāna i hoʻoponopono i kekahi o nā hemahema o C++, e like me kaʻu i ʻike ai i kēlā manawa.

Ua hele au i loko o ka lumi kamepiula e heluhelu i kekahi mea hou ma D a i ʻole e pāʻani me ka mea hōʻuluʻulu Digital Mars D. I kekahi manawa, ʻoiai ua hoʻohiolo au i ka noʻonoʻo ʻana i ka wā e hiki mai ana o D, ua kākau wau i ka code C e hack i nā polokalamu Win32 ʻē aʻe ma o kā lākou pukaaniani. lima lima.

I nā lā kahiko o Win32 programming, ʻo ka loaʻa ʻana o ka puka makani ke ala maʻalahi loa e hack i nā papahana ʻē aʻe. ʻIke loa, he puka makani nā polokalamu GUI āpau ma Windows, ʻoiai inā ʻaʻole ia i ʻike ʻia ma ka pale. Ma ke kākau ʻana i kahi papahana e kiʻi i kahi lima i kahi kaʻina hana ʻē aʻe (ma ke ʻano he loulou i laila), hiki iā ʻoe ke hoʻouna i nā leka iā ia. Ua ʻae kēia i kekahi mau hana maʻamau e like me ka hūnā / hōʻike ʻana i kahi puka makani papahana, a me nā mea ʻoluʻolu loa e like me ke koi ʻana i kahi kaʻina hana e hoʻouka i kahi DLL kūʻokoʻa i loko o kāna wahi hoʻomanaʻo a hoʻomaka e hoʻokō i ke code. Ma hope o ka hoʻokomo DLL, hoʻomaka ka leʻaleʻa.

I ka mahina mua a me ka hapa, ʻaʻole i hoʻopilikia nui kēia mea ʻike iaʻu; pili ia i ka server VNC ma kaʻu mīkini hoʻokahi a ʻelua wale nō. Akā, ua hoʻopiʻi paha kekahi hālāwai kūikawā i kona hoihoi. Ke kākau nei au i kekahi code C e hūnā i nā puka makani Minesweeper (me ka ʻole o ka pani ʻana iā lākou) i mea e maʻalahi ai ka pāʻani ma ka papa, i koʻu ʻike ʻana ua ʻeleʻele ke kiʻi VNC keʻokeʻo i loko o ka pā ʻōnaehana. ʻO ia hoʻi ke nānā mai nei ʻo ia iaʻu.

Ua hoʻomau au i ka coding e like me ka mea maʻamau, e hoʻāʻo nei e haʻalele iā ia. I kēia manawa, ua hoʻomaka ka mīkini e lohi, e ho'āʻo ana e hoʻouna i ka helu kiʻekiʻe loa i kekahi o nā mākaʻikaʻi lehulehu ma ke kihi o ka lumi. ʻaneʻane pau ka pane ʻana o Windows, i ka pau ʻana o koʻu hoʻomanawanui, ua haʻalele wau a hoʻopau i ka lā.

Ma nā mākaʻikaʻi ma hope o ka lumi lolouila, makemake nui ʻo Colombo i nā mea aʻu e hana nei kokoke i kēlā me kēia manawa. Ma hope o ka hā o ka manawa, ua hoʻoholo wau: pono wau e hana i kekahi mea e pili ana i kēia.

Ke ʻae nei au ua hiki i kahi kanaka kūpono a noʻonoʻo ke hoʻopuka pololei i kēia pilikia me ia a i kona luna. Akā naʻe, hāʻawi mau wau i ka hoʻowalewale a kamaʻilio koke wau iaʻu iho i ka hana ʻana i kahi hoʻolālā ʻokoʻa loa.

- ʻAʻole hiki iā ʻoe ke hana i kekahi mea me ka ʻole o kēia kikowaena VNC! — Ua ʻōlelo mālie a hoʻoholo wau iaʻu iho i nā manawa he nui.

Pono e pepehi iā VNC.

Ua hoʻomaka wau e hele i loko o ka lumi kamepiula me nā hui nui o nā haumāna a noho i kahi mamao loa mai ke kihi me nā mea nānā e like me ka hiki. Ua hana kēia no kekahi manawa a hāʻawi iaʻu i kekahi manawa e hoʻāʻo i nā manaʻo.

ʻO kaʻu hoʻāʻo mua, manaʻo wau e ʻae ʻoe, ua nāwaliwali loa. ʻO ke kaomi ʻana i ka VNC icon ma ka pā ʻōnaehana, ʻike wau i kahi papa kuhikuhi me nā leka kilokilo EXIT. ʻO ka mea pōʻino, ua kākau ʻia nā leka ma kahi kikokikona outline hina. Ua hoʻopau ka luna hoʻomalu i ka mea koho "Exit" ma o ka Group Policy Editor. Ua ho'āʻo wau e pepehi i ke kaʻina hana mai ka Task Manager, akā ʻoiaʻiʻo, ʻaʻole ʻike ʻia iaʻu no ka mea e holo ana ia ma lalo o kahi moʻokāki ʻē aʻe. ʻAʻole pono.

Ke holo nei ke kikowaena VNC ma TCP port 5900, hoʻomanaʻo wau. ʻO kaʻu hoʻolālā aʻe e hoʻouna i nā ʻeke ʻino i kēia awa i mea e hāʻule ai.

Ua hoʻohana au i kekahi mau lā ma ke ʻano o ka protocol, e hoʻouna ana i nā ʻano like ʻole o ka crap i hoʻonohonoho pono ʻia i ke awa 5900 a me ka manaʻolana e haki. I ka hopena, ʻaʻole i hana kēlā.

Ua hoʻomaka wau e noʻonoʻo ʻaʻole hiki iaʻu ke hoʻopau i kēia mea, i ka wā i ʻike koke ʻia ai iaʻu: aia he puka makani ma laila! Pono mākou e hōʻike. Loaʻa paha iā ia kahi pihi "Mute" maikaʻi a hiki iaʻu ke hoʻohana nui!

Ua holo wau i kaʻu code C kokoke loa i kēia manawa e ʻike i ka lima i ka puka makani nui o kahi kaʻina hana ʻē aʻe - a ʻoiaʻiʻo, ua loaʻa ʻo VNC. Ua hoʻoikaika au i ka paʻi ʻana o koʻu mau manamana lima WM_SHOWWINDOW. E hoʻāʻo e kuhi i kaʻu mea i ʻike ai i mua oʻu?

ʻAʻohe mea!

I kēia manawa, ua ʻike au ... he puka makani kona, akā ke nānā ʻole nei i kaʻu mau memo. Ua nānā pālua au i kaʻu code e ʻike pono i ka hana. Ua hoʻāʻo ʻia ma nā kaʻina hana ʻē aʻe a ua hana maikaʻi. Ua ho'āʻo wau e hoʻouna i nā leka ʻē aʻe i ka pukaaniani VNC, ʻaʻohe mea.

A laila ua ʻike hou mai iaʻu!

Mahalo i ka mānoanoa loa ka puke Charles Petzold Ua aʻo pono au i ka hana ʻana o Win32 i loko o ka ʻōnaehana. Loaʻa i kēlā me kēia noi Win32 kahi puka aniani a me kahi "queue memo". ʻO nā memo i hoʻoulu ʻia e ka launa pū ʻana o ka mea hoʻohana, a me nā memo i hoʻouna ʻia e Windows ponoʻī, hiki i kahi pila, a na ka noi ponoʻī e hoʻoholo pehea e hana ai.

ʻAʻole hoihoi loa iā ia iho. Akā, i koʻu ʻike ʻana he nui ka nui o ka laina memo i hana ʻole ʻia ma ke ʻano he heuristic no Window Process Manager e komo i loko o kahi kaʻina hana i kau ʻia, hoʻomaka wau e hoʻomaʻemaʻe i ka serotonin maʻemaʻe.

Me ka pau ʻole o kekona, ua hoʻi au i kaʻu code C, e hoʻomākaukau ana e hoʻouna i kahi leka hou i ka pukaaniani VNC nui WM_SHOWWINDOW. I ka pōʻaiapuni. mau loa. No laila, nui nā memo. WM_SHOWWINDOW, ka mea aʻu i ʻike ai i kēia manawa e hoʻāʻo ʻo VNC e haʻalele loa ... i kona pōʻino.

Ua hōʻuluʻulu a holo au i 4KB o ka code aloha kūʻokoʻa loa o koʻu ola. Ma hope o ʻekolu kekona, ua hōʻike ʻo Windows i ke kaʻina hana vncserver.ехе ʻaʻole i pane, a hāʻawi mai i kahi hāʻawi i hiki ʻole iaʻu ke hōʻole:

Makemake ʻoe e hoʻopau i kēia kaʻina hana?

HELE ʻAe!

E ʻae mai iaʻu no ke koena o ka lā ua hauʻoli nui wau iaʻu iho.

Ma hope o kekahi mau hola e hoʻopau ai i kaʻu mana hou, ua hoʻoholo wau pehea e hoʻohana ai. He mea maʻalahi loa ke pepehi wale i ke kau i mua pono ona. He manaʻo maikaʻi koʻu - e nalowale loa.

ma hope o ka bapetizo ʻana i ke ahi me ka hoʻonohonoho kumu Ua ʻike wau hiki iaʻu ke kākau i nā code e hana i nā mea ʻelua. E noho mua ia i ka port TCP 5900 hou i hoʻokuʻu ʻia, i noho mua ʻia e ke kaʻina kikowaena VNC clueless. A laila e hana ia i kahi pilina TCP hou i ka server VNC o ka mīkini i kuhikuhi ʻia. E hoʻopili wale ke code i nā ʻikepili āpau ma waena o nā kumu ʻelua, a manaʻo ʻo Columbo e pili ana ʻo ia iaʻu, inā ʻoiaʻiʻo e hoʻopili ʻo ia i kahi kikowaena VNC ʻokoʻa loa.

E lilo kaʻu code i alahaka huna ma waena oʻu a me kekahi ʻuhane ʻilihune ʻē aʻe aʻu e koho ai. He mea kupanaha.

Ua hoʻomaka koke wau e kākau i kaʻu alahaka VNC hoʻopunipuni. Ua pili ʻo Columbo iaʻu i nā manawa he nui, akā ua hoʻomau wau i ka papahana i mua ona. Ua hiki au i ka hopena ʻaʻole ʻo ia i ʻike i kaʻu e hana nei, ʻoiai ua kākau wau i nā mea maopopo e like me nā helu port a me nā ʻōlelo like // Прощай, жуткий шпион VNC.

Ma hope o ʻelua mau lā ʻaʻole hiki iaʻu ke hana pololei i ke code. I mea e ʻoi aku ka maikaʻi, ua hana mau wau me ka ʻeleʻele VNC icon ma ka pā ʻōnaehana. ʻOiai ua pili ʻia, ʻaʻole hiki iaʻu ke hoʻokuʻu i ke awa e hoʻāʻo i kaʻu code.

Ina au i ike ia wa netcat!

I ka hopena, ua hāʻule koʻu mau aʻalolo; ma hope o nā mea a pau, he kanaka hoʻomanawanui ʻole wau he 17 makahiki. Ke nānā aku nei i ka keʻokeʻo VNC kikowaena ikona huli ʻeleʻele hou, au freaked mai, wehe i ka kumu code i populated ka memo queue, a holo ia i mua o kona mau maka. Ua kali au i kekahi mau kekona ma mua o ke kaomi ʻana End Process, i mea e maopopo ai ua ike ia.

Inā ʻaʻole i maopopo iaʻu ke kaomi ʻana i kēlā pihi he kūpono ia, a laila lele ʻo ia mai hope o kona pā kaua o nā kiaʻi e hoʻokokoke koke mai iaʻu a hoʻokuʻu iaʻu i waho o ka lumi.

ʻO ka hopena, ua pāpā ʻia au mai ka pūnaewele no ʻelua pule. He hoʻopaʻi kūpono, manaʻo wau. Ma hope o ʻekolu pule, ua nalowale ke kikowaena VNC mai nā palapala boot a ʻaʻole i ʻike ʻia ma kahi ʻē aʻe. ʻAʻole au i ʻike inā he kuleana koʻu hana i kēia a ʻaʻole paha, akā ua hōʻino loa ia i kaʻu hoʻolālā e waiwai nui ma ke kūʻai ʻana i kaʻu pū VNC i nā haumāna kaumaha ma nā keʻena kamepiula koleke a puni ka ʻāina.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka