{"id":40151,"date":"2020-01-31T20:49:28","date_gmt":"2020-01-31T17:49:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/bitva-koderov-ya-protiv-togo-parnya-s-vnc"},"modified":"2020-01-31T20:49:28","modified_gmt":"2020-01-31T17:49:28","slug":"bitva-koderov-ya-protiv-togo-parnya-s-vnc","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","title":{"rendered":"Bitwa programist\u00f3w: ja przeciwko tamtemu facetowi z VNC","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>W <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/\">na tym blogu<\/a><\/noindex> opublikowano wiele programistycznych anegdot. Lubi\u0119 przypomina\u0107 sobie swoje stare g\u0142upoty. C\u00f3\u017c, oto kolejna taka historia.<\/p>\n<p>Po raz pierwszy zainteresowa\u0142em si\u0119 komputerami, a zw\u0142aszcza programowaniem, kiedy mia\u0142em oko\u0142o 11 lat. Na pocz\u0105tku szko\u0142y \u015bredniej<b>wi\u0119ksz\u0105<\/b>wi\u0119kszo\u015b\u0107 wolnego czasu sp\u0119dza\u0142em z moim C64, pisa\u0142em w Basicu, a potem wycina\u0142em no\u017cyczkami z\u0142y kod. <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/give-yourself-more-playtime\/\">Nie \u017cartuj\u0119, no\u017cyczkami<\/a><\/noindex>.<\/p>\n<p>Po szkole (w wieku oko\u0142o 16 lat) brytyjscy uczniowie zazwyczaj id\u0105 do college'u, gdzie wybieraj\u0105 do nauki trzy lub cztery przedmioty, zanim przejd\u0105 na uniwersytet. Maj\u0105c na uwadze swoj\u0105 mi\u0142o\u015b\u0107 do be\u017cowego pude\u0142ka i magnetofonu w domu, postanowi\u0142em, \u017ce nauka 'informatyki' w college'u to dobry wyb\u00f3r.<\/p>\n<p>Kurs spodoba\u0142 mi si\u0119 bardziej, ni\u017c si\u0119 spodziewa\u0142em; tam po raz pierwszy pozna\u0142em Pascala i Delphi.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nW przerwach mi\u0119dzy zaj\u0119ciami studenci mogli pracowa\u0107 na dowolnej wolnej maszynie w sali komputerowej. Wyobra\u017acie sobie: ogromny pok\u00f3j, pomy\u015blany na oko\u0142o sto os\u00f3b, z rz\u0119dami sto\u0142\u00f3w, na kt\u00f3rych sta\u0142y maszyny \u2014 co\u015b w rodzaju takich, gdzie monitor stoi na jednostce centralnej. Sta\u0142e brz\u0119czenie wentylator\u00f3w, kulki myszy tocz\u0105 si\u0119 po sto\u0142ach, nie zatrzymuj\u0105c si\u0119 ani na chwil\u0119. W powietrzu dziwny zapach, jakby 50-100 nastolatk\u00f3w wydzielaj\u0105cych hormony okresowo zmienia\u0142o si\u0119, aby sch\u0142odzi\u0107 setki chip\u00f3w Pentium III.<\/p>\n<p>Pomimo ryzyka dla zdrowia, lubi\u0142em usi\u0105\u015b\u0107 przy komputerze, gdy znalaz\u0142a si\u0119 wolna chwila.<\/p>\n<p>W pokoju czuwa\u0142 administrator, niski m\u0119\u017cczyzna w \u015brednim wieku, kt\u00f3ry zosta\u0142 wybrany na t\u0119 rol\u0119 z powodu nieustannej pasji do bycia z\u0142ym dyktatorem. Tak mi si\u0119 wydaje. Czuwa\u0142 \u2014 to ma\u0142o powiedziane, facet naprawd\u0119 kocha\u0142 swoj\u0105 prac\u0119. Mia\u0142 za zadanie pilnowa\u0107 porz\u0105dku, aby nikt nie u\u017cywa\u0142 komputera edukacyjnego do czego\u015b niestosownego.<\/p>\n<p>I do dzi\u015b intuicja podpowiada mi, \u017ce premia dla admina bezpo\u015brednio zale\u017ca\u0142a od liczby student\u00f3w, kt\u00f3rych z\u0142apa\u0142 na gor\u0105cym uczynku i wyrzuci\u0142 z sali komputerowej. Jestem prawie pewien, \u017ce ten facet przedwcze\u015bnie sp\u0142aci\u0142 swoj\u0105 hipotek\u0119.<\/p>\n<p>Siedzia\u0142 w dalszym k\u0105cie sali komputerowej przy naro\u017cnym biurku. Mo\u017cna by\u0142o z du\u017c\u0105 pewno\u015bci\u0105 przypuszcza\u0107, \u017ce jego p\u0142odne monitory znalaz\u0142y spos\u00f3b na rozmna\u017canie si\u0119 z imponuj\u0105co kr\u00f3tkim okresem ci\u0105\u017cy \u2014 by\u0142o ich tak du\u017co. Pozostawa\u0142o tylko zgadywa\u0107, czy naprawd\u0119 nad\u0105\u017ca\u0142 za nimi wszystkimi. Oczywi\u015bcie \u017cartuj\u0119\u2026 wspomina\u0142em, \u017ce bardzo powa\u017cnie podchodzi\u0142 do pracy?<\/p>\n<p>W tamtym czasie sie\u0107 komputerowa dzia\u0142a\u0142a na systemie Windows 2000. Wkr\u00f3tce odkry\u0142em, \u017ce przy ka\u017cdym logowaniu uruchamia\u0142 si\u0119 skrypt, kt\u00f3ry uruchamia\u0142 serwer VNC z konta administracyjnego, aby zdalnie uzyska\u0107 dost\u0119p do pulpitu. Zawsze, gdy ten facet chcia\u0142 ci\u0119 \u015bledzi\u0107, \u0142\u0105czy\u0142 si\u0119 bezpo\u015brednio z twoj\u0105 maszyn\u0105 i obserwowa\u0142. To by\u0142o straszne, a je\u015bli teraz o tym pomy\u015ble\u0107, prawdopodobnie r\u00f3wnie\u017c nielegalne.<\/p>\n<p>Zadraszaj\u0105c z\u0119by na Basicu i C64, teraz pisa\u0142em w C, a nawet troch\u0119 w C++. W tamtym czasie bardzo fascynowa\u0142em si\u0119 j\u0119zykiem D, kt\u00f3ry poprawia\u0142 niekt\u00f3re niedoskona\u0142o\u015bci C++, jak mi si\u0119 wtedy wydawa\u0142o.<\/p>\n<p>Zwykle wchodzi\u0142em do sali komputerowej, aby poczyta\u0107 co\u015b nowego na temat D lub bawi\u0107 si\u0119 kompilatorem Digital Mars D. Czasami, odrywaj\u0105c si\u0119 od my\u015bli o \u015bwietlanej przysz\u0142o\u015bci D, pisa\u0142em kod w C, aby w\u0142ama\u0107 si\u0119 do innych program\u00f3w Win32 poprzez ich uchwyty okien.<\/p>\n<p>W dawnych dobrych czasach programowania na Win32 wyszukiwanie uchwytu okna by\u0142o najprostsz\u0105 metod\u0105 na w\u0142amanie si\u0119 do innych program\u00f3w. Oczywiste jest, \u017ce wszystkie programy z interfejsem graficznym w Windows mia\u0142y okno, nawet je\u015bli nie by\u0142o ono wy\u015bwietlane na ekranie. Pisz\u0105c program do wyodr\u0119bniania uchwytu innego procesu (w zasadzie linku do niego), mog\u0142e\u015b wysy\u0142a\u0107 mu wiadomo\u015bci. Umo\u017cliwia\u0142o to wykonanie podstawowych operacji, takich jak ukrywanie\/pokazywanie okna programu, a tak\u017ce naprawd\u0119 fajnych rzeczy, na przyk\u0142ad zmuszanie procesu do za\u0142adowania dowolnej DLL do swojej przestrzeni pami\u0119ci i rozpocz\u0119cia wykonania kodu. Po iniekcji DLL zaczyna\u0142a si\u0119 najciekawsza cz\u0119\u015b\u0107.<\/p>\n<p>Przez pierwsze p\u00f3\u0142tora miesi\u0105ca ten detektyw specjalnie mnie nie niepokoi\u0142, pod\u0142\u0105czy\u0142 si\u0119 do serwera VNC na moim komputerze tylko raz lub dwa. Ale jedna konkretna sesja prawdopodobnie obudzi\u0142a w nim zainteresowanie. Pisa\u0142em jaki\u015b kod w C do ukrywania okien Minesweeper (nie zamykaj\u0105c ich), aby \u0142atwiej by\u0142o gra\u0107 w klasie, i nagle zauwa\u017cy\u0142em, \u017ce bia\u0142y ikonka VNC w zasobniku systemowym sta\u0142a si\u0119 czarna. Oznacza\u0142o to, \u017ce teraz mnie obserwuje.<\/p>\n<p>Kontynuowa\u0142em kodowanie jak zwykle, staraj\u0105c si\u0119 nie zwraca\u0107 na niego uwagi. W mi\u0119dzyczasie maszyna zacz\u0119\u0142a si\u0119 konkretnie zacina\u0107, pr\u00f3buj\u0105c przekazywa\u0107 maksymaln\u0105 liczb\u0119 klatek na jeden z niezliczonych monitor\u00f3w w rogu pokoju. Windows prawie przesta\u0142 reagowa\u0107, wi\u0119c, kiedy moje cierpliwo\u015b\u0107 si\u0119 sko\u0144czy\u0142a, wylogowa\u0142em si\u0119 i zako\u0144czy\u0142em na dzisiaj.<\/p>\n<p>Podczas kolejnych wizyt w sali komputerowej Colombo za ka\u017cdym razem wykazywa\u0142 \u017cywe zainteresowanie tym, co robi\u0119. Po oko\u0142o czwartym razie postanowi\u0142em, \u017ce musz\u0119 co\u015b z tym zrobi\u0107.<\/p>\n<p>Przyznaj\u0119, \u017ce rozs\u0105dna, racjonalna osoba mog\u0142a po prostu poruszy\u0107 t\u0119 kwesti\u0119 bezpo\u015brednio z nim lub jego szefem. Jednak zawsze ulega\u0142em pokusie i szybko przekonywa\u0142em siebie, aby wybra\u0107 zupe\u0142nie inn\u0105 strategi\u0119.<\/p>\n<p>\u2014 Nie mo\u017cesz nic zrobi\u0107 bez tego serwera VNC! \u2014 spokojnie, zdecydowanie powiedzia\u0142em sobie kilka razy.<\/p>\n<p>Trzeba by\u0142o zabi\u0107 VNC.<\/p>\n<p>Zacz\u0105\u0142em wchodzi\u0107 do sali komputerowej z du\u017cymi grupami student\u00f3w i siada\u0107 jak najdalej od k\u0105ta z monitorami. Przez jaki\u015b czas dzia\u0142a\u0142o i da\u0142o mi troch\u0119 czasu na przemy\u015blenie pomys\u0142\u00f3w.<\/p>\n<p>Moja pierwsza pr\u00f3ba, my\u015bl\u0119, \u017ce si\u0119 zgodzisz, by\u0142a do\u015b\u0107 s\u0142aba. Klikaj\u0105c prawym przyciskiem myszy na ikon\u0119 VNC w zasobniku systemowym, zobaczy\u0142em menu z magicznymi literami E-X-I-T. Niestety, litery by\u0142y napisane szarym konturowym tekstem. Administrator wy\u0142\u0105czy\u0142 element menu \u201eWyj\u015bcie\u201d za pomoc\u0105 edytora zasad grupy. Pr\u00f3bowa\u0142em zabi\u0107 proces w Mened\u017cerze zada\u0144, ale oczywi\u015bcie by\u0142 niewidoczny dla mnie, poniewa\u017c dzia\u0142a\u0142 na innym, bardziej uprzywilejowanym koncie. Nic z tego nie wysz\u0142o.<\/p>\n<p>Serwer VNC dzia\u0142a na porcie TCP 5900, przypomnia\u0142em sobie. M\u00f3j nast\u0119pny plan polega\u0142 na wys\u0142aniu uszkodzonych pakiet\u00f3w na ten port, aby go zawiesi\u0107.<\/p>\n<p>Przez co najmniej kilka dni bada\u0142em protok\u00f3\u0142, wysy\u0142aj\u0105c na port 5900 r\u00f3\u017cne formy poprawnie skonstruowanego syfu i maj\u0105c nadziej\u0119, \u017ce si\u0119 z\u0142amie. Ostatecznie to te\u017c nie zadzia\u0142a\u0142o.<\/p>\n<p>Zaczyna\u0142em my\u015ble\u0107, \u017ce nie b\u0119d\u0119 m\u00f3g\u0142 pozby\u0107 si\u0119 tej rzeczy, kiedy nagle mnie ol\u015bni\u0142o: musi by\u0107 tam okno! Musz\u0119 je wy\u015bwietli\u0107. Mo\u017ce b\u0119dzie tam przycisk \u201eWy\u0142\u0105cz\u201d, kt\u00f3ry \u015bwietnie wykorzystam!<\/p>\n<p>Uruchomi\u0142em sw\u00f3j prawie doskona\u0142y kod C, aby znale\u017a\u0107 uchwyt g\u0142\u00f3wnego okna innego procesu \u2013 i rzeczywi\u015bcie znalaz\u0142em VNC. Czu\u0142em si\u0119 uniesiony, gdy palce wpisa\u0142y <code>WM_SHOWWINDOW<\/code>. Spr\u00f3buj zgadn\u0105\u0107, co zobaczy\u0142em przed sob\u0105?<\/p>\n<p>Nic!<\/p>\n<p>Teraz by\u0142em ciekawy\u2026 mia\u0142 okno, ale ignorowa\u0142o moje wiadomo\u015bci. Sprawdzi\u0142em m\u00f3j kod, aby upewni\u0107 si\u0119, \u017ce dzia\u0142a. Przetestowa\u0142em go na kilku innych procesach i dzia\u0142a\u0142 doskonale. Pr\u00f3bowa\u0142em wysy\u0142a\u0107 do okna VNC inne wiadomo\u015bci, a nadal nic.<\/p>\n<p>I wtedy znowu mnie ol\u015bni\u0142o!<\/p>\n<p>Dzi\u0119ki bardzo grubej <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.co.uk\/Programming-Windows%C2%AE-Microsoft-Charles-Petzold\/dp\/157231995X\">ksi\u0105\u017cce<\/a><\/noindex> Charlesa Petzolda dok\u0142adnie studiowa\u0142em, jak dzia\u0142aj\u0105 procesy Win32 w systemie. Ka\u017cda aplikacja Win32 ma okno oraz \u201ekolejk\u0119 wiadomo\u015bci\u201d. Wiadomo\u015bci wywo\u0142ane interakcj\u0105 z u\u017cytkownikiem oraz wiadomo\u015bci wysy\u0142ane przez sam\u0105 Windows trafiaj\u0105 do kolejki, a samo aplikacja decyduje, jak je obs\u0142u\u017cy\u0107.<\/p>\n<p>Nie jest to szczeg\u00f3lnie ciekawe samo w sobie. Ale kiedy zrozumia\u0142em, \u017ce wystarczaj\u0105co du\u017ca nieprzetworzona kolejka wiadomo\u015bci pe\u0142ni rol\u0119 heurystyki do ingerowania w zawieszony proces przez mened\u017cera Window Process Manager, poczu\u0142em dreszcz czystego serotoniny.<\/p>\n<p>Bez chwili zw\u0142oki wr\u00f3ci\u0142em do mojego kodu C, gotowy, by wys\u0142a\u0107 do g\u0142\u00f3wnego okna VNC jeszcze jedn\u0105 wiadomo\u015b\u0107 <code>WM_SHOWWINDOW<\/code>. W p\u0119tli. Wiecznej. Tak wi\u0119c, mn\u00f3stwo wiadomo\u015bci <code>WM_SHOWWINDOW<\/code>, kt\u00f3re, jak teraz wiedzia\u0142em, VNC spr\u00f3buje ca\u0142kowicie zignorowa\u0107\u2026 na w\u0142asn\u0105 odpowiedzialno\u015b\u0107.<\/p>\n<p>Skompilowa\u0142em i uruchomi\u0142em 4 KB najbardziej wolnomy\u015blniego kodu w moim \u017cyciu. Oko\u0142o trzy sekundy p\u00f3\u017aniej Windows powiadomi\u0142o, \u017ce proces <code>vncserver.exe<\/code> nie odpowiada, i zaoferowa\u0142o propozycj\u0119, kt\u00f3rej po prostu nie mog\u0142em odm\u00f3wi\u0107:<\/p>\n<blockquote><p><i><b>Czy chcesz zako\u0144czy\u0107 ten proces?<\/b><\/i><\/p><\/blockquote>\n<p>\nCholera, TAK!<\/p>\n<p>Pozw\u00f3l, \u017ce przyznam, \u017ce reszt\u0119 dnia by\u0142em nie do zniesienia zadowolony z samego siebie.<\/p>\n<p>Po kilku godzinach przetwarzania mojej nowej supermocy postanowi\u0142em, jak zamierzam jej u\u017cy\u0107. Po prostu zabicie sesji na jego oczach by\u0142oby zbyt proste. Mia\u0142em lepszy pomys\u0142 \u2013 znikn\u0105\u0107 ca\u0142kowicie.<\/p>\n<p>Po <noindex><a rel=\"nofollow\" href=\"https:\/\/martinrue.com\/zzuy-a-lesson-in-perseverance\">bojowego chrzest z programowaniem gniazd<\/a><\/noindex> Zrozumia\u0142em, \u017ce mog\u0119 napisa\u0107 kod, kt\u00f3ry zrobi dwie rzeczy. Po pierwsze, zajmie niedawno zwolniony port TCP 5900, wcze\u015bniej zajmowany przez nie\u015bwiadomy proces serwera VNC. Nast\u0119pnie stworzy nowe po\u0142\u0105czenie TCP z serwerem VNC na wybranej maszynie. Kod b\u0119dzie po prostu proxowa\u0142 wszystkie dane mi\u0119dzy dwoma gniazdami, a Kolumbo pomy\u015bli, \u017ce \u0142\u0105czy si\u0119 ze mn\u0105, podczas gdy w rzeczywisto\u015bci \u0142\u0105czy si\u0119 z zupe\u0142nie innym serwerem VNC.<\/p>\n<p>M\u00f3j kod b\u0119dzie dzia\u0142a\u0142 jak tajny most mi\u0119dzy mn\u0105 a jak\u0105\u015b inn\u0105 biedn\u0105 dusz\u0105 wed\u0142ug mojego wyboru. To by\u0142o wspania\u0142e.<\/p>\n<p>Od razu zacz\u0105\u0142em pisa\u0107 m\u00f3j fa\u0142szywy most VNC. Kolumbo \u0142\u0105czy\u0142 si\u0119 ze mn\u0105 kilka razy, ale ja nadal programowa\u0142em na jego oczach. Doszed\u0142em do wniosku, \u017ce nie ma poj\u0119cia o moich dzia\u0142aniach, cho\u0107 pisa\u0142em oczywiste rzeczy, takie jak numery port\u00f3w i komentarze typu <code>\/\/ \u041f\u0440\u043e\u0449\u0430\u0439, \u0436\u0443\u0442\u043a\u0438\u0439 \u0448\u043f\u0438\u043e\u043d VNC<\/code>.<\/p>\n<p>Po kilku dniach nie mog\u0142em zmusi\u0107 kodu do dzia\u0142ania poprawnie. Co gorsza, nieustannie pracowa\u0142em z czarn\u0105 ikon\u0105 VNC w zasobniku systemowym. Dop\u00f3ki by\u0142 pod\u0142\u0105czony, nie mog\u0142em zwolni\u0107 portu, aby sprawdzi\u0107 m\u00f3j kod.<\/p>\n<p>Gdybym wtedy wiedzia\u0142 o <code>netcat<\/code>!<\/p>\n<p>W ko\u0144cu nerwy nie wytrzyma\u0142y, by\u0142em w ko\u0144cu niecierpliwym 17-letnim facetem. Znowu obserwuj\u0105c, jak bia\u0142a ikona serwera VNC staje si\u0119 czarna, wpad\u0142em w sza\u0142, otworzy\u0142em pierwotny kod, kt\u00f3ry wype\u0142nia\u0142 kolejk\u0119 wiadomo\u015bci i uruchomi\u0142em go na jego oczach. Nawet poczeka\u0142em kilka sekund przed naci\u015bni\u0119ciem <code>Zako\u0144cz proces<\/code>, \u017ceby upewni\u0107 si\u0119, \u017ce to widzia\u0142.<\/p>\n<p>Je\u015bli naci\u015bni\u0119cie tego przycisku jeszcze do ko\u0144ca mnie nie przekona\u0142o, \u017ce warto, to jego skok z powodu jego solidnych monitor\u00f3w, aby szybko podej\u015b\u0107 do mnie i wyrzuci\u0107 mnie z pokoju, zdecydowanie by\u0142o warte tego.<\/p>\n<p>Ostatecznie zablokowano mi dost\u0119p do sieci na dwa tygodnie. Uwa\u017ca\u0142em to za sprawiedliw\u0105 kar\u0119. Oko\u0142o trzy tygodnie p\u00f3\u017aniej serwer VNC znikn\u0105\u0142 z skrypt\u00f3w rozruchowych i odt\u0105d si\u0119 nie pojawi\u0142. Nigdy si\u0119 nie dowiedzia\u0142em, czy m\u00f3j incydent mia\u0142 w tym jaki\u015b wp\u0142yw, ale ca\u0142kowicie zniweczy\u0142 m\u00f3j plan na szybkie wzbogacenie si\u0119 z sprzeda\u017cy mojej broni VNC uciskanym studentom w salach komputerowych na ca\u0142ym kraju.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/itsumma\/blog\/485756\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445. \u0427\u0442\u043e \u0436, \u0432\u043e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0442\u0430\u043a\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f. \u042f \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430\u043c\u0438, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u043a\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u043e\u043a\u043e\u043b\u043e 11 \u043b\u0435\u0442. \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u0448\u043a\u043e\u043b\u044b \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u044f \u0432\u043e\u0437\u0438\u043b\u0441\u044f \u0441\u043e \u0441\u0432\u043e\u0438\u043c C64 \u0438 \u043f\u0438\u0441\u0430\u043b \u043d\u0430 \u0411\u0435\u0439\u0441\u0438\u043a\u0435, \u0430 \u043f\u043e\u0442\u043e\u043c \u0432\u044b\u0440\u0435\u0437\u0430\u043b \u043d\u043e\u0436\u043d\u0438\u0446\u0430\u043c\u0438 \u043f\u043b\u043e\u0445\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40151","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 \u043a\u043e\u0434\u0435\u0440\u043e\u0432: \u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043d\u044f \u0441 VNC | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-31T17:49:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-01-31T17:49:28+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Bitwa programist\u00f3w: ja przeciwko temu facetowi z VNC | ProHoster","description":"Na tym blogu opublikowano wiele programistycznych historii. Lubi\u0119 wspomina\u0107 moje dawne g\u0142upoty.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0438\u0442\u0432\u0430 \u043a\u043e\u0434\u0435\u0440\u043e\u0432: \u044f \u043f\u0440\u043e\u0442\u0438\u0432 \u0442\u043e\u0433\u043e \u043f\u0430\u0440\u043d\u044f \u0441 VNC | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u043c \u0431\u043b\u043e\u0433\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043e \u043d\u0435\u043c\u0430\u043b\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u0438\u0445 \u0431\u0430\u0435\u043a. \u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u043e \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0430\u0440\u044b\u0445 \u0433\u043b\u0443\u043f\u043e\u0441\u0442\u044f\u0445.","og:url":"https:\/\/prohoster.info\/pl\/blog\/bitva-koderov-ya-protiv-togo-parnya-s-vnc","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-31T17:49:28+00:00","article:modified_time":"2020-01-31T17:49:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40151","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:44:38","updated":"2022-09-29 08:39:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/40151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=40151"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/40151\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=40151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=40151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=40151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}