Coder Battle: Me vs That VNC Guy

В stu bloggu Sò stati publicati uni pochi di storie di programatori. Mi piace à ricurdà i mo vechji stupidi. Ebbè, eccu un altru tali storia.

Mi interessa prima di l'urdinatori, in particulare di prugrammazione, quandu eru circa 11 anni. À u principiu di u liceu bоAghju passatu a maiò parte di u mo tempu libaru cù u mo C64 è scrivite BASIC, dopu tagliate u codice male cù forbici. Ùn scherzu micca, forbici.

Dopu à a scola (intornu à l'età di 16), i zitelli britannichi di solitu vanu à l'università, induve sceglienu di studià trè o quattru materie prima di andà à l'università. Data u mo amore per a scatula beige è u registratore in casa, aghju decisu chì studià "informatica" in l'università era a scelta bona.

Aghju piaciutu u corsu più di ciò chì m'aspittava; culà aghju cunnisciutu prima Pascal è Delfi.

Durante i pause trà e classi, i studienti puderanu travaglià in ogni macchina libera in a sala di l'informatica. Immaginate: una stanza enormosa, pensata per circa un centu di persone, cù fila di tavulini pieni di machini, cum'è quelli induve u monitor si trova nantu à l'unità di sistema. I fanni sò constantemente canticchiati, i boli di i mouse buzzannu nantu à i tavulini, ùn si fermanu per un secondu. Ci hè un odore stranu in l'aria, cum'è se 50-100 adulescenti hormonali sò cambiati periodicamente per rinfriscà centinaie di chips Pentium III.

Malgradu i risichi per a salute, mi piace à pusà à l'urdinatore quandu aghju avutu un minutu liberu.

L'amministratore di turnu in a stanza era un omu di corta età, chì hè statu sceltu per questu rolu per via di a so vulintà insaziabile di diventà un dittatore male. Supponu cusì. À u turnu hè un eufemimentu; u tippu amava veramente u so travagliu. Hè statu incaricatu di mantene l'ordine per chì nimu ùn usava l'urdinatore di a scola per qualcosa inappropriatu.

Finu à questu ghjornu, a mo intuizione mi dice chì u bonus di l'amministratore dipende direttamente da u numeru di studienti chì hà pigliatu da a manu è scorta fora di a sala di l'informatica. Sò abbastanza sicuru chì questu tippu hà pagatu a so ipoteca prima.

Si pusò in u cantonu luntanu di a sala di l'informatica à un tavulinu d'angulu. È era sicuru d'assume chì i so monitori di fertilità anu truvatu un modu di ripruduce cù un periodu di gestazione impressiunantemente curtu, ci eranu tanti di elli. On ne pouvait que se demander s'il avait vraiment le temps de les suivre tous. Di sicuru, scherzu... aghju dettu ch'ellu hà pigliatu u so travagliu assai seriu ?

À quellu tempu, a reta di l'informatica era Windows 2000. Prestu scupertu chì ogni volta ch'e aghju cunnessu in u sistema, un script hè stata lanciata chì specificava principià u servore VNC da u contu amministratore per l'accessu remotu à u desktop. Ogni volta chì stu tippu vulia spia à voi, hà da cunnette direttamente à a vostra macchina è fighjulà. Era terrificante, è avà chì ci pensu, probabilmente illegale.

Dopu avè tagliatu i denti nantu à BASIC è C64, aghju scrittu avà in C è ancu un pocu C++. À quellu tempu, era sempre assai interessatu in a lingua D, chì hà currettu alcuni di i difetti di C++, cum'è l'aghju vistu allora.

Aghju avutu per andà in a sala di l'informatica per leghje qualcosa di novu nantu à D o ghjucà cù u compilatore Digital Mars D. A volte, mentre era distrattu da pensà à u grande futuru di D, aghju scrittu codice C per pirate altri prugrammi Win32 attraversu a so finestra. manichi.

In i boni vechji tempi di prugrammazione Win32, truvà un manicu di finestra era u metudu più faciule per pirate altri prugrammi. Ovviamente, tutti i prugrammi GUI in Windows avianu una finestra, ancu s'ellu ùn hè micca apparsu nantu à u screnu. Scrivendu un prugramma per ritruvà un manicu à un altru prucessu (essenzialmente un ligame à questu), pudete mandà missaghji à questu. Questu hà permessu alcune operazioni basi cum'è ammuccià / mostra una finestra di u prugramma, è ancu cose veramente cool cum'è furzà un prucessu per carricà una DLL arbitraria in u so spaziu di memoria è cumincià à eseguisce codice. Dopu à l'iniezione DLL, u divertimentu principia.

In u primu mese è mezu, stu detective ùn m'hà micca disturbatu assai; hà cunnessu à u servitore VNC in a mo macchina solu una o duie volte. Ma una sessione particulare pò avè suscitatu u so interessu. Scrivu qualchì codice C per ammuccià i finestri di Minesweeper (senza chjudeli) per fà più faciule di ghjucà in classe, quandu aghju nutatu chì l'icona VNC bianca in a bandeja di u sistema era diventata nera. Questu significava chì avà mi fighjulava.

Aghju cuntinuatu à codificà cum'è di solitu, pruvatu à ignurà ellu. Intantu, a macchina hà cuminciatu à rallentà, pruvatu à trasmette a freccia massima di quadru à unu di l'innumerevoli monitori in u cantonu di a stanza. Windows guasi cessatu di risponde, quandu a mo pacienza sguassate, aghju sconnessu è finitu per u ghjornu.

Nant'à i visiti successivi à a sala di l'informatica, Colombo hà pigliatu un grande interessu in ciò chì aghju fattu quasi ogni volta. Dopu à a quarta volta, aghju decisu: aghju bisognu di fà qualcosa nantu à questu.

Admettu chì una persona raziunale è raziunale puderia esse solu suscitatu stu prublema direttamente cun ellu o u so capu. In ogni casu, aghju sempre cedutu à a tentazione è aghju rapidamente parlatu per aduttà una strategia completamente diversa.

- Ùn pudete fà nunda senza stu servore VNC ! - Mi dissi calmu è decisu parechje volte.

Era necessariu di tumbà VNC.

Aghju cuminciatu à andà in a sala di l'informatica cù grandi gruppi di studienti è à pusà u più luntanu da u cantonu cù i monitori pussibule. Questu hà travagliatu per un tempu è m'hà datu un pocu di tempu per pruvà idee.

U mo primu tentativu, pensu chì sarete d'accordu, era abbastanza debule. Facendu clic right in l'icona VNC in a bandeja di u sistema, aghju vistu un menu cù e lettere magiche EXIT. Sfurtunatamente, e lettere sò state scritte in testu di cuntorni grisgiu. L'amministratore hà disattivatu l'elementu di menu "Exit" attraversu l'Editor di Politiche di Gruppu. Aghju pruvatu à tumbà u prucessu da u Task Manager, ma di sicuru era invisibule per mè perchè era in esecuzione sottu un altru cuntu più privilegiatu. Ùn hà micca travagliatu.

U servitore VNC corre nantu à u portu TCP 5900, aghju ricurdatu. U mo prossimu pianu era di mandà pacchetti corrotti à stu portu per fallu.

Aghju passatu almenu uni pochi di ghjorni à ritruvà cù u protokollu, mandendu diverse forme di crap ben strutturatu à u portu 5900 è sperendu chì si rompe. In fine, chì ùn hà micca travagliatu.

Aviu principiatu dighjà à pinsà ch’ùn pudaria micca sbarazzà di sta cosa, quandu di colpu mi s’alba : ci deve esse una finestra ! Avemu bisognu di vede. Forse averà un bellu buttone "Mute" succoso chì possu aduprà assai!

Aghju eseguitu u mo codice C quasi perfettu per truvà u manicu à a finestra principale di un altru prucessu - è sicuru, VNC hè statu trovu. Mi sentu ispiratu quandu i mo dite scrivevanu WM_SHOWWINDOW. Pruvate à indovinà ciò chì aghju vistu davanti à mè?

Nunda!

Avà era curioso... avia una finestra, ma ùn ignorava i mo missaghji. Aghju verificatu duie volte u mo codice per assicurà chì funziona. Pruvatu nantu à parechji altri prucessi è hà travagliatu bè. Aghju pruvatu à mandà altri missaghji à a finestra VNC, è sempre nunda.

È tandu m'hà righjuntu di novu !

Grazie à u assai grossu u libru Charles Petzold Aghju studiatu cù cura cumu i prucessi Win32 funzionanu in u sistema. Ogni applicazione Win32 hà una finestra è ancu una "coda di messagi". I missaghji attivati ​​da l'interazzione di l'utilizatori, è ancu i missaghji mandati da Windows stessu, ghjunghjenu in una fila, è l'applicazione stessu decide cumu processà.

Ùn hè micca assai interessante in sè stessu. Ma quandu aghju realizatu chì una fila di missaghju abbastanza grande senza processatu hà agitu cum'è un heuristicu per u Window Process Manager per intervene in un prucessu impiccatu, aghju cuminciatu à sudà serotonina pura.

Senza perde una seconda, aghju vultatu à u mo codice C, appruntendu à mandà un altru missaghju à a finestra principale di VNC WM_SHOWWINDOW. In un ciclu. Eternu. Cusì, assai missaghji. WM_SHOWWINDOW, chì avà sapia chì VNC pruvà à ignurà cumplettamente ... à u so periculu.

Aghju cumpilatu è eseguitu 4KB di u codice più amante di a libertà di a mo vita. Dopu à circa trè seconde, Windows hà dettu chì u prucessu vncserver.ехе ùn risponde micca, è hà fattu un'offerta chì ùn pudia micca ricusà:

Vulete compie stu prucessu?

infernu Iè !

Lasciami ammette chì per u restu di u ghjornu era insopportabilmente cuntentu di mè stessu.

Dopu qualchì ora passata à digerisce a mo nova superpotenza, aghju decisu cumu l'aghju utilizatu. Era troppu faciule per tumbà a sessione ghjustu davanti à ellu. Aviu avutu una idea megliu - per sparisce cumplettamente.

dopu à battèsimu di u focu cù prugrammazione socket Aghju realizatu chì puderia scrive codice chì faria duie cose. Prima occuperà u portu TCP 5900 di novu liberatu, occupatu prima da u prucessu di u servitore VNC clueless. Allora creà una nova cunnessione TCP à u servitore VNC di a macchina specifica. U codice serà solu proxy tutte e dati trà i dui sockets, è Columbo penserà ch'ellu si cunnetta à mè, quandu in fattu serà cunnessu à un servitore VNC completamente diversu.

U mo codice hà da agisce cum'è un ponte secretu trà mè è qualcuna altra povera ànima di a mo scelta. Era maravigliosu.

Aghju cuminciatu subitu à scrive u mo falsu ponte VNC. Columbo hà cunnessu à mè parechje volte, ma aghju cuntinuatu à prugrammà davanti à ellu. Sò ghjuntu à a cunclusione chì ùn avia micca idea di ciò chì facia, ancu s'ellu aghju scrittu cose evidenti cum'è numeri di portu è cumenti cum'è // Прощай, жуткий шпион VNC.

Dopu un paru di ghjorni ùn pudia micca fà u codice per travaglià bè. Per aggravà e cose, aghju travagliatu quasi in permanenza cù l'icona VNC negra in a bandeja di u sistema. Mentre era cunnessu, ùn pudia micca liberà u portu per pruvà u mo codice.

S'e avessi saputu tandu netcat!

À a fine, i mo nervi cedevanu; dopu tuttu, eru un tippu impaciente di 17 anni. Fighjendu l'icona bianca di u servitore VNC torna neru, aghju spaventatu, apertu u codice originale chì hà populatu a fila di messagi, è l'aghju currettu davanti à i so ochji. Aghju ancu aspittatu un paru di sicondi prima di cliccà End Process, solu per assicurà chì l'hà vistu.

Se pressendu quellu buttone ùn m'hà micca cunvintu cumplettamente chì ne valeva a pena, allora ellu hà saltatu da daretu à a so fortezza di monitori per avvicinà rapidamente à mè è mi facia fora di a stanza certamenti.

In u risultatu, aghju statu pruibitu da a reta per duie simane. Una punizione ghjusta, pensu. Dopu à circa trè settimane, u servitore VNC hè sparitu da i script di boot è ùn hè mai apparsu in altrò. Ùn aghju mai saputu se u mo incidente hà ghjucatu un rolu in questu o micca, ma hà arruvinatu cumplettamente u mo pianu di diventà fabulosamente riccu vendendu a mo pistola VNC à i studienti depressi in i sale di computer di l'università in tuttu u paese.

Source: www.habr.com

Add a comment