Bete e Koduesve: Unë përballë atij djalit me VNC

Në këto blog Ka Д shumë tregime për programuesit. Më pëlqen të kujtoj budallalliqet e mia të vjetra. Ja një tjetër histori e tillë.

E për së pari u interesova për kompjuterët, veçanërisht për programimin, kur isha rreth 11 vjeç. Në fillim të shkollës së mesme...onë shumicën e kohës së lirë përleshja me C64 tim dhe shkrova në Basic, e pastaj e prenova kodin e keq me gërshërë. Nuk po shaka, me gërshërë..

Pas shkollës (në moshën rreth 16 vjeçare), fëmijët britanikë zakonisht shkojnë në kolegj, aty zgjidhin tri deri katër lëndë për të studiuar përpara se të shkojnë në universitet. Duke pasur parasysh dashurinë time për kutinë bejzë dhe magnetofonin në shtëpi, vendosa që të studioj "informatikë" në kolegj ishte zgjedhja e duhur.

Kursi më pëlqeu më shumë se ç'e prisja; aty u njoh për herë të parë me Pascalin dhe Delphi.

Në pushimet mes mbledhjeve, studentët mund të punonin në çdo kompjuter të lirë në sallën e kompjuterëve. Imagjinoni: një dhomë të madhe, që merr rreth njëqind persona, me rreshta tavolinash të mbushura me makina, si ato ku monitori është mbi njësinë centrale. Zhurma e vazhdueshme e ventilatorëve, topat e miut që lëvizin nëpër tavolina pa u ndalur as për një sekondë. Në ajër, një aromë e çuditshme, siç ndjehen 50-100 adoleshentë duke lëshuar hormone që periodikisht ndërronin për të ftohur qindra çipa Pentium III.

Pavarësisht rreziqeve për shëndetin, më pëlqente të qëndroja pas kompjuterit kur kishim një minutë të lirë.

Në dhomë kishte një admin, një burrë i shkurtër në moshë mesatare, i zgjedhur për këtë rol për shkak të dëshirës së tij të pakontrolluar për t'u bërë një diktator i keq. Mendoj se është e saktë. Dijej - është e thënë pak, ai djalë vërtet e donte punën e tij. I ishte ngarkuar të mbante rregull, që askush të mos e përdorte kompjuterin studimor për diçka të papërshtatshme.

Dhe deri më sot, intuicioni më thotë se shpërblimi i adminit varej drejtpërdrejt nga numri i studentëve që ai kapte dhe i nxirrte nga salla e kompjuterëve. Jam praktikisht i sigurt se ai djalë e shlyeu hipotekën e tij më herët.

Ai ishte ulur nĂ« kĂ«ndin e largĂ«t tĂ« sallĂ«s kompjuterike pas njĂ« tavoline tĂ« kĂ«ndshme. Dhe mund tĂ« supozohej me siguri se monitorĂ«t e tij tĂ« frytshĂ«m kishin gjetur njĂ« mĂ«nyrĂ« pĂ«r t'u shumuar me njĂ« periudhĂ« kalimtare befasuese — aq shumĂ« ishin. Mbeti vetĂ«m tĂ« spekulohej nĂ«se ai arrinte tĂ« monitoronte tĂ« gjithĂ« ata. Sigurisht, po bĂ«j shaka
 a e pĂ«rmenda se ai e merrte shumĂ« seriozisht punĂ«n e tij?

Në atë kohë, rrjeti kompjuterik funksiononte nën menaxhimin e Windows 2000. Shpejt e pashë se me secilin hyrje në sistem aktivizohej një skenar që parashikonte aktivizimin e serverit VNC me llogarinë e adminit për qasje të largët në desktop. Sa herë që ky djalë donte të vëzhgonte, ai lidhej drejtpërdrejt me makinën tuaj dhe shikonte. Kjo ishte e frikshme, dhe po mendoj tani, ndoshta e paligjshme.

Pas mësimit të programimit në Basic dhe C64, tani shkruaja në C dhe pak në C++. Në atë kohë, isha gjithashtu shumë i interesuar për gjuhën D, e cila rregullonte disa nga mangësitë e C++, ashtu siç e shihja atë atëherë.

Zakonisht hyja në sallën kompjuterike për të lexuar diçka të re për D ose për të luajtur me kompilatorin Digital Mars D. Ndonjëherë, duke shpëtuar nga mendimet rreth së ardhmes së madhe të D, shkruaja kod në C për të hacksuar programe të tjera Win32 përmes deshifruesve të dritareve të tyre.

NĂ« kohĂ«t e vjetra tĂ« programimit nĂ« Win32, kĂ«rkimi i njĂ« deshifruesi dritareje ishte metoda mĂ« e thjeshtĂ« pĂ«r tĂ« hacksuar programe tĂ« tjera. ËshtĂ« e qartĂ« se tĂ« gjitha programet me njĂ« ndĂ«rfaqe grafike nĂ« Windows kishin njĂ« dritare, edhe nĂ«se nuk shfaqej nĂ« ekran. Duke shkruar njĂ« program pĂ«r tĂ« nxjerrĂ« deshifruesin e njĂ« procesi tjetĂ«r (nĂ« thelb, njĂ« lidhje me tĂ«), mund tĂ« dĂ«rgoni mesazhe. Kjo lejonte disa operacione themelore, si fshehja / shfaqja e dritares sĂ« programit, si dhe disa gjĂ«ra tĂ« vĂ«rteta tĂ« kĂ«ndshme, pĂ«r shembull, tĂ« bĂ«ni qĂ« procesi tĂ« ngarkonte njĂ« DLL tĂ« rastĂ«sishme nĂ« hapĂ«sirĂ«n e saj tĂ« memories dhe tĂ« fillonte ekzekutimin e kodit. Pasi injektohej DLL, fillonte pjesa mĂ« interesante.

Në dy muajt e parë, ky detektiv nuk më shqetësoi veçanërisht, ai u lidh me serverin VNC në kompjuterin tim vetëm një ose dy herë. Por një seancë specifike, ndoshta, zgjoi interesin e tij. Isha duke shkruar ndonjë kod në C për të fshehur dritaret e Minesweeper (pa i mbyllur ato), për ta bërë më të lehtë lojën në klasë, dhe aty vura re se ikona e bardhë e VNC në sistemin e njoftimeve u bë e zezë. Kjo do të thoshte se tani ai po më vëzhgonte.

Vazhdoja të programoja si zakonisht, duke u përpjekur të mos i jap vëmendje. Ndërkohë, kompjuteri filloi të ngadalësohej ndjeshëm, duke u përpjekur të transmetonte frekuencën maksimale të kornizave në një nga ekranet e shumëfishta në qoshen e dhomës. Windows pothuajse nuk reagonte, kur durimi im u shkatërrua, dolëm nga sistemi dhe përfundova për sot.

Gjatë vizitave të ardhshme në sallën e kompjuterëve, Kolombo tregonin një interes të dukshëm për atë që po bëja çdo herë. Rreth herës së katërt vendosa: kjo duhet të rregullohet.

Pranoj se një person i arsyeshëm dhe racional mund të kishte ngritur këtë çështje direkt me të ose me shefin e tij. Megjithatë, gjithmonë kam rënë pre e dëshpërimit dhe shpejt e bindja veten të zgjedh një strategji plotësisht të ndryshme.

— Ti nuk do tĂ« jesh nĂ« gjendje tĂ« bĂ«sh asgjĂ« pa kĂ«tĂ« server VNC! — thashĂ« qetĂ«sisht me vendosmĂ«ri disa herĂ«.

Duhej ta vrisja VNC.

Fillova të hyja në sallën e kompjuterëve me grupe të mëdha studentësh dhe ulesha sa më larg nga qoshea me monitorët. Kjo ka funksionuar për një kohë dhe më dha pak kohë për të provuar ide të ndryshme.

Përpjekja ime e parë, mendoj se do të pajtoheshit, ishte mjaft e dobët. Klikova me të djathtën mbi ikonën e VNC në sistemin e njoftimeve dhe pashë një menu me shkronja magjike E-X-I-T. Fatkeqësisht, shkronjat ishin të shkruara me tekst të errët. Administratori kishte çaktivizuar opsionin e menusë 'Dale' përmes editorit të politikave të grupit. Përpiqesha të vrisja procesin nga Menaxheri i Detyrave, por, sigurisht, ai ishte i padukshëm për mua, pasi punonte nën një llogari tjetër, më me privilegje. Asgjë nuk funksionoi.

Serveri VNC funksionon në portin TCP 5900, më kujtoi. Plani im i ardhshëm përfshinte dërgimin e paketave të dëmtuara në këtë port, për ta zhvatuar.

Pas të paktën disa ditë, përpiqesha të deshifroja protokollin, duke dërguar në portin 5900 forma të ndryshme të strukturës së keqe dhe duke shpresuar se do të dështonte. Në fund të fundit, kjo nuk funksionoi as.

Ishte duke u menduar se nuk do të mundja të shpëtoja nga ky rast, kur më ra në mendje: aty duhet të ketë një dritare! Duhet ta shfaqim atë. Ndoshta aty do të ketë një buton të mahnitshëm 'Fiku', që do ta përdorja për diçka të mirë!

MĂ« nĂ« fund, lançova kodin tim tashmĂ« pothuajse tĂ« pĂ«rsosur nĂ« C pĂ«r tĂ« kĂ«rkuar pĂ«r njĂ« handle tĂ« dritares kryesore tĂ« njĂ« procesi tjetĂ«r – dhe vĂ«rtetĂ« gjeti VNC. Ndjeva njĂ« entuziazĂ«m kur gishti im shtypi WM_SHOWWINDOW. Provoni tĂ« gjeni se çfarĂ« pashĂ« pĂ«rpara meje?

Asgjë!

Tani më bëri kurioz
 kishte një dritare, por ajo injoronte mesazhet e mia. E kontrollova dy herë kodin tim për të siguruar që po funksiononte. E testova në disa procese të tjerë dhe ai funksionoi shkëlqyeshëm. Provova të dërgoj në dritaren e VNC mesazhe të tjera, dhe përsëri asgjë.

Dhe pastaj më ra përsëri në mendje!

FalĂ« njĂ« libri shumĂ« tĂ« trashĂ« librit tĂ« Charles Petzold, studova me kujdes se si funksionojnĂ« proceset Win32 brenda sistemit. Çdo aplikacion Win32 ka njĂ« dritare, si dhe njĂ« 'radhĂ« mesazhesh'. Mesazhet qĂ« shkaktohen nga ndĂ«rveprimi me pĂ«rdoruesin, si dhe mesazhet e dĂ«rguara nga vetĂ« Windows, hyjnĂ« nĂ« radhĂ«, dhe vetĂ« aplikacioni vendos se si t'i trajtojĂ« ato.

Nuk është shumë interesant në vetvete. Por kur e kuptova që një radhë mesazhesh e pabër ndihmonte si një heuristik për ndërhyrjen në një proces të bllokuar nga menaxheri i proceseve të Windows, ndjeva një shpërfillje të pastër serotonin.

Pa humbur asnjĂ« sekondĂ«, u ktheva nĂ« kodin tim nĂ« C, gati pĂ«r tĂ« dĂ«rguar nĂ« dritaren kryesore tĂ« VNC njĂ« mesazh tjetĂ«r WM_SHOWWINDOW. NĂ« njĂ« cikĂ«l. NĂ« njĂ« tĂ« pĂ«rjetshĂ«m. Pra, shumĂ« mesazhe WM_SHOWWINDOW, tĂ« cilat, siç e dija tani, VNC do tĂ« pĂ«rpiqej t'i injoronte krejtĂ«sisht
 me riskun e tij.

Kompilova dhe lançova 4 KB të kodit më rebel në jetën time. Rreth tre sekonda më vonë, Windows raportoi se procesi vncserver.exe nuk po përgjigjej dhe bëri një ofertë që nuk mund të refuzoja:

Doni të përfundoni këtë proces?

Dreq, PO!

Lejoni të pranoj se pjesa tjetër e ditës isha jashtëzakonisht i kënaqur me veten.

Pas disa orĂ«sh tĂ« kaluar nĂ« pĂ«rpunimin e superfuqisĂ« sime tĂ« re, vendosa se si do ta pĂ«rdor. Thjesht tĂ« vras sesionin pĂ«rballĂ« tij ishte shumĂ« e lehtĂ«. Kisha njĂ« ide mĂ« tĂ« mirĂ« – tĂ« zhdukem fare.

Pas betejës së parë me programimin e soketeve kuptova se mund të shkruaj një kod që do të bënte dy gjëra. Së pari, do të merrte një port TCP 5900 të sapoçliruar, i cili më parë ishte i zënë nga një proces të paedukatë të serverit VNC. Pastaj do të krijonte një lidhje të re TCP me serverin VNC të makinës së caktuar. Kodi do të thjesht proksiononte të dhënat mes dy soketeve, dhe Kolombo do të mendojë se po lidhej me mua, kur në të vërtetë po lidhej me një server VNC krejt tjetër.

Kodi im do të vepronte si një urë sekrete midis meje dhe ndonjë shpirt të varfër sipas zgjedhjes sime. Ishte perfekte.

MenjĂ«herĂ« fillova tĂ« shkruaj urĂ«n time false VNC. Kolombo u lidh disa herĂ« me mua, por unĂ« vazhdova tĂ« programoja pĂ«rballĂ« tij. Arrita nĂ« pĂ«rfundimin se ai nuk kishte asnjĂ« ide pĂ«r veprimet e mia, megjithĂ«se po shkruaja gjĂ«ra tĂ« dukshme, si numrat e porteve dhe komente si // ĐŸŃ€ĐŸŃ‰Đ°Đč, Đ¶ŃƒŃ‚ĐșĐžĐč ŃˆĐżĐžĐŸĐœ VNC.

Pas disa ditĂ«sh, nuk mundesha ta bĂ«ja kodin tĂ« punonte siç duhet. ÇfarĂ«do qĂ« ishte mĂ« keq, po punoja pothuajse vazhdimisht me ikonĂ«n e zezĂ« tĂ« VNC nĂ« tasin e sistemit. NdĂ«rsa ishte e lidhur, nuk mund tĂ« çlironim portin pĂ«r tĂ« kontrolluar kodin tim.

Po të dija atëherë për netcat!

Në fund, nervat nuk e mbajtën, megjithatë isha një djalë 17-vjeçar i paduruar. Ndërsa shihja përsëri si ikona e bardhë e serverit VNC bëhej e zezë, u zemërova, hapa kodin origjinal që mbushte radhën e mesazheve dhe e ekzekutova përballë tij. Madje, prisja disa sekonda para se të klikoj End Process, thjesht për të siguruar që ai e pa atë.

Nëse shtypja e kësaj butoni nuk më kishte bindur plotësisht se ia vlente, atëherë kërcimi i tij nga fortesa e monitorëve, për t'u afruar shpejt me mua dhe për të më nxjerrë jashtë dhomës, me siguri ia vlente.

Në fund më u ndalua qasje në rrjet për dy javë. E mendoj një dënim të drejtë, mendova unë. Rreth tre javësh, serveri VNC u zhduk nga skriptet e ngarkesës dhe nuk u shfaq më askund. Ndonëse nuk e munda të kuptoj nëse incidenti im luajti ndonjë rol në këtë apo jo, ai e shkatërroi plotësisht planin tim të pasurimit magjik duke shitur armën time VNC studentëve të shtypur në sallat e kompjuterëve të kolegjeve në të gjithë vendin.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster