Şerê Koder: Ez li dijî Wê VNC Guy

В vê blogê Gelek çîrokên bernamesaz hatine weşandin. Ez hez dikim ku tiştên xwe yên ehmeqî yên kevn bi bîr bînim. Welê, li vir çîrokek din a weha heye.

Ez cara yekem di 11 saliya xwe de bi kompîturê, bi taybetî bi bernamesaziyê re eleqedar bûm. Di destpêka lîseyê de bоMin piraniya wextê xwe yê vala bi C64-a xwe re tine kir û BASIC dinivîsand, dûv re koda xirab bi maqeqan jê dikir. Ez henekê xwe nakim, maqeq.

Piştî dibistanê (nêzîkî 16 saliya xwe), zarokên Brîtanî bi gelemperî diçin zanîngehê, li wir tercîh dikin ku sê an çar mijaran bixwînin berî ku biçin zanîngehê. Ji ber hezkirina min ji bo qutiya bej û kasetek li malê, min biryar da ku xwendina "zanistiya komputerê" li zanîngehê bijareya rast bû.

Ez ji qursê bêtir ji min hêvî dikir kêfxweş bûm; li wir min cara yekem Pascal û Delphi nas kir.

Di dema navberên di navbera dersan de, xwendekar dikaribûn li odeya kompîturê li ser her makîneyek belaş bixebitin. Bifikirin: jûreyek mezin, ji bo bi qasî sed kesan hatî çêkirin, bi rêzên tabloyên ku bi makîneyan dagirtî ne, mîna yên ku çavdêr li ser yekîneya pergalê radiweste. Temaşevan tim diqehirin, gogên mişkan li ser maseyan diqelişin, saniyeyekê jî namînin. Di hewayê de bêhnek ecêb tê, mîna ku 50-100 ciwanên hormonal dem bi dem diguhezin da ku bi sedan çîpên Pentium III sar bikin.

Tevî xetereyên tenduristiyê, min hez dikir ku dema min deqeyek belaş hebû li ber komputerê rûnim.

Rêvebirê li jûreyê zilamek kurt û navsere bû ku ji bo vê rola xwe hate hilbijartin ji ber xwesteka xwe ya têrker ku bibe dîktatorek xerab. Ez wisa difikirim. Li ser peywirê kêmasî ye; mêrik bi rastî ji karê xwe hez dikir. Ew peywirdar bû ku rêzê bigire da ku kes komputera dibistanê ji bo tiştek negunca bikar neyîne.

Heya roja îro, têgihîştina min ji min re dibêje ku bonusa rêveber rasterast bi hejmara xwendekarên ku wî bi destê xwe girtin û ji jûreya computerê derxistin ve girêdayî bû. Ez pir bawer im ku vî zilamî zû deynê xwe daye.

Ew li quncikê dûr ê jûreya kompîturê li ber maseyek quncikê rûnişt. Û bi ewle bû ku meriv bihesibîne ku çavdêrên wî yên zayiniyê rêyek ji nû ve hilberandinê bi heyamek ducaniyê ya pir kurt de peyda kirine, ji wan gelek bûn. Meriv tenê dikare meraq bike gelo bi rastî wextê wî heye ku wan hemîyan bişopîne. Helbet ez henekê xwe dikim... min behs kir ku wî karê xwe pir cidî girtiye?

Wê demê, tora kompîturê Windows 2000-ê dimeşand. Min zû vedît ku her gava ku ez têkevim pergalê, skrîptek dest pê kir ku destnîşan kir ku servera VNC ji hesabê rêveberê ji bo gihîştina ji dûr a sermaseyê dest pê dike. Kengê ku vî zilamî bixwesta sîxuriyê li we bike, rasterast bi makîneya we ve girêdide û temaşe dike. Ew tirsnak bû, û naha ku ez li ser wê difikirim, dibe ku neqanûnî ye.

Piştî ku diranên xwe li ser BASIC û C64 birrîn, min naha bi C û hetta piçek C ++ jî nivîsî. Di wê demê de, ez hîn jî bi zimanê D-ê re pir eleqedar bûm, ku hin kêmasiyên C++-ê rast kirin, wekî ku min hingê dît.

Ez diçûm odeya kompîturê da ku li ser D tiştek nû bixwînim an jî bi berhevkarê dîjîtal Mars D re bilîzim. Carinan, dema ku ez ji fikirîna li ser paşeroja mezin a D-yê bala min dikişand, min koda C dinivîsî da ku bernameyên Win32 yên din di pencereya wan de hakim bikim. destikên.

Di rojên xweş ên bernamesaziya Win32 de, dîtina destikê pencereyê rêbaza herî hêsan bû ji bo hakkirina bernameyên din. Eşkere ye, hemî bernameyên GUI yên li ser Windows-ê pencereyek hebûn, her çend ew li ser ekranê xuya nebe. Bi nivîsandina bernameyek ji bo vegerandina pêvajoyek din (bi bingehîn girêdanek jê re), hûn dikarin jê re peyaman bişînin. Vê yekê destûr da ku hin operasyonên bingehîn ên mîna veşêrin/nîşandana pencereyek bernameyê, û her weha tiştên bi rastî xweş, mîna zorkirina pêvajoyek ku DLL-yek keyfî li cîhê bîranîna xwe bar bike û dest bi darvekirina kodê bike. Piştî derzîlêdana DLL, şahiyê dest pê kir.

Di meh û nîvê yekem de, vî detektîf ez zêde aciz nekirim; ew tenê yek an du caran bi servera VNC-ê ya li ser makîneya min ve girêda. Lê dibe ku yek danişînek taybetî eleqeya wî kişandibe. Min hin koda C dinivîsand da ku pencereyên Minesweeper veşêrim (bêyî girtina wan) da ku lîstika di polê de hêsantir bikim, gava min dît ku îkona spî ya VNC ya di pelika pergalê de reş bûye. Ev tê wê wateyê ku ew niha li min temaşe dikir.

Min kodkirina wekî her car berdewam kir, hewl da ku wî paşguh bikim. Di vê navberê de, makîneyê dest bi hêdîbûnê kir, hewl da ku rêjeya herî zêde ya çarçovê bigihîne yek ji çavdêrên bêhejmar li quncika odeyê. Windows hema bersiv rawestand, dema ku sebra min qediya, ez derketim û roj qedand.

Di serdanên paşîn ên jûreya komputerê de, Colombo hema hema her car eleqedar bû ku ez çi dikim. Piştî dora çaremîn, min biryar da: Divê ez li ser vê yekê tiştek bikim.

Ez qebûl dikim ku mirovek maqûl, maqûl dikaribû bi hêsanî vê pirsgirêkê rasterast bi wî an serokê xwe re ragihîne. Lêbelê, min her gav berê xwe da ceribandinê û zû bi xwe re peyivî ku stratejiyek bi tevahî cûda bipejirînim.

- Hûn nikarin bêyî vê servera VNC-ê tiştek bikin! — Min çend caran bi aramî û bi biryar ji xwe re got.

Pêwîst bû ku VNC were kuştin.

Min bi komên mezin ên xwendekaran re dest bi çûna odeya kompîturê kir û bi qasî ku pêkan bû ji quncikê dûr rûniştim. Ev ji bo demekê xebitî û hinek dem da min ku ez ramanan biceribînim.

Hewldana min a yekem, ez difikirim ku hûn ê bipejirînin, pir qels bû. Bi rast-klîkkirina li ser îkonê VNC-ê ya di pelika pergalê de, min menuyek bi tîpên sêrbaz EXIT dît. Mixabin, herf bi nivîsa gewr hatine nivîsandin. Rêvebir bi rêya Edîtorê Siyaseta Komê hêmana menuya "Derketin" neçalak kiriye. Min hewl da ku pêvajoyê ji Gerînendeyê Peywiran bikujim, lê bê guman ew ji min re nedîtî bû ji ber ku ew di bin hesabek cûda, bi îmtiyaztir de dimeşiya. Bi ser neket.

Pêşkêşkara VNC li ser porta TCP 5900 dimeşe, hat bîra min. Plana min a paşîn ev bû ku ez pakêtên xerabûyî bişînim vê portê da ku wê têk bibe.

Min bi kêmî ve çend roj bi protokolê re derbas kir, cûrbecûr cûrbecûr xeletiyên birêkûpêk şandin port 5900 û hêvî kir ku ew ê têk bibe. Di dawiyê de, ew jî nekarî.

Min jixwe dest pê kiribû ku ez bifikirim ku ez ê nikaribim ji vê tiştê xilas bibim, gava ku ji nişka ve li min rabû: Divê li wir pencereyek hebe! Divê em wê nîşan bidin. Dibe ku ew ê bişkokek xweş a xweş "Mute" hebe ku ez bikaribim pir bikar bînim!

Min koda xweya C-ya hema hema bêkêmasî da meşandin da ku destikê li pencereya sereke ya pêvajoyek din bibînim - û bê guman, VNC hate dîtin. Dema ku tiliyên min dinivîsandin min îlham girt WM_SHOWWINDOW. Biceribînin ku texmîn bikim ka min çi li ber xwe dît?

Netişt!

Naha min meraq dikir... pencereyek wê hebû, lê guh nedida peyamên min. Min koda xwe du caran kontrol kir da ku ez pê bawer bikim ku ew dixebite. Ew li ser gelek pêvajoyên din ceriband û ew pir xebitî. Min hewl da ku peyamên din ji pencereya VNC re bişînim, û hîn jî tiştek nebû.

Û dûv re dîsa bi min ve hat!

Bi saya pir qalind pirtûk Charles Petzold Min bi baldarî xwend ka pêvajoyên Win32 çawa di hundurê pergalê de dixebitin. Di her serîlêdana Win32 de pencereyek û hem jî "rênga peyamê" heye. Peyamên ku ji hêla danûstendina bikarhêner ve têne rêve kirin, û her weha peyamên ku ji hêla Windows-ê bixwe ve têne şandin, di rêzek de digihîjin, û serîlêdan bixwe biryarê dide ka meriv çawa wan pêvajoyê dike.

Bi serê xwe ne pir balkêş e. Lê gava ku min fêhm kir ku rêzek peyamek têra xwe mezin a nepêvajoyî ji bo Gerînendeyê Pêvajoya Paceyê wekî heurîstîk tevdigere da ku destwerdana pêvajoyek darvekirî bike, min dest bi serotonina paqij kir.

Bêyî ku saniyeyek wenda bikim, ez vegeriyam koda xweya C-yê, xwe amade dikim ku peyamek din bişînim pencereya sereke ya VNC WM_SHOWWINDOW. Di çerxekê de. Bêpaş. Ji ber vê yekê, gelek peyam. WM_SHOWWINDOW, ya ku min naha dizanibû ku VNC dê hewl bide ku bi tevahî paşguh bike ... di xetereya xwe de.

Min 4KB koda herî azadîxwaz a jiyana xwe berhev kir û xebitand. Piştî sê çirkeyan, Windows ragihand ku pêvajo vncserver.ехе bersiv nade, û pêşniyarek kir ku ez bi hêsanî nikarim red bikim:

Ma hûn dixwazin vê pêvajoyê temam bikin?

DOJEH ERÊ!

Bihêle ez bipejirînim ku heya roja mayî ez ji xwe bi awayekî bêserûber kêfxweş bûm.

Piştî çend demjimêrên ku ji bo vejandina hêza xweya nû ya super, min biryar da ku ez ê wê çawa bikar bînim. Pir hêsan bû ku meriv danişîna li pêşiya wî bikuje. Min ramanek çêtir hebû - bi tevahî winda bikim.

piştî vaftîzma agir bi bernameya soketê Min fêm kir ku ez dikarim kodek binivîsim ku dê du tiştan bike. Ew ê pêşî porta TCP-ya 5900-a nû-serbestkirî dagir bike, ku berê ji hêla pêvajoya servera VNC-ya bêaqil ve hatî dagir kirin. Dûv re ew ê pêwendiyek TCP-ya nû bi servera VNC ya makîneya diyarkirî re biafirîne. Kod dê bi tenê hemî daneyan di navbera her du soketan de proxy bike, û Columbo dê bifikire ku ew bi min ve girêdide, dema ku bi rastî ew ê bi serverek VNC-ya bi tevahî cûda ve girêbide.

Koda min dê wekî pirek veşartî di navbera min û giyanek belengaz ê bijartiya min de tevbigere. Ew ecêb bû.

Min tavilê dest bi nivîsandina pira xwe ya sexte ya VNC kir. Columbo çend caran bi min ve hat girêdan, lê min bername li ber wî domand. Ez gihîştim wê encamê ku wî nizanibû ez çi dikim, her çend min tiştên eşkere mîna hejmarên portê û şîroveyên mîna // Прощай, жуткий шпион VNC.

Piştî çend rojan min nikarîbû kodê rast bixebitim. Ji bo ku mesele xirabtir bibe, min hema hema bi domdarî bi îkona reş a VNC-ê ya di pelika pergalê de dixebitî. Dema ku ew ve girêdayî bû, min nekarî benderê berdim da ku koda xwe biceribînim.

Ger min wê demê bizanibûya netcat!

Di dawiyê de, demarên min ketin rê; her tiştî, ez xortek 17-salî bêsebir bûm. Dema ku îkona servera VNC ya spî dîsa reş dibe, temaşe kir, ez hejandim, koda orîjînal a ku rêza peyamê tijî dikir vekir û ew li ber çavên wî gerand. Ez tewra çend saniye li benda klîk mam End Process, tenê ji bo ku wî ew dît.

Ger pêlkirina wê bişkokê bi tevahî min îqna nekir ku hêjayî wê ye, wê gavê wî ji pişt kela xwe ya çavdêran bazda ku zû xwe nêzîkî min bike û min ji jûreyê derxîne bê guman ew kir.

Di encamê de ez ji bo du hefteyan ji torê hatim qedexekirin. Cezayek adil, ez fikirîm. Nêzîkî sê hefte, servera VNC ji nivîsarên bootê winda bû û qet li cîhek din xuya nedikir. Min çu carî nizanibû ku bûyera min di vê yekê de rolek lîst an na, lê wê pilana min bi tevahî xera kir ku bi firotana çeka xwe ya VNC ji xwendekarên depresyonê re li salonên kompîturê yên zanîngehê li çaraliyê welêt pilana min hilweşand ku ez pir dewlemend bibim.

Source: www.habr.com

Add a comment