Coder Battle: Me vs. That VNC Guy

В ity blog ity Betsaka ny tantara momba ny programmer navoaka. Tiako ny mampahatsiahy ny zavatra adalako taloha. Eny ary, misy tantara hafa toy izany.

Vao 11 taona teo ho eo aho no liana tamin’ny ordinatera, indrindra fa ny fandaharana. Tamin'ny fiandohan'ny sekoly ambaratonga faharoa bоNandany ny ankamaroan'ny fotoanako malalaka aho tamin'ny famakiana ny C64-ko ary nanoratra BASIC, avy eo nanapaka ny code ratsy tamin'ny hety. Tsy mivazivazy aho ry hety.

Aorian'ny fianarana (eo amin'ny 16 taona eo ho eo), matetika ny ankizy britanika dia mandeha any amin'ny oniversite, izay misafidy ny hianatra taranja telo na efatra alohan'ny hidirany any amin'ny oniversite. Noho ny fitiavako ny boaty beige sy ny horonam-peo tao an-trano, dia nanapa-kevitra aho fa ny fianarana “siansa informatika” any amin’ny oniversite no safidy tsara.

Nankafiziko mihoatra noho izay nantenaiko ilay fianarana; Tany aho no nihaona voalohany tamin’i Pascal sy Delphi.

Mandritra ny fiatoana eo anelanelan'ny kilasy dia afaka miasa amin'ny milina maimaim-poana ao amin'ny efitranon'ny solosaina ny mpianatra. Alaivo sary an-tsaina hoe: efitrano lehibe iray, natao ho an'ny olona zato teo ho eo, misy latabatra maromaro feno milina, toy ireo izay misy ny monitor eo amin'ny rafitra rafitra. Mitabataba tsy an-kijanona ny mpankafy, mitabataba eny ambony latabatra ny baolina totozy, tsy mijanona na dia iray segondra aza. Misy fofona hafahafa eny amin'ny rivotra, toy ny hoe ny zatovo hormonina 50-100 dia miova tsindraindray mba hampangatsiaka ny chips Pentium III an-jatony.

Na dia teo aza ny loza ara-pahasalamana, tiako ny nipetraka teo amin'ny ordinatera rehefa nanana minitra maimaim-poana.

Ny admin no nanao adidy tao amin'ny efitrano, lehilahy fohy, efa antitra izay voafidy ho amin'io andraikitra io noho ny faniriany tsy mety afa-po ho lasa mpanao didy jadona ratsy. Heveriko fa izany. Ny adidy dia tsy misy dikany; tena tia ny asany ilay lehilahy. Nasaina nitandrina ny filaminana izy mba tsy hisy hampiasa ny ordinateran’ny sekoly amin’ny zavatra tsy mety.

Hatramin'izao, ny intuition-ko dia milaza amiko fa ny tambin'ny admin dia miankina mivantana amin'ny isan'ny mpianatra nosamborin'ny tanany sy nentiny nivoaka ny efitrano informatika. Azoko antoka fa nandoa ny trosany aloha io lehilahy io.

Nipetraka teo amin'ny zoro farany amin'ny efitranon'ny ordinatera teo amin'ny latabatra an-jorony izy. Ary azo antoka ny hihevitra fa ny mpanara-maso ny fahavokarana azy dia nahita fomba hiterahana amin'ny vanim-potoanan'ny fitondrana vohoka tena fohy, be dia be izy ireo. Afaka manontany tena ihany ny olona raha tena nanam-potoana hanara-maso azy rehetra izy. Mazava ho azy fa manao vazivazy aho ... nilaza ve aho fa noraisiny ho matotra ny asany?

Tamin'izany fotoana izany, ny tambajotra solosaina dia mihazakazaka Windows 2000. Tsy ela aho dia nahita fa isaky ny miditra ao amin'ny rafitra aho dia natomboka ny script izay mamaritra ny fanombohana ny mpizara VNC avy amin'ny kaonty administratera ho an'ny fidirana lavitra amin'ny desktop. Isaky ny te-hitsikilo anao ity lehilahy ity dia mifandray mivantana amin'ny milinanao izy ary mijery. Nampihoron-koditra ilay izy, ary ankehitriny rehefa mieritreritra an'izany aho dia mety ho tsy ara-dalàna.

Rehefa nanapaka ny nifiko tamin'ny BASIC sy C64 aho dia nanoratra tamin'ny C ary na dia C++ kely aza. Tamin'izany fotoana izany dia tena liana tamin'ny fiteny D aho, izay nanitsy ny sasany amin'ireo lesoka amin'ny C++, araka ny hitako tamin'izany.

Niditra tao amin'ny efitranon'ny solosaina aho taloha mba hamaky zava-baovao ao amin'ny D na hilalao amin'ny compiler Digital Mars D. Indraindray, raha variana amin'ny fieritreretana momba ny hoavin'ny D aho, dia nanoratra kaody C aho mba hijirika ny programa Win32 hafa amin'ny varavarankely. mitantana.

Tamin'ny andro taloha tamin'ny fandaharana Win32, ny fitadiavana fikandrana varavarankely no fomba mora indrindra hametahana programa hafa. Mazava ho azy fa ny programa GUI rehetra amin'ny Windows dia manana varavarankely, na dia tsy miseho eo amin'ny efijery aza. Amin'ny alàlan'ny fanoratana programa iray haka ny tahony mankany amin'ny dingana hafa (raha ny tena izy dia rohy mankany aminy), azonao atao ny mandefa hafatra aminy. Izany dia nahafahan'ny asa fototra sasany toy ny fanafenana/fampisehoana varavarankely fandaharana, ary koa ny zavatra tena mahafinaritra toy ny fanerena dingana iray hampiditra DLL tsy misy dikany ao amin'ny habaka fitadidiny ary manomboka manatanteraka kaody. Taorian'ny fampidirana DLL dia nanomboka ny fahafinaretana.

Tamin'ny volana voalohany sy tapany dia tsy nanelingelina ahy loatra ity mpitsikilo ity, fa indray mandeha na indroa ihany no nifandray tamin'ny mpizara VNC tao amin'ny masiniko. Mety ho nahaliana azy anefa ny fivoriana iray manokana. Nanoratra kaody C aho mba hanafenana ny varavarankelin'ny Minesweeper (tsy hanidy azy ireo) mba hanamora ny filalaovana ao an-dakilasy, rehefa nahatsikaritra aho fa nivadika mainty ilay kisary VNC fotsy ao amin'ny lovia rafitra. Midika izany fa nijery ahy izy izao.

Nanohy nanao coding toy ny mahazatra aho, niezaka ny tsy hiraharaha azy. Nandritra izany fotoana izany, nanomboka nihena ny milina, niezaka ny hampita ny tahan'ny frame ambony indrindra amin'ny iray amin'ireo mpanara-maso tsy tambo isaina ao an-joron'ny efitrano. Saika tsy namaly intsony ny Windows, rehefa lany ny faharetana dia nivoaka aho ary nahavita ny andro.

Rehefa nitsidika ny efitranon’ny ordinatera i Colombo, dia tena liana tamin’izay ataoko saika isaky ny mandeha. Taorian'ny fanefatra teo ho eo, dia nanapa-kevitra aho hoe: mila manao zavatra momba izany aho.

Ekeko fa ny olona misaina sy misaina dia afaka nametraka an'io olana io mivantana taminy na tamin'ny lehibeny. Na izany aza, dia nilefitra foana tamin'ny fakam-panahy aho ary niresaka haingana ny tenako mba handray tetika hafa tanteraka.

- Tsy afaka manao na inona na inona ianao raha tsy misy ity mpizara VNC ity! — Niteny imbetsaka aho tamim-pahatoniana sy tapa-kevitra tamin'ny tenako.

Ilaina ny namono ny VNC.

Nanomboka niditra tao amin'ny efitranon'ny solosaina niaraka tamin'ny andiana mpianatra marobe aho ary nipetraka lavitra teo an-jorony niaraka tamin'ireo mpanara-maso araka izay azo atao. Niasa nandritra ny fotoana kelikely izany ary nanome ahy fotoana kely hitsapana hevitra.

Ny andrana voalohany nataoko, heveriko fa hanaiky ianao, dia tena malemy. Tsindrio havanana amin'ny kisary VNC ao amin'ny lovia rafitra, nahita sakafo misy litera majika EXIT aho. Indrisy anefa fa nosoratana tamin'ny soratra miloko volomparasy ireo litera. Nofoanan'ny mpitantana ny singa menu "Exit" tamin'ny alàlan'ny Tonian-dahatsoratry ny vondrona. Niezaka namono ny dingana avy amin'ny Task Manager aho, saingy mazava ho azy fa tsy hitako izany satria mandeha amin'ny kaonty hafa, manana tombontsoa bebe kokoa. Tsy nahomby izany.

Ny mpizara VNC dia mandeha amin'ny port TCP 5900, tadidiko. Ny tetikako manaraka dia ny handefa fonosana simba amin'ity seranana ity mba handrava azy.

Nandany andro vitsivitsy aho, fara fahakeliny, tamin'ny fikolokoloana ny protocol, nandefa endrika isan-karazany amin'ny fako voarafitra tsara ho any amin'ny seranan-tsambo 5900 ary manantena fa ho tapaka izany. Tsy nahomby koa izany tamin’ny farany.

Efa nanomboka nieritreritra aho fa tsy ho afaka hanala an'io zavatra io aho, rehefa tonga saina tampoka hoe: tsy maintsy misy varavarankely eo! Mila mampiseho izany isika. Mety hisy bokotra “Mute” be ranony mahafinaritra azoko ampiasaina tsara!

Nandeha ny kaody C saika tonga lafatra aho izao mba hahitana ny fikandrana mankany amin'ny varavarankelin'ny dingana hafa - ary azo antoka fa hita ny VNC. Nahatsapa fitaomam-panahy aho rehefa nitendry ny rantsantanako WM_SHOWWINDOW. Andramo ange ny zavatra hitako teo anoloako?

Tsy misy!

Ankehitriny dia liana aho... nisy varavarankely izy io, saingy tsy niraharaha ny hafatro. Nojereko indroa ny kaodinao mba hahazoana antoka fa miasa izany. Nanandrana izany tamin'ny dingana maro hafa ary niasa tsara. Nanandrana nandefa hafatra hafa tany amin'ny varavarankely VNC aho, nefa tsy nisy na inona na inona.

Ary avy eo dia tonga saina indray aho!

Misaotra ny tena matevina ny boky Charles Petzold Nandalina tsara ny fomba fiasan'ny Win32 ao anaty rafitra aho. Ny fampiharana Win32 rehetra dia manana varavarankely ary koa "filaharana hafatra". Tonga amin'ny filaharana ny hafatra ateraky ny fifandraisan'ny mpampiasa, ary koa ny hafatra nalefan'ny Windows, ary ny fampiharana mihitsy no manapa-kevitra ny fomba hikarakarana azy ireo.

Tsy dia mahaliana mihitsy. Saingy rehefa tsapako fa ny filaharana hafatra tsy voavolavola be dia be natao ho toy ny heuristic ho an'ny Window Process Manager mba hiditra an-tsehatra amin'ny dingana mihantona, dia tsemboka serotonine madio aho.

Tsy nandany segondra iray aho dia niverina tany amin'ny kaody C-ko, niomana handefa hafatra hafa amin'ny varavarankely VNC lehibe WM_SHOWWINDOW. Amin'ny tsingerina iray. Mandrakizay. Noho izany, maro ny hafatra. WM_SHOWWINDOW, izay fantatro ankehitriny fa hiezaka tsy hiraharaha tanteraka ny VNC... amin'ny loza aterany.

Nanangona sy nihazakazaka 4KB amin'ny fehezan-dalàna tia fahafahana indrindra teo amin'ny fiainako aho. Taorian'ny telo segondra teo ho eo, Windows dia nitatitra fa ny dingana vncserver.ехе tsy namaly, ary nanao tolotra izay tsy azoko nolavina tsotra izao:

Te hamita ity dingana ity ve ianao?

HELO ENY!

Ekeko fa nandritra ny andro sisa dia nahafaly ahy ny tenako.

Taorian'ny ora vitsivitsy nandaniako ny heriny vaovao, dia nanapa-kevitra ny hampiasako azy aho. Mora loatra ny namono fotsiny ny fivoriana teo anoloany. Nanana hevitra tsara kokoa aho - ny hanjavona tanteraka.

rehefa batisan'ny afo miaraka amin'ny fandaharana socket Tsapako fa afaka manoratra code izay hanao zavatra roa aho. Izy io dia hibodo voalohany ny seranan-tsambo TCP 5900 vao nafahana, izay nipetrahan'ny fizotry ny mpizara VNC tsy misy dikany. Avy eo dia hamorona fifandraisana TCP vaovao amin'ny mpizara VNC an'ny milina voatondro. Ny kaody dia hanao proxy fotsiny ny angon-drakitra rehetra eo amin'ireo socket roa, ary i Columbo dia hihevitra fa mifandray amiko izy, raha ny marina dia hifandray amin'ny mpizara VNC hafa tanteraka izy.

Ny code-ko dia ho toy ny tetezana miafina mampisaraka ahy sy ny fanahy mahantra hafa izay nofidiko. Nahafinaritra izany.

Nanomboka nanoratra ny tetezana VNC sandokako avy hatrany aho. Nifandray tamiko imbetsaka i Columbo, nefa nanohy nanao fandaharana teo anatrehany aho. Tonga tamin'ny fanatsoahan-kevitra aho fa tsy fantany izay nataoko, na dia nanoratra zavatra miharihary toy ny laharan'ny seranan-tsambo sy ny fanehoan-kevitra toy izany aza aho // Прощай, жуткий шпион VNC.

Rehefa afaka roa andro dia tsy afaka niasa tsara ny kaody. Ny tena ratsy kokoa dia niasa saika tsy tapaka niaraka tamin'ny kisary mainty VNC tao amin'ny lovia rafitra aho. Raha mbola mifandray izy io dia tsy afaka namoaka ny seranana aho mba hitsapana ny kaodinao.

Raha mba fantatro tamin'izay netcat!

Tamin'ny farany, dia nihena ny alaheloko, satria tovolahy 17 taona tsy nanam-paharetana aho. Nijery ilay kisary mpizara VNC fotsy mivadika mainty indray aho, dia gaga aho, nanokatra ny kaody tany am-boalohany izay nameno ny filaharana hafatra, ary nihazakazaka teo imasony. Niandry segondra vitsy aza aho vao nikitika End Process, mba hahazoana antoka fa hitany izany.

Raha toa ka tsy naharesy lahatra ahy tanteraka ny fanindriana an'io bokotra io fa mendrika izany, dia nitsambikina avy tao ambadiky ny masony mimanda izy mba hanatona ahy haingana sy hamoaka ahy ny efitrano.

Vokany, voarara tsy ho ao amin'ny tambajotra aho nandritra ny tapa-bolana. Famaizana ara-drariny, hoy aho. Taorian'ny telo herinandro teo dia nanjavona tao amin'ny script boot ny mpizara VNC ary tsy niseho na aiza na aiza. Tsy fantatro na oviana na oviana ny zava-nitranga tamiko na tsia, fa nanimba tanteraka ny tenako hanankarena be tamin'ny fivarotana ny basy VNC-ko tamin'ireo mpianatra ketraka tao amin'ny efitranon'ny ordinatera manerana ny firenena izany.

Source: www.habr.com

Add a comment