FAQ

  • Kim jest Gynvael?
  • Programista pasjonat z zamiłowaniem do bezpieczeństwa komputerowego i niskopoziomowych aspektów informatyki. Autor książki "Zrozumieć Programowanie", redaktor naczelny i twórca eksperymentalnego magazynu Paged Out!, a także licznych artykułów, publikacji, podcastów oraz wystąpień poświęconych wspomnianym tematom. W 2013 roku odebrał w Las Vegas (wspólnie z Mateuszem Jurczykiem) nagrodę Pwnie Award w kategorii „Najbardziej innowacyjne badanie naukowe” z dziedziny bezpieczeństwa komputerowego. Współzałożyciel i były kapitan zespołu Dragon Sector”, jednej z najlepszych drużyn Capture The Flag na świecie. Przewodniczący Rady Programowej konferencji PWNing. Od 2010 roku mieszka w Zurychu, gdzie pracuje dla firmy Google jako Technical Lead / Manager.

    Switzerland in a nutshell - view of mountains / lakes.
  • Gdzie mieszkasz?
  • Niewielka miejscowość w Kantonie Zurych w Szwajcarii.

  • Ile masz lat?
  • 37

  • Gdzie pracowałeś/pracujesz?
  • Jeszcze na studiach pracowałem w jednej z polskich firm antywirusowych (ArcaBit). Po roku przeszedłem do hiszpańskiej firmy Hispasec (znanej m.in. z VirusTotal), a po kolejnych ponad 3 latach do Google, gdzie pracuje od około 10 lat.

  • Na jakich stanowiskach pracowałeś/pracujesz?
  • Zawsze mieszanych/łączonych/multiclass. W ArcaBit był to programista / reverse-engineer, w Hispasec security researcher / pentester / malware analyst / programista (prawdziwy full-stack, od driverów, do webów i aplikacji mobilnych) / lokalny menedżer / czy nawet skręcacz mebli :). W Google oficjalnie jestem na stanowisku Software Engineer + Tech Lead / Manager jednym z wielu zespołów bezpieczeństwa (a w praktyce do wszystkiego wymienionego doszła jeszcze np. elektronika, jak i kilka innych rzeczy).

  • Czym się obecnie zajmujesz?
  • Poza pracą (patrz wyżej) dwa razy w tygodniu streamuje na YouTube, a poza tym tworzę magazyn Paged Out!, i troszkę pomagam przy magazynach Programista i Programista Junior. Oprócz tego jeśli mam czas (co niestety zdarza się rzadko) gram w CTFy z zespołem Dragon Sector. A także zasiadam w radach programowych dwóch polskich konferencji - PWNing i CONFidence.

  • Jak streamujesz?
    • Od strony software: OBS Studio + plugin Browser Source plugin z zestawem własnych grafik + HTML/CSS, a do tego cała masa JavaScriptu połączonego z niewielkim backendem w Pythonie, który z kolei łączy się z zewnętrznym panelem na pytania (który również jest w Pythonie), a do tego z kolei łączy się kilka różnych botów siedzących na czatach - taak, trochę to się nam rozrosło. Oprócz tego jest jeszcze niewielki napisany na kolanie plugin do OBS Studio, który wyświetla intro. Do tego używam jeszcze VB-CABLE, czyli wirtualnej "karty muzycznej", dzięki której łatwiej jest zarządzać dźwiękiem.
    • Od strony hardware: kilka webcamów Logitech HD Pro Webcam C920/C930, mikrofon Blue Yeti Pro microphone, oraz karta przechwytująca HDMI Game Capture HD60 Pro (z której skorzystałem może raz). Do tego 4 monitory LCD (1 jako główny streamowany desktop, 1 na OBS Studio / podgląda na YouTube, 1 na czaty i 1 na różne panele sterowania - od muzyki, pytań, itp.).
  • Hardware:
  • Software (co sądzisz, czy używasz, jeśli tak to dlaczego):
    • Zoomowanie / rysowanie po ekranie
    • SysInternals / Microsoft ZoomIt

    • System (Linux vs Windows vs macOS) i dlaczego Windows?
    • PC/Laptop: Windows jako główny OS desktopowy + Ubuntu Server na VM.
      Serwery/VPSy: Ubuntu Server.
      Czemu? Osobiste preferencje :)

    • Dlaczego nie używasz WSL/WSL2 zamiast Ubuntu Server na VM?
    • Przede wszystkim dlatego, że mój setup powstał jeszcze przed pojawieniem się WSL/WSL2, i póki co nie miałem dobrego powodu by go zmigrować. Poza tym WSL nie wspierał pewnych używanych przeze mnie ficzerów Linuxa (np. obsługi różnorodnych systemów plików).

    • Dlaczego na streamach masz okna Linuxowe obok Windowsowych?
    • Mam dość unikatową konfigurację, która łączy niektóre zalety Windowsa z Linuxem. Więcej o tym można poczytać tutaj: https://docs.google.com/document/d/1bq3lXdB2G4Mr2xVSxGdx6icleV7bfWbDUQUOuXzftTY/edit?usp=sharing

    • Disassembler/decompiler
    • Głównie IDA, choć czasem korzystam z Binary Ninja i Ghidra. Do tego ndisasm (z pakietu NASM) i Capstone.

    • Transparent proxy (burp/zap/mimtproxy)
    • Fiddler i cała masa ad hoc skryptów w Pythonie.

    • Antywirus
    • Brak. Patrz również: https://www.youtube.com/watch?v=I6yNRMcdXKE

    • Full disk encryption, bitlocker, veracrypt, truecrypt (hehe), LVM
    • Tak. Na różnych komputerach różne rzeczy. Czasem też szyfrowanie konkretnych katalogów / plików dodatkowo.

    • Pwntools?
    • Nie korzystam z pwntools z dwóch powodów:
      1. Mam własny mini-framework z którego korzystam (który ma jakieś 1% ficzerów pwntools, ale na moje potrzeby wystarcza).
      2. Co próbuje podejść do pwntools, to coś mi nie działa :(

  • Jakie znasz języki programowania?
  • Najczęściej mam do czynienia z Pythonem, C/C++, JavaScript oraz Asemblerem x86. Oprócz tego przez lata mniej lub więcej pisałem w bardzo wielu językach, m.in. w PHP, Perl, Java, Turbo Pascalu, różnych odmianach BASICa, czy bardziej specjalistycznych jak mIRC Script czy eScript. Zdarzało mi się też pisać kilkuset-linijkowe skrypty w batch (.bat) i Bash.

  • Jakich języków nie znasz?
  • Praktycznie w ogóle nie znam języków funkcyjnych. Nie dotykałem również ani Rust (choć jest na todo-liście), ani C#. Niektórymi językami bawiłem się tylko przez krótką chwilę (np. Go lang). Oczywiście w ogóle nie miałem do czynienia z masą innych języków, ale o te kilka wymienionych jestem najczęsciej pytany.

  • Od kiedy programujesz?
  • Przygodę z programowaniem zacząłem mając 6 lat.

  • Jaki był Twój pierwszy język programowania?
  • Atari BASIC <3

  • Jakie masz certyfikaty? Co sądzisz o certyfikatach (OSCP, CISSP, CEH)?
  • Nie posiadam żadnych certyfikatów, i w mojej konkretnej działce nie czuje potrzeby ich posiadania (z mojego ograniczonego doświadczenia certyfikaty są neutralne, tj. ani nie pomagają w zdobyciu pracy, ani też nie przeszkadzają). YMMV.
    Z mojego punktu widzenia certyfikaty są przydatne w dwóch przypadkach:
    1. Jeżeli chcemy podjąć pracę w firmach/instytucjach, które takich certyfikatów wymagają, lub w firmach świadczących usługi na rzecz wspomnianych firm/instytucji.
    2. Jeżeli chcemy posiadać certyfikat, lub wykorzystać zdobycie certyfikatu jako swoisty motywator do nauki.
    W takich przypadkach bardzo zachęcam do zdobycia certyfikatów o których marzymy :)

  • Co sądzisz o języku programowania:
    • Golang
    • Go bawiłem się jedynie od razu po jego wyjściu - napisałem prosty raytracer (https://gynvael.coldwind.pl/?id=249) i na tym moja przygoda z ty językiem się skończyła. Wydawał się być natomiast fajną alternatywą do C w niektórych zastosowaniach (i zdecydowanie bezpieczniejszą)

    • C++
    • Język-pułapka. Jeden z moich ulubionych języków programowania, ale żeby pisać w nim bezpiecznie trzeba w zasadzie zrobić z niego doktorat. Dwa bardzo dobre źródła wiedzy o tym języku:
      Specyfikacja: https://isocpp.org/files/papers/N4860.pdf
      C++ Core Guidelines: https://github.com/isocpp/CppCoreGuidelines

    • Python
    • Domyślna implementacja jest generalnie powolna (VM bez JIT + GIL), ale sprawdza się nieźle dla wątków typu I/O bound. Do tego pokaźna kolekcja łatwych do zainstalowania bibliotek, przejrzysta a jednocześnie bardzo wygodna i ekspresyjna składnia, jak i popularność w security/hackingu sprawia, że to jeden z moich ulubionych języków.

    • JavaScript
    • Bardzo popularny obecnie język, który powstawał czysto organicznie w świecie przeglądarek przez wiele lat, przez co można w nim znaleźć wiele dziwnych decyzji projektowych. Osobiście lubię JS, ale... to jest język po przejściach i wymaga zarówno cierpliwości jak i miłości ze strony programisty.

    • Rust
    • Rust jest na mojej todo-liście, ale jeszcze do niego nie dotarłem :(

    • nim
    • Nie mam pojęcia co to - foxtrot to tu wrzucił, więc to wszystko jego wina.

    • Haskell
    • Nic nie wiem o językach funkcyjnych :(

    • Java
    • Ogólnie szybki i bezpieczny język, tylko bardzo rozwlekły. Kiedyś w Javie pisałem więcej, teraz co najwyżej czytam kod.

    • C#
    • W C# prawie nic nie pisałem - zdarzyło mi się co najwyżej debugować lub czytać kod. Wyglądał OK.

    • Ruby
    • Wygląda jak skrzyżowanie Pythona z Perlem. Ruby głównie "czytałem" na CTFach, więc za dużo o nim nie umiem powiedzieć.

  • Czy warto iść na studia jeśli chce się pracować w IT?
  • Krótka odpowiedź: Jeśli jeszcze nie pracujesz w momencie pisania matury w IT, to bardzo zachęcam do pójścia na studia - choćby po to, że da to więcej czasu na rozwój/skillowanie we własnym zakresie.
    Dłuższa odpowiedź: https://gynvael.coldwind.pl/?id=337

  • Lepiej iść na studia stacjonarne czy niestacjonarne?
  • Nie mam zdania na ten temat - obie wersje mają swoje wady i zalety.

  • Czy można zacząć uczyć się programować/hakingu w wieku X lat?
  • Tak. Przy czym musisz sobie odpowiedzieć na dwa dość przyziemne pytania:
    Czy będziesz mieć odpowiednią ilość wolnego czasu w ciągu doby aby poświęcić ją na programowanie/haking? Zarówno programowanie jak i hacking wymagają MASY nauki zanim w ogóle dojdzie się do poziomu juniora.
    Czy dasz radę przetrwać za pensje juniora? Po przebranżowieniu się na programistę/bezpiecznika trochę potrwa zanim dojdzie się do poziomu senior/staff/etc.
    Poza tym tylko dodam, że wraz z wiekiem rośnie łatwość przyswajania bardziej abstrakcyjnych tematów - więc być może osobom dorosłym będzie łatwiej nauczyć się programowania niż dzieciom (choć jest to tylko taka moja nie zweryfikowana w żaden sposób hipoteza).

  • Jaką maturę pisałeś?
  • To było daawno temu, jak jeszcze panowały inne zasady. Pisałem matury z języka polskiego (pisemna+ustna), matematyki (pisemna), fizyki (ustna), oraz angielskiego (ustna).

  • Jak zacząć przygodę z hackingiem?
  • https://www.youtube.com/watch?v=9I5RAWGWj7I
    https://www.freecodecamp.org/news/so-you-want-to-work-in-security-bc6c10157d23/
    https://lcamtuf.blogspot.com/2016/08/so-you-want-to-work-in-security-but-are.html
    http://ifsec.blogspot.com/2018/02/so-you-want-to-work-in-security-and-for.html
    https://gist.github.com/mubix/5737a066c8845d25721ec4bf3139fd31
    https://research.checkpoint.com/2020/i-want-to-learn-about-exploitation-where-do-i-start/

  • Jak zacząć przygodę z RE?
  • https://gynvael.coldwind.pl/?lang=en&id=664

  • Jak znaleźć błędy w oprogramowaniu?
  • https://gynvael.coldwind.pl/?id=659

  • Polecane książki:
    • IT
    • https://gynvael.coldwind.pl/?id=427
      A także przegląd mojej biblioteczki:
      https://www.youtube.com/watch?v=VApXVLKi7uI

    • Nietechniczne
    • David Weber - seria o Honor Harrington (militarne sci-fi)
      Anne Bishop - cykl The Black Jewels (dark fantasy)
      Jim Butcher - cykl The Dresden Files (urban fantasy)
      Michał Cholewa - cykl Algorytmy Wojny (militarne sci-fi)
      Mercedes Lackey - dowolne książki z serii o królestwie Valdemar / świecie Velgarth (fantasy)

  • Kiedy raytracing?
  • Przed OSDev ;)

  • Kiedy osdev?
  • Po raytracingu ;)

Powered By: Gynvael Coldwind