NFsec Logo

Jak zostać hackerem?

25/08/2009 w Hackultura 1 komentarz.  (artykuł nr 135, ilość słów: 7925)

Tytuł oryginału: „How To Become A Hacker”
Autor: Eric S. Raymond
Tłumaczenie pochodzi z serwisu: www.jtz.org.pl
Tłumaczenie: Marek Pętlicki

Glider

Skąd ten dokument?

J

ako edytor Słownika Gwary Hackerów oraz autor kilku innych, dobrze znanych dokumentów o podobnej tematyce, często otrzymuję prośby e-mailem od wielu entuzjastycznych nowicjuszy w Sieci pytających (w skrócie): „w jaki sposób mogę zostać doskonałym hackerem?”. Powracając do 1996 roku zauważyłem, że nie było żadnych innych FAQ lub dokumentów na stronach internetowych, które by były zaadresowane w to życiowe pytanie, więc zacząłem pisać ten dokument. Wielu hackerów uznaje go jako najwyższy autorytet i przypuszczam, że oznacza to, że takim jest. Uważam nadal, że nie jestem najbardziej kompetentnym autorytetem w tym temacie; Jeśli nie spodoba wam się to, co tutaj przeczytacie, napiszcie własny dokument.

Jeśli czytasz zrzut tego dokumentu offline, bieżąca wersja znajduje się na http://www.nfsec.pl/
Wersja oryginalna (w języku angielskim) jest do przeczytania na stronie http://www.catb.org/~esr/

Uwaga: na końcu tego dokumentu znajduje się Lista Najczęściej Zadawanych Pytań. Proszę przeczytaj je podwójnie, zanim napiszesz do mnie e-mail z zapytaniem o ten dokument.

Liczne tłumaczenia tego dokumentu są dostępne w językach:
Arabskim,
Bułgarskim,
Katalońskim,
Chińskim (uproszczonym),
Duńskim,
Holenderskim,
Estońskim,
Farsi,
Fińskim,
Niemieckim,
Greckim
Hebrajskim,
Włoskim
Japońskim,
Norweskim,
Polskim,
Portugalskim (Brazylia),
Rumuńskim
Rosyjskim
Hiszpańskim,
Tureckim,
Szweckim.
Należy mieć na uwadze fakt, iż dokument ten jest aktualizowany okazyjnie dlatego odnośniki te mogą być przestarzałe.

Ten diagram pięciu kropek w dziewięciu kwadratach, który zdobi ten dokument nazywa się szybowcem. Jest to prosty wzór z paroma zaskakującymi właściwościami w matematycznej symulacji nazwanej Życie, który fascynował hackerów przez wiele lat. Myślę, że tworzy on dobre wizualne godło hackerów, którzy są podobni w tej kwestii – abstrakcyjni, początkowo trochę tajemniczo wyglądający, ale mający bramę na cały świat z własną zawiłą logiką swojego własnego. Przeczytaj więcej o godle szybowca tutaj.

Hacker – kto to taki?

Słownik Gwary Hackerów zawiera garść definicji terminu „hacker”, w większości opierających się na biegłości w zagadnieniach technicznych, znajdowaniu upodobania w rozwiązywaniu problemów i przekraczaniu ograniczeń. Jeśli jednak chcesz wiedzieć, w jaki sposób zostać hackerem, tylko dwie z nich są naprawdę odpowiednie.

Istnieje społeczność, kultura grupowa, złożona z ekspertów w dziedzinie programowania i magików sieciowych, której historia sięga wstecz poprzez dziesięciolecia do pierwszych wielodostępnych minikomputerów z podziałem czasu i najwcześniejszych eksperymentów z siecią ARPAnet. Członkowie tej kultury zapoczątkowali termin „hacker”. Hackerzy zbudowali Internet. Hackerzy uczynili z Uniksa system operacyjny, jakim jest dzisiaj. Hackerzy zapoczątkowali Usenet. Hackerzy sprawili, że Światowa Pajęczyna (World Wide Web) zaczęła działać. Jeśli jesteś częścią tej kultury, jeśli bierzesz w niej czynny udział i inni ludzie z tej grupy Ciebie znają i nazywają Cię hackerem – wtedy jesteś hackerem.

Filozofia hackera nie jest tylko ograniczona do kultury programowo-hackerskiej. Są ludzie, którzy stosują postawę hackera w innych zagadnieniach, jak elektronika czy muzyka – w rzeczywistości możesz znaleźć ją na najwyższym poziomie we wszystkich dyscyplinach nauki czy sztuki. Hackerzy oprogramowania rozpoznają te bratnie dusze gdziekolwiek się pojawią i mogą ich również nazywać hackerami – są tacy, którzy twierdzą, że natura hackera jest naprawdę niezależna od konkretnego medium, nad którym on pracuje. Niemniej jednak w dalszej części tego dokumentu skupię się na umiejętnościach i postawach hackerów zajmujących się oprogramowaniem, oraz na tradycjach kultury społecznej, która zapoczątkowała termin „hacker”.

Jest druga grupa ludzi, którzy głośno nazywają siebie hackerami, ale nimi nie są. Wspomniani ludzie (w większości niedorosłe osobniki płci męskiej) znajdują podnietę we włamywaniu się do komputerów i robieniu zamieszania w systemie telefonicznym. Prawdziwi hackerzy nazywają takich ludzi „crackerami” i nie chcą mieć z nimi nic wspólnego. Prawdziwi hackerzy uważają w większości, że crackerzy są leniwi, nieodpowiedzialni i niezbyt błyskotliwi, a fakt, że jesteś w stanie przełamać system ochrony nie czyni Cię hackerem bardziej niż umiejętność uruchamiania samochodu „na krótko” robi z kogoś inżyniera w dziedzinie motoryzacji. Niestety, wielu dziennikarzy i autorów publikacji dało się oszukać i używają słowa „hacker” na określenie crackera. A to bezgranicznie irytuje hackerów z prawdziwego zdarzenia.

Podstawowa różnica jest następująca: hackerzy coś tworzą, a crackerzy to niszczą.

Jeśli chcesz być hackerem, czytaj dalej. Jeśli masz ambicję zostać crackerem, przeczytaj grupę dyskusyjną alt.2600 i przygotuj się na pięć do dziesięciu lat odsiadki po tym, jak okaże się, że nie jesteś tak bystry, jak myślałeś. I to wszystko co mam do powiedzenia o crackerach.

Glider

Postawa Hackera

Hackerzy rozwiązują problemy i tworzą rzeczy wierząc w wolność i wzajemną pomoc. Aby zostać zaakceptowanym jako hacker, musisz zachowywać się jakbyś sam miał ten rodzaj podejścia. Jednak żeby zachowywać się tak, jakbyś miał takie podejście, musisz w nie naprawdę uwierzyć.

Jednakże jeśli myślisz o rozwijaniu postaw hackerskich jedynie jak o metodzie uzyskania akceptacji wewnątrz kultury, zmierzasz w złym kierunku. Bardzo ważne jest, abyś stał się takim typem człowieka, który wierzy w te rzeczy – po to, byś łatwiej uczył się i zachował motywację. Jak we wszystkich dziedzinach twórczej sztuki, najefektywniejszą metodą zostania mistrzem jest naśladowanie stylu myślenia mistrzów – nie tylko intelektualnie, lecz również emocjonalnie. A jak powiada nowoczesna poezja Zen:

Aby iść drogą:
szukaj mistrza,
idź za mistrzem,
idź z mistrzem,
patrz poprzez mistrza,
stań się mistrzem.

Więc, jeśli chcesz być hackerem, powtarzaj następujące rzeczy do chwili, kiedy w nie uwierzysz:

1. Świat jest pełen fascynujących problemów oczekujących na rozwiązanie.

Być hackerem to kupa zabawy, ale to tego typu zabawa, która pochłania mnóstwo wysiłku. Wysiłek wymaga motywacji. Atleci odnoszący sukcesy biorą swoją motywację z formy fizycznego zadowolenia płynącego z umiejętności nakłonienia własnego ciała, aby działało tak, jak sobie tego życzą, z popychania samych siebie poza własne fizyczne ograniczenia. Podobnie, aby być hackerem, musisz odczuwać podstawową satysfakcję z rozwiązywania problemów, wyostrzania własnych umiejętności i ćwiczenia swojej inteligencji.

Jeśli nie jesteś osobą myślącą tak w sposób naturalny, musisz takim zostać, jeśli chcesz być hackerem. W przeciwnym razie zorientujesz się, że twoja hackerska energia jest uszczuplana przez zagadnienia takie jak seks, pieniądze i społeczna akceptacja.

(Musisz również rozwinąć w sobie rodzaj wiary we własne możliwości uczenia się – wiary, że możesz nie wiedzieć wszystkiego, czego potrzebujesz do rozwiązania problemu, ale jeśli zmierzysz się z nim choć trochę i wskutek tego nauczysz się czegoś, umiesz już wystarczająco, żeby ugryźć następny kawałek i tak dalej, aż będzie po wszystkim.)

2. Żaden problem nie powinien być rozwiązywany dwa razy.

Twórcze umysły są wartościowym, rzadkim surowcem. Nie powinny być marnotrawione na powtórne wynajdowanie koła jeśli jest tyle fascynujących problemów czekających na rozwiązanie.

Aby zachowywać się jak hacker musisz wierzyć, że myślowy czas innych hackerów jest cenny – tak bardzo, że niemal moralnym obowiązkiem jest, abyś dzielił się informacjami, rozwiązywał problemy i rozdawał rozwiązania tak, aby inni hackerzy mogli rozwiązywać nowe problemy zamiast konieczności ciągłego przetwarzania starych.

Miej na uwadze, że „żaden problem nie powinien być rozwiązywany dwa razy” nie sugeruje, że musisz uważać wszystkie istniejące rozwiązania za święte, lub że istnieje tylko jedno prawidłowe rozwiązanie danego problemu. Często wiele się uczymy o problemie, którego nie znaliśmy wcześniej; przez studiowanie go przy zacięciu się na rozwiązaniu. Jest to w porządku i często potrzebne, aby decydować, co możemy zrobić jeszcze lepiej. Czymś, co nie jest w porządku to sztuczne, prawne lub instytucjonalne bariery (jak zamknięte źródła kodów), które uniemożliwiają stworzenie i ponowne użycie dobrego rozwiązania zmuszając ludzi do ponownych wynalazków typu: koło.

(Nie musisz wierzyć, że masz obowiązek rozdawać za darmo całą swoją twórczą działalność, choć hackerzy, którzy tak czynią uzyskują najwięcej szacunku od innych. Nie jest sprzeczne z wartościami hackera, żebyś mógł sprzedać wystarczająco dużo, aby mieć dostęp do pożywienia, dachu nad głową i komputerów. Jest logiczne, że używasz swoich hackerskich umiejętności aby utrzymać rodzinę lub wręcz wzbogacić się, tak długo, dopóki robiąc to nie zapomnisz, że jesteś hackerem.)

3. Znudzenie i harówka są złe.

Hackerzy (i twórczy ludzie w ogóle) nigdy nie powinni zanudzać się czy też być zmuszonymi do zaharowywania się przy głupiej i powtarzalnej robocie, ponieważ jeśli tak się stanie, okaże się, że nie robią tego, co powinni – rozwiązywania problemów. To marnotrawstwo szkodzi wszystkim. Dlatego znudzenie i nużąca praca są nie tylko nieprzyjemne, ale w rzeczywistości szkodliwe.

Aby zachowywać się tak, jak hacker, musisz uwierzyć w to wystarczająco mocno, aby zautomatyzować nudne fragmenty tak bardzo, jak to możliwe, nie tylko dla siebie, ale i dla innych (w szczególności innych hackerów).

(Jest jednak pewien oczywisty wyjątek od tej reguły. Hackerzy czasem robią rzeczy, które mogą wydawać się powtarzalnymi lub nudnymi dla obserwatora jako ćwiczenia oczyszczające umysł, lub, gdy w celu osiągnięcia konkretnego rodzaju doświadczenia nie można inaczej. Ale jest to wybór – nikt, kto jest istotą myślącą nie powinien być zmuszany do nudy.)

4. Wolność jest dobra.

Hackerzy z natury sprzeciwiają się narzucaniu władzy. Każdy, kto może wydawać Ci polecenia jest w stanie powstrzymać Cię przed rozwiązywaniem problemu, niezależnie jak bardzo byłbyś nim zafascynowany – a biorąc pod uwagę sposób działania władczych umysłów, zawsze znajdą one jakiś niebywale głupi powód aby tak uczynić. Więc autokratyczne nastawienie powinno być zwalczane gdziekolwiek byś go nie znalazł, w przeciwnym razie stłumi Ciebie i innych hackerów.

(To nie jest wszakże to samo, co zwalczanie wszelkich form władzy. Dzieci muszą być wychowywane, a przestępcy izolowani. Hacker może zgodzić się na zaakceptowanie pewnych form władzy w celu osiągnięcia czegoś co ceni bardziej niż czas, który poświęci spełniając rozkazy. Ale to jest ograniczona i świadoma transakcja, nikt nie oferuje takiej formy uległości, jakiej oczekiwaliby ludzie o autokratycznym nastawieniu).

Autokratom służy cenzura i utajnienie. Nie ufają oni dobrowolnej współpracy i chęci dzielenia się informacjami – jedyną współpracą, którą lubią jest ta kontrolowana przez nich. Więc aby zachowywać się jak hacker, musisz wytworzyć w sobie instynktowną wrogość wobec cenzury, utajnienia i używania siły lub podstępu do wywierania przymusu na odpowiedzialnych za swoje czyny dorosłych ludziach. I musisz być gotów do działania zgodnie z tymi przekonaniami.

5. Postawa nie zastąpi kompetencji.

Aby być hackerem musisz wytworzyć w sobie niektóre z tych postaw. Ale kopiowanie postawy samej dla siebie nie uczyni z Ciebie hackera, tak samo jak postawa nie uczyni z Ciebie mistrza w sporcie lub gwiazdy rocka. Żeby zostać hackerem potrzeba inteligencji, ćwiczeń, poświęcenia i ciężkiej pracy.

W związku z tym musisz nauczyć się niedowierzania dla postawy oraz szacunku dla kompetencji pod każdą postacią. Hackerzy nie pozwolą pozerom marnować ich czasu, ale cenią sobie kompetencję – szczególnie kompetencję w hackerstwie, ale każda inna jest też dobra. Kompetencja w dziedzinach, które niewielu potrafi opanować jest szczególnie ceniona, a kompetencja w dziedzinach, które wymagają umysłowej dokładności, wysiłku i koncentracji jest ze wszystkich najlepsza.

Jeśli jesteś czcicielem kompetencji, będziesz z przyjemnością rozwijać je w sobie – ciężka praca i poświęcenie staną się formą intensywnej zabawy, nie zaś harówką. A to jest szczególnie istotne w procesie stawania się hackerem.

Glider

Podstawowe umiejętności hackera.

Postawa hackera jest istotna, ale umiejętności znaczą jeszcze więcej. Postawa nie zastąpi kompetencji i można wyróżnić pewien konkretny zestaw umiejętności, które będziesz musiał posiąść, zanim hackerom przyśni się nazwać Ciebie jednym z nich.

Ten zestaw zmienia się powoli w czasie wraz z techniką wytwarzającą nowe zdolności i czyniące inne z nich przestarzałymi. Na przykład kiedyś do zasobu zdolności hackera zaliczało się programowanie w języku maszynowym, natomiast do niedawna nie należała do nich znajomość HTMLa. W chwili obecnej w miarę jasno można zaliczyć do nich co następuje:

1. Naucz się programowania.

To jest oczywiście fundamentalna umiejętność hackera. Jeśli nie znasz żadnego języka programowania komputerów, polecam rozpoczęcie od Pythona. Jest zaprojektowany w czysty sposób, dobrze udokumentowany i stosunkowo przyjazny dla początkujących. Pomimo dobrego spełniania roli pierwszego języka programowania, nie jest on po prostu zabawką: jest potężnym i elastycznym narzędziem świetnie dopasowanym do dużych projektów. Napisałem bardziej szczegółową ocenę Pythona. Dobre seminaria są dostępne na witrynie Pythona.

Kiedyś zwykłem polecać Javę jako dobry język do wczesnej nauki, ale to krytyczne opracowanie skłoniło mnie do zmiany zdania (szukaj „The Pitfalls of Java as a First Programming Language”). Hacker nie może tak jak oni – kłaść miażdżąco „podejście do rozwiązania problemu jak hydraulik w sklepie żelaznym”; musisz wiedzieć, co każdy z komponentów w rzeczywistości robi. Teraz myślę, że prawdopodobnie najlepiej będzie uczyć się C oraz LISP najpierw, niż Javy.

Jeśli zajmiesz się poważnym programowaniem, będziesz musiał nauczyć się C, rdzennego UNIXowego języka. C++ jest bardzo blisko powiązany z C; jeżeli będziesz umiał jeden, nauczenie się drugiego nie będzie trudne. Żaden język nie będzie dobrym do próby nauczenia się jako tego pierwszego, jednakże. I tak naprawdę, im będziesz unikać programowania w C tym bardziej wydajniejszy będziesz.

C jest bardzo wydajny i bardzo oszczędny dla zasobów twojej maszyny. Niestety C posiada wydajność poprzez wymóg wykonywania dużej ilości pracy na niskopoziomowym zarządzaniu zasobami (jak pamięć) ręcznie. Cały ten kod niższego poziomu jest skomplikowany i podatny na błędy wyssie z Ciebie ogromne ilości czasu na usuwanie z niego usterek. Z maszynami potężnymi tak jak dzisiejsze jest to zazwyczaj zła wymiana. Mądrzej jest wykorzystać język, który używa czasu maszyny mniej sprawnie, ale za Twojego bardziej efektywnie. Stąd Python.

Inne języki o szczególnej wartości dla hackerów to Perl i LISP. Perl jest wart nauczenia z przyczyn praktycznych: jest bardzo szeroko wykorzystywany do tworzenia aktywnych stron WWW i administracji systemem, więc nawet jeśli nie piszesz programów w Perlu powinieneś nauczyć się go czytać. Wielu ludzi używa Perla w sposób w jaki sugeruję wykorzystanie Pythona, by uniknąć programowania w C, w pracach, które nie wymagają wydajności maszyny. Będziesz musiał umieć rozumieć ich kod.

LISP jest wart nauki dla głębokiego uczucia oświecenia, kiedy go wreszcie zrozumiesz. To doświadczenie uczyni z ciebie o wiele lepszego programistę, nawet jeśli nie używasz LISPa zbyt często. (Możesz dostać trochę doświadczenia na początku z LISPem poprzez łatwe pisanie oraz modyfikowanie trybów redagowania dla edytora Emacs, lub wtyczek Script-Fu dla GIMPa).

Najlepiej jednak nauczyć się wszystkich pięciu (Pythona, C/C++, Javy, Perla, LISPa). Poza faktem, że są najważniejszymi hackerskimi językami programowania, reprezentują bardzo różne podejścia do programowania, a każdy z nich nauczy Cię innych wartościowych rzeczy.

Bądź jednak świadom, że nie osiągniesz poziomu umiejętności hackera, a nawet zwykłego programisty, jeśli będziesz znać zaledwie jeden język – musisz nauczyć się myśleć o problemie programistycznym w sposób ogólny, niezależny od jakiegokolwiek języka. Aby być prawdziwym hackerem, potrzebujesz osiągnąć poziom, na którym możesz nauczyć się nowego języka w ciągu dni poprzez porównanie tego, co wyczytasz w podręczniku z tym, co już umiesz. Oznacza to, że powinieneś nauczyć się kilku bardzo różniących się od siebie języków.

Nie mogę dać tu kompletnych instrukcji jak nauczyć się programowania – to skomplikowana umiejętność. Ale mogę powiedzieć, że książki i kursy tego nie zrobią – wielu, może większość najlepszych hackerów to samouki. Możesz uczyć się cech języka – odrobiny wiedzy – z książek, ale nastawienie, które robi tę wiedzę żywe umiejętności może być nauczone tylko przez praktykę i jeszcze raz praktykę rzemiosła. Co Ci pomoże to: (a) czytanie kodu, (b) pisanie kodu.

Peter Norvig, który jest jednym z głównych hackerów Google i współautor powszechnie używanego podręcznika do AI napisał, celujące wypracowanie Teach Yourself Programming in Ten Years. Jego „recepta na sukces programowania” jest wartą bliższej uwagi.

Nauka programowania jest jak nauka doskonałego pisania w języku naturalnym. Najlepszą metodą jest czytanie rzeczy pisanych przez mistrzów formy, pisanie samemu, czytanie dużo więcej, pisanie nieco więcej, czytanie jeszcze więcej, pisanie jeszcze trochę więcej … powtarzaj aż Twoje pisanie zacznie rozwijać się do siły i wydajności, którą obserwujesz w swoich wzorcach.

Kiedyś znalezienie dobrego kodu było zadaniem trudnym, ponieważ mało było dużych programów dostępnych w kodzie źródłowym do czytania i zabawy dla świeżo opierzonych hackerów. To zmieniło się znacząco. Oprogramowanie z udostępnionym kodem źródłowym, narzędzia programistyczne, systemy operacyjne (wszystkie zbudowane przez hackerów) są dziś szeroko dostępne. I to pięknie doprowadza mnie do następnego tematu…

2. Weź jeden z Uniksów dostępnych z kodem źródłowym i naucz się go używać oraz zarządzać nim.

Zakładam, że masz komputer, lub możesz uzyskać dostęp do takowego. (Zastanów się przez moment jak wiele to znaczy. Kultura hackerska początkowo rozwinęła się, gdy komputery były tak drogie, że poszczególne jednostki nie mogły pozwolić sobie na nie.) Jeden z najważniejszych kroków, który musi postawić nowicjusz w kierunku osiągnięcia umiejętności hackera jest zdobycie kopii Linuksa lub jednego z BSD-Uniksów, zainstalowanie go na komputerze i uruchomienie.

Tak, są systemy operacyjne na tym świecie poza UNIXem. Ale są udostępniane w kodzie binarnym – nie możesz poczytać kodu i nie możesz go zmienić. Próbowanie nauki hackerstwa w DOSie, Windows lub pod MacOS jest jak nauka tańca z gipsem na całym ciele.

Pod Mac OS X jest to możliwe, ale tylko jedna część tego systemu jest wolnym oprogramowaniem – dlatego masz duże szanse uderzyć w wiele ścian i musisz uważać by nie nabyć złego nawyku polegania na kodzie będącym własnością firmy Apple. Jeśli skoncentrujesz się na Uniksie i tym, co ma pod maską możesz nauczyć się wielu przydatnych rzeczy.

Poza tym UNIX jest systemem operacyjnym Internetu. Chociaż możesz nauczyć się posługiwania Internetem bez znajomości Uniksa, lecz bez zrozumienia go nie nauczysz się internetowego hackerstwa. Z tej przyczyny kultura hackerów jest silnie scentralizowana wokół Uniksa. (To nie zawsze była prawda i niektórzy hackerzy starej daty nie są z tego powodu szczęśliwi, ale symbioza pomiędzy Uniksem i Internetem stała się tak silna, że nawet potęga Microsoftu nie jest w stanie zadać jej poważnego ciosu).

Więc postaw Uniksa – osobiście lubię Linuksa, ale są inne drogi (no i oczywiście możesz używać Linuksa i DOS/Windows na tej samej maszynie). Naucz się go. Zarządzaj nim. Baw się nim. Nawiąż kontakt z Internetem za jego pomocą. Czytaj jego kod źródłowy. Modyfikuj kod. Otrzymasz lepsze narzędzia programistyczne (włączając C, Lisp, Python, i Perl) niż system operacyjny Microsoftu mógłby marzyć, będziesz miał kupę frajdy i wsiąkniesz więcej wiedzy niż się zorientujesz zanim nie spojrzysz na to później z perspektywy hackerskiego mistrza.

Aby nauczyć się więcej o Uniksie, zobacz The Loginataka. Również możesz przejrzeć się The Art Of Unix Programming.

By dorwać się do Linuksa, przejrzyj stronę Linux Online!. Możesz ściągnąć do stamtąd lub lepszym pomysłem będzie znalezienie członka lokalnej grupy użytkowników Linuksa, który pomoże Ci przy instalacji.

Podczas pierwszych dziesięciu lat życia tego HOWTO, zdołałem się przekonać, że z punktu widzenia nowego użytkownika – wszystkie dystrybucje Linuksa są prawie takie same. Ale w latach 2006 – 2007 pojawił się najlepszy wybór: Ubuntu. Podczas, gdy inne dystrybucje mają własne obszary, w których są mocne – Ubuntu jest zdecydowanie najdostępniejszym dla Linuksowych nowicjuszów.

Pomoc oraz dokumentację do Uniksów BSD pod adresem: http://www.bsd.org/.

Kiedyś zwykłem polecać nowicjuszom instalowanie w pojedynkę zarówno Linuksa i BSD. W dzisiejszych czasach instalatory są wystarczająco dobre, by wykonać cały proces instalacji za Ciebie – nawet jeśli jestem nowicjuszem. Niemniej, wciąż polecam nawiązanie kontaktu z lokalną grupą użytkowników Linuksa i poproszenie o pomoc w instalacji. Nigdy nie zaszkodzi spróbować, a dzięki temu możemy uzyskać wiele cennych uwag i łatwy przebieg procesu instalacji.

3. Naucz się używać World Wide Web i pisać w HTML.

Większość rzeczy, które zostały zbudowane przez kulturę hackerską jest ukrytych przed wzrokiem pozwalając kierować fabrykami, biurami i uniwersytetami bez widocznego piętna na stylu życia nie-hackerów. Web jest jednym wielkim wyjątkiem, wielką błyszczącą zabawką hackerów, która, co potwierdzają nawet politycy, zmienia świat. Z tego jedynego powodu (i wielu innych równie dobrych) powinieneś nauczyć się jak działa Sieć.

Nie oznacza to po prostu nauki posługiwania się przeglądarką (każdy to może zrobić), ale naukę pisania w HTML, języku stron internetowych. Jeśli nie umiesz programować, pisanie w HTMLu nauczy Cię paru umysłowych przyzwyczajeń, które pomogą Ci to opanować. A więc: zbuduj sobie stronę domową. Spróbuj trzymać się XHTML’a, który jest bardziej przejrzysty niż klasyczny HTML. (Tutaj znajdziesz dobre tutoriale dla początkujących).

Jednakże posiadanie samej strony domowej nie jest jeszcze wystarczające do uczynienia Cię hackerem Sieć jest pełna stron domowych. Większość z nich jest bezcelowymi, pozbawionymi zawartości ściekami – bardzo wymyślnie wyglądającymi, trzeba zauważyć, ale ściekami bez dwóch zdań (dla dalszych informacji zobacz The HTML Hell Page).

Aby Twoja strona posiadała wartość musi zawierać treść – musi być interesująca i/lub użyteczna dla innych hackerów. A to przenosi nas do następnego tematu…

4. Jeśli nie posługujesz się funkcjonalnym angielskim, naucz się go.

Jako Amerykanin, który rodzinnie ma wpojony język angielski w mowie i piśmie, wcześniej nie chciałem sugerować tego, żeby nie zostać uznany jako wyznawcę kulturalnego imperializmu. Ale kilku rozmówców o innym ojczystym języku nakłoniło mnie by zwrócić uwagę na to, że angielski jest roboczym językiem kultury hackerów i Internetu, i że będziesz musiał znać go w formie funkcjonalnej będąc w społeczności hackerów.

Wracając do mniej więcej 1991 roku nauczyłem się, że wielu hackerów, którzy posiadają angielski jako drugi język – używa go w technicznych dyskusjach nawet, gdy istnieje możliwość rozmowy w ojczystym języku. Poinformowano mnie wtedy, że angielski ma bogatsze słownictwo techniczne niż jakikolwiek inny język i dlatego jest prostszym i lepszym narzędziem w pracy. Dla podobnych powodów, tłumaczenia technicznych książek napisanych w języku angielskim są często niezadawalające (kiedy w ogóle są tłumaczone).

Linus Trovalds, Fin, komentuje swój kod po angielsku (nigdy mu nie przyszło do głowy robić inaczej). Jego biegła znajomość angielskiego była ważnym czynnikiem w jego umiejętności rekrutowania ogólnoświatowej wspólnoty developerów dla Linuksa. Ten przykład jest godny naśladowania.

Bycie ojczystym mówcą angielskiego nie gwarantują, że posiadasz umiejętności językowe wystarczające dobre by funkcjonować jako hacker. Jeśli Twoje pismo jest niedouczone, niegramatyczne, podziurawione przejęzyczeniami, wielu hackerów (w tym ja) będzie miała skłonność ignorowania Ciebie. Podczas, gdy byle jakie pisanie niezmiennie nie oznacza powierzchownego rozumowania, generalnie uznaliśmy, że korelacja silna – i nie ma użytku dla niedbałych myślicieli. Jeśli nie potrafisz pisać kompetentnie – naucz się.

Glider

Status w kulturze hackerskiej

Podobnie jak większość kultur nie zawierających ekonomii pieniądza hackerstwo opiera się na pojęciu reputacji. Starasz się rozwiązać interesujące problemy, ale na ile są one interesujące oraz na ile Twoje rozwiązania są dobre jest zagadnieniem, które potrafią osądzić tylko podobni Tobie lub lepsi od Ciebie.

W związku z tym, jeśli bierzesz udział w tej hackerskiej zabawie uczysz się oceniać własne wyniki tylko na podstawie tego, co inni sądzą o Twoich umiejętnościach (stąd właśnie bierze się stwierdzenie, że nie jesteś hackerem dopóki inni hackerzy uparcie nie nazywają Cię hackerem). Ten fakt jest nieco stłumiony przez wizerunek hackera jako samotnika. Podobnie działa tabu kultury hackerskiej (stopniowo zanikające, ale ciągle obecne) sprzeciwiające się wyznaniu, że ego lub zewnętrzne uznanie mogą być w ogóle czyimkolwiek czynnikiem motywującym.

Z pewnego punktu widzenia hackerstwo jest czymś, co antropologia nazywa kulturą darów. Zdobywasz w niej status i reputację nie poprzez dominacje nad innymi ludźmi, nie za swoją urodę, nie dlatego, że posiadasz to, co inni chcą mieć, ale dlatego, że dajesz coś innym za darmo. W szczególności rozdając swój czas, swoją kreatywność, wyniki swoich umiejętności.

Ogólnie wyróżnia się pięć rzeczy, które można robić dla zdobycia respektu przez hackerów:

1. Pisz oprogramowanie z udostępnionym kodem źródłowym

Pierwszym (centralnym i najbardziej tradycyjnym) elementem jest tworzenie programów, które są odbierane przez innych hackerów jako zabawne lub użyteczne, oraz udostępnianie kodów źródłowych do użytku dla całej kultury hackerskiej.

(Zwyczajowo nazywało się te prace „oprogramowaniem darmowym”, ale zbyt wielu ludzi nie wiedziało do końca co miałoby znaczyć pojęcie „darmowy”. Wielu z nas woli teraz określenie „otwarte oprogramowanie” (ang. „open source” software)).

„Półbogami” hackerstwa są ludzie, którzy napisali duże, użyteczne programy, stanowiące odpowiedź na szerokie zapotrzebowanie, a teraz udostępniają je za darmo, do użytku dla wszystkich zainteresowanych.

Jest w tym trochę historycznej prawdy. Podczas, gdy hackerzy zawsze podziwiali developerów otwartego oprogramowania jako najtwardszy rdzeń naszej społeczności, przed połową lat dziewięćdziesiątych większość hackerów poświęcała czas pracy na zamkniętym oprogramowaniu. To było wciąż prawdą, gdy napisałem pierwszą wersję tego HowTo w 1996 roku. Potrzeba było głównego nurtu w otwartym oprogramowaniu po 1997 roku by zmienić kilka rzeczy. Dzisiaj „społeczność hackerska” i „developerzy otwartego oprogramowania” są dwoma opisami, które zasadniczo tyczą się tej samej kultury i populacji – lecz warto pamiętać, że nie zawsze tak było.

2. Pomagaj testować i usuwać błędy w programach z udostępnionym kodem źródłowym

Hackerzy pomagają testować i usuwać błędy w oprogramowaniu z dostępnym kodem źródłowym. W tym niedoskonałym świecie nieuniknione jest, że większość naszego czasu przy tworzeniu oprogramowania poświęcamy na usuwanie błędów. Dlatego każdy autor programów powie Ci, że dobry beta-tester (taki, który potrafi opisać symptomy, dobrze zlokalizować problemy, toleruje błędy we wczesnych wersjach i umie zastosować kilka prostych procedur diagnostycznych) jest na wagę złota. Nawet jeden taki człowiek jest w stanie pokazać różnicę pomiędzy procesem debugowania wydającym się czasochłonnym, wyczerpującym koszmarem, a takim, który jest wręcz dobroczynną uciążliwością.

Jeśli jesteś nowicjuszem, spróbuj znaleźć program w trakcie procesu tworzenia, który Cię zainteresuje i bądź dobrym beta-testerem. Istnieje naturalny postęp od pomagania przy testowaniu, poprzez pomoc przy usuwaniu błędów aż do pomocy przy tworzeniu programu. W ten sposób nauczysz się wiele i wytworzysz dobre fluidy z ludźmi, którzy później pomogą i Tobie.

3. Publikuj użyteczne informacje

Inną użyteczną działalnością jest gromadzenie i filtrowanie użytecznych informacji i umieszczanie ich na stronach internetowych i w dokumentach typu FAQ (Frequently Asked Questions – „często zadawane pytania”) oraz udostępnianie ich dla szerokiego forum.

Osoby zarządzające dokumentami technicznymi typu FAQ są szanowane prawie tak, jak autorzy oprogramowania.

4. Pomóż działać infrastrukturze

Kultura hackerska (i techniczny rozwój internetu, jeśli o tym mowa) jest napędzana przez ochotników. Jest wiele koniecznej, ale niezbyt widowiskowej roboty, którą trzeba wykonać, aby wszystko działało tak, jak należy – administracja e-mailowymi listami dyskusyjnymi, filtrowanie grup dyskusyjnych (moderowanie), zarządzanie dużymi archiwami oprogramowania, rozwijanie różnych dokumentów i standardów technicznych.

Ludzie wykonujący dobrze ten rodzaj pracy uzyskują dużo szacunku, bo każdy wie, że ta robota pochłania mnóstwo czasu i nie jest tak ciekawa, jak zabawa z kodem. Robienie tego pokazuje poświęcenie.

5. Służ samej kulturze hackerskiej

W końcu, możesz służyć samej kulturze oraz szerzyć jej ideologię (chociażby za pośrednictwem napisania niezłej rozprawy na temat: „Jak zostać hackerem” :-)). Inni nie będą tego od Ciebie oczekiwać, o ile nie kręciłeś się w tym temacie od jakiegoś czasu i nie zostałeś postacią dobrze znaną z któregoś z pierwszych czterech zagadnień.

Kultura hackerów nie posiada przywódców w typowym rozumieniu tego słowa, ale posiada kulturowych bohaterów, starszyznę „plemienną”, historyków i rzeczników. Jeśli wystarczająco długo przebywałeś w obozie, możesz w końcu wyrosnąć na jednego z nich. Strzeż się jednak: hackerzy nie ufają wybujałym osobowościom swojej „starszyzny”, więc sięganie po tego typu zaszczyty może być niebezpieczne. Zamiast walki o nie powinieneś raczej ustawić się odpowiednio, aby same upadły do Twoich stóp, a wtedy bądź skromny i wdzięczny za swoją pozycję w grupie.

Glider

Związek pomiędzy pojęciem „hacker”, a „nerd”

Wbrew popularnemu mitowi nie musisz być nerdem (ang. kujonem / molem książkowym / nudziarzem), aby móc zostać hackerem. To niewątpliwie pomaga i wielu hackerów jest naukowymi odludkami. Bycie wyrzutkiem społecznym pomaga skupić się na ważnych rzeczach, takich jak myślenie i grzebanie w kodzie.

Z tego powodu wielu hackerów zaadoptowało sobie etykietę geeka (ang. dziwaka / świra / nudziarza) – jako oznaki własnej dumy – jest to forma zadeklarowania ich niezależności od normalnych społecznych oczekiwań (tak jak zamiłowanie do innych rzeczy jak fantastyka naukowa i gry strategiczne, które często łączą się z byciem hackerem). Termin „nerd” używany był w latach 90’tych jako określenie dość pejoratywno-łagodne, a określenie „geek” raczej surowsze; kiedyś po 2000 roku terminy te zamieniły się miejscami, przynajmniej w kulturze masowej Stanów Zjednoczonych. Wśród ludzi, którzy nie są entuzjastami postępu technicznego rozwinęła się nawet kultura na określenie dumnym geekem, każdego kto posiada czapeczkę baseballową oraz podręczny piórnik w kieszonce koszuli.

Jeśli potrafisz skoncentrować się na hackerstwie wystarczająco, aby być w tym dobrym i wciąż posiadasz własne życie – w porządku. Dziś jest dużo łatwiej niż w latach siedemdziesiątych, kiedy byłem nowicjuszem. Główny nurt kultury społeczeństwa jest dziś dużo bardziej przyjacielsko nastawiony wobec techno-dziwaków. Zwiększa się nawet ilość ludzi zdających sobie sprawę z faktu, że hackerzy są często świetnym materiałem na partnerów i małżonków.

Jeśli pasjonujesz się hackerstwem, bo nie posiadasz własnego życia, to też w porządku – przynajmniej nie będziesz miał problemów z koncentracją. Może później rozpoczniesz prywatne życie.

Punkty za styl

Znów: aby być hackerem, musisz wejść w styl myślenia hackera. Jest kilka rzeczy, które możesz robić, jeśli nie siedzisz za komputerem. Nie są one substytutami hackerstwa (nic nie jest), ale wielu hackerów to robi czując, że na pewien sposób wiążą się w swych podstawach z duchem hackerstwa.

  • Naucz się dobrze pisać swoim ojczystym językiem. Jest to tylko stereotypem, że programiści nie potrafią składnie pisać, zaskakująca liczba hackerów (wliczając w to najznakomitszych jakich znam) są bardzo zdolnymi pisarzami.
  • Czytaj science-fiction. Odwiedzaj konwenty science-fiction (świetny sposób, aby spotkać hackerów, lub osoby dobrze rokujące, aby nimi zostać).
  • Trenuj w sztukę walki. Rodzaj dyscypliny myślowej wymaganej dla sztuk walki wydaje się pod ważnymi względami być podobnym do tego, co robią hackerzy. Najpopularniejszymi formami wśród hackerów są z pewnością azjatyckie sztuki
    trenowane pustą ręką – jak Tae Kwon Do, rozmaite formy Karate, Kung-Fu, Aikido, lub Ju Jitsu. Zachodnia szermierka i azjatyckie formy sztuk walki z mieczem także posiadają duże wzięcie. W miejscach, w których dozwolone jest posiadanie własnej broni palnej sztuki te cieszą się dużą popularnością od lat dziewięćdziesiątych. Najbardziej hackerskimi sztukami walk są te, które podkreślają dyscyplinę myślową, zrelaksowanej świadomości i kontroli, a nie surowej siły, atletyczności lub bezwzględności fizycznej.
  • Studiuj aktualną dyscyplinę medytacji. Stałym ulubieńcem wśród hackerów jest Zen (istotnym faktem, jest że z Zen można skorzystać nie posiadając żadnej religii lub nie ma wymogu pozbycia się tej, którą już masz). Inne style medytacji
    nadają się równie dobrze, ale bądź ostrożny w ich doborze, by nie wybrać jakiegoś, który wymaga wiary w jakieś szalone rzeczy.
  • Rozwijaj w sobie analityczny słuch do muzyki. Naucz się cenić specyficzne gatunki muzyki. Naucz się dobrze grać na jakimś instrumencie lub dobrze śpiewać.
  • Rozwiń w sobie szacunek dla gier umysłowych i zabawy słownej.

Im więcej z tych rzeczy robisz, tym bardziej prawdopodobne, że jesteś dobrym materiałem na hackera. Nie wiadomo do końca, dlaczego akurat te rzeczy kojarzą się ze zdolnościami hackerskimi, ale są one związane z jednoczesnym wykorzystywaniem zdolności prawej i lewej półkuli mózgowej, a to wydaje się być ważne; hackerzy muszą zarówno myśleć logicznie jak i być w stanie wyjść poza zakres pozornej logiki, by móc przekroczyć barierę swoich wyobrażeń w danej chwili.

Pracuj tak intensywnie jak się bawisz i baw się tak intensywnie jak pracujesz. Dla prawdziwych hackerów, granice między „zabawą”, „pracą”, „nauką” i „sztuką” mają skłonności do zanikania lub łączenia się w swawolną twórczość na wysokim poziomie. Co więcej, nie bądź zadowolonym z wąskiego zakresu swoich umiejętności. Chociaż większość hackerów przedstawia się jako programistów, są oni bardzo kompetentni w wielu innych umiejętnościach – administracji systemem, projektowaniu stron WWW, rozwiązywaniu problemów związanych ze sprzętem komputerowym. Hacker, który jest administratorem systemu, ma wiele wspólnego z wykwalifikowanym programowaniu w języku skryptowym i projektowaniu stron WWW. Hackerzy nie robią niczego połowicznie; jeśli interesują się jakąś umiejętnością, starają się być w niej bardzo dobrzy.

W końcu kilka rzeczy, których nie należy robić.

  • Nie używaj głupich, górnolotnych pseudonimów.
  • Nie wdawaj się w święte wojny na Usenecie (lub gdziekolwiek indziej).
  • Nie nazywaj siebie „cyberpunkiem” i nie marnuj czasu na kogokolwiek, kto określa siebie kimś takim.
  • Nie wysyłaj poczty lub ogłoszeń na grupach dyskusyjnych, które będą pełne błędów ortograficznych, lub gramatycznych.

Reputacja jaką zdobędziesz robiąc te rzeczy jest niewiele warta. Hackerzy mają dobrą pamięć – może upłynąć wiele lat Twojego życia zanim zostaniesz zaakceptowany.

Problem z nickami lub ksywkami zasługuje na szersze zwrócenie uwagi. Skrywając swoją tożsamość za pseudonimem jest charakterystyczne dla młodocianych i niepoważnych crackerów, łamaczy zabezpieczeń nielegalnie zdobytego oprogramowania (warez d00dz) i innych niższych form życia. Hackerzy nie mają w zwyczaju ukrywania się jedynie za przydomkami; są dumni z tego, co robią i chcą być powiązani z ich rzeczywistymi imionami. Więc jeśli chowasz się za ksywką – odpuść sobie. W kulturze hackerów zostaniesz naznaczony jako nieudolny użytkownik (ang. luser).

Glider

Inne źródła:

Paul Graham napisał wypracowanie nazwane Great Hackers oraz Undergraduation, w których zawarł dużo mądrości.

Peter Seebach zarządza świetnym Hacker FAQ dla managerów, którzy nie wiedzą, jak postępować z hackerami.

Jest także dokument zwany How To Be A Programmer będący doskonałym uzupełnieniem tej kwestii. Ma cenne rady nie tylko na temat samego programowania, ale również jak fukcjonować w programowaniu jako zespół.

Napisałem również A Brief History Of Hackerdom (Krótka historia hackerstwa).

Jestem autorem artykułu The Cathedral and the Bazaar (Katedra i bazar), który wyjaśnia, w jaki sposób działąją kultury hackerskie wokół Linuksa i oprogramowania z dostępnym kodem źródłowym. W dalszej części Homesteading the Noosphere (Zagospodarowywanie noosfery) treści te znalazły jeszcze bardziej bezpośredni opis.

Rick Moen napisał doskonały dokument na temat: jak prowadzić własną grupę Linuksa.

Rick Moen i ja przeprowadziliśmy kolaborację nad innym dokumentem How To Ask Smart Questions (Jak zadawać mądre pytania). To pomoże Ci szukać pomocy w sposób, który prawdopodobnie sprawi, że ją dostaniesz.

Jeśli potrzebujesz instrukcji o podstawach personalnych komputerów, Uniksa i pracy w Internecie, zobacz The Unix and Internet Fundamentals HOWTO.

Kiedy wypuścisz oprogramowanie lub napiszesz łaty poprawiające jego funkcjonalność, spróbuj podążać wskazówkami z Software Release Practice HOWTO.

Jeśli spodobała Ci się poezja Zen może również polubisz Rootless Root: The Unix Koans of Master Foo.

Glider

Często zadawane pytania [ FAQ ]

Pytanie: Skąd będę wiedział czy już jestem hackerem?

Odpowiedź: Zadaj sobie następujące trzy pytania:

  • Czy mówisz w języku programowania biegle?
  • Czy identyfikujesz się z celami i wartościami społeczności hackerskiej?
  • Czy kiedykolwiek korzenny członek społeczności hackerskiej nazwał Cię hackerem?

Jeśli możesz odpowiedzieć tak na te wszystkie trzy pytania, jesteś hackerem. Żadne dwa w pojedynkę nie wystarczą.

Pierwszy test tyczy się Twoich umiejętności. Prawdopodobnie przeszedłeś go, jeśli masz minimalne techniczne umiejętności opisane wcześniej w tym dokumencie. Wręcz przeleciałeś przez niego, jeśli dokonałeś stworzenia poważnej ilości kodu zaakceptowanej przez rozwój jakiegoś projektu Open Source.

Drugi test jest o Twoim nastawieniu. Jeśli pięć zasad mentalności hackera było dla Ciebie bardziej niż oczywistym opisem – drogi według, której już żyjesz jak w noweli – jesteś w połowie drogi do jego przejścia. To jest ta skryta część; zewnętrzną połową jest stopień, w którym identyfikujesz się z długoterminowymi projektami społeczności hackerskiej.

Tutaj jest niedokończona, ale wskazująca lista na niektóre z tych projektów: Czy jest dla Ciebie ważne by ulepszać i polecać system Linux? Czy jesteś pasjonatem wolnego oprogramowania? Wrogi wobec monopolów? Postępujesz zgodnie z przekonaniem, że komputery mogą być instrumentami empowermentu, który powoduje, że świat staje się bogatszy i bardziej humanitarny?

Ale nota ostrożności ma tutaj swój porządek. Społeczność hackerska ma jakiś konkretny, głównie politycznie obronny interes – dwoje z nich występuje w obronie praw wolnoprzemówień i odrzuca mocno trzymające łapy „intelektualnej-własności”, które by czyniły wolne oprogramowanie niedozwolonym. Niektóre z tych długo terminowych projektów są organizacjami walczącymi o wolność cywilną np. jak EFF (ang. Electronic Frontier Foundation) – Fundacja Elektronicznej Granicy, która dzięki odpowiedniemu nastawieniu posiada zewnętrzne poparcie. Lecz, ponad to większość hackerów ogląda próby systematyzowania wartości hackerskich do wyraźnych programów politycznych z podejrzliwością; poprzez trudną drogę nauczyliśmy się, że próby te powodują jedynie podział oraz rozproszenie. Jeśli ktoś rekrutuje Cię do marszu na Twoją własną stolicę w imieniu wartości hackerskich – nie zrozumiał sedna sprawy. Prawidłowa wówczas odpowiedź by prawdopodobnie brzmiała: „Zamknij się i pokaż im kod”.

Trzeci test ma trudny element rekursywności o tym. W części „Hacker – kto to taki?” zauważyłem, że bycie hackerem jest częściowo sprawą należenia do szczególnej subkultury lub sieci społecznościowej ze wspólną historią – wewnątrz i na zewnątrz. W dalekiej przeszłości hackerzy byli dużo mniej zwartą i samokrytyczną grupą niż są dzisiaj. Ale znaczenie aspektu sieci społecznościowych przez ostatnie trzydzieści lat nabrało na mocy, gdy to Internet zaczął łączyć się z rdzeniem subkultury hackerskiej – łatwiejszej do rozwinięcia i utrzymania. Jedną z łatwiej dostrzegalnych zmian w naszym zachowaniu tego wieku jest to, że mamy nasze własne t-shirty.

Socjolodzy, którzy studiują sieci takie jak w te z kultury hackerów – uchodzące pod wspólną banderą „niewidzialnych college’ów”, zauważyli, że jedną, wspólną cechą charakterystyczną takich sieci jest to – że posiadają one swoich – strażników – czyli starszych członków ze społecznym autorytetem mogących lub nie udzielać poparcia wstępu nowym członkom do sieci. Ponieważ „niewidzialny college” jakim jest kultura hackerów jest luźnym i nieformalnym stowarzyszeniem – rola takiego strażnika również uchodzi za nieformalną. Jedyną rzeczą, którzy wszyscy hackerzy rozumieją i czują w kościach – jest to, że nie każdy hacker jest strażnikiem. Strażnicy muszą mieć pewien stopień starszeństwa i osiągnięć zanim będą mogli czuć się w tej roli pewnie. Jak wielce muszą być zasłużeni – trudno powiedzieć, ale każdy hacker potrafi dostrzec to jak tylko to zobaczy.

Pytanie: Nauczysz mnie hackerstwa?

Odpowiedź: Od pierwszej publikacji tego dokumentu otrzymuję kilka próśb tygodniowo (często kilka w ciągu dnia) o to, żebym kogoś „nauczył wszystkiego o hackerstwie”. Niestety, nie mam ani czasu ani energii aby to uczynić. Moje własne projekty hackerskie zajmują mi 110% czasu. Nawet gdybym miał czas, hackerstwo jest postawą i umiejętnością, których musisz po prostu nauczyć się sam. Przekonasz się, że chociaż prawdziwi hackerzy chcą Ci pomóc, nie uszanują Cię, jeśli będziesz ich błagać, żeby karmili Cię swoją wiedzą jak łyżeczką. Naucz się na początku kilku rzeczy. Pokaż, że się starasz, że potrafisz uczyć się samodzielnie. Potem zwróć się do znajomych hackerów ze szczegółowymi pytaniami. Jeśli przesyłasz e-mail hackerowi – pytając go o radę – musisz wiedzieć o dwóch rzeczach z góry. Na początku odkryliśmy, że ludzie, którzy są leniwi lub niedbali w piśmie zazwyczaj są zbyt leniwi lub niedbali w swoich zapatrywaniach na dobrego hackera – więc zwracaj uwagę na poprawną pisownię, gramatykę i interpunkcję – w przeciwnym wypadku prawdopodobnie zostaniesz zignorowany. Po drugie nie waż się prosić o odpowiedź na konto ISP, które jest innym niż konto, z którego wysyłasz e-mail. Łatwo stwierdzić, że tacy ludzie są zwyczajnymi złodziejami korzystającymi z ukradzionych kont i nikt nie będzie zainteresowany w udzieleniu pomocy kradzieży czy nagrodzeniem za taki wyczyn.

Pytanie: W takim razie jak mogę zacząć?

Odpowiedź: Najlepszą metodą jest odnaleźć Grupę Użytkowników Linuksa w pobliżu i udać się na ich spotkanie. Możesz znaleźć linki do kilku list takich grup na stronie PLUG; jedna z nich jest prawdopodobnie niedaleko Ciebie, prawdopodobnie powiązana z jakimś uniwersytetem. Członkowie takich grup dadzą Ci Linuksa jeśli o niego poprosisz i poświęcą trochę czasu by pomóc Ci go zainstalować i zacząć z nim pracę.

Pytanie: Kiedy mam zacząć? Czy nie jest za późno bym zaczął się uczyć?

Odpowiedź: Każdy wiek, w którym aktualnie jesteś umotywowany do zaczęcia nauki jest dobrym wiekiem. Większość ludzi wydaje się stawać zainteresowanymi hackerstwem pomiędzy 15, a 20 rokiem życia, ale wiem o wyjątkach w obu kierunkach.

Pytanie: Jak długo zajmie mi nauka hackingu?

Odpowiedź: To zależy jak bardzo utalentowanym jesteś i jak mocno będziesz pracował nad tym. Większość ludzi, którzy próbują – mogą zdobyć przyzwoitą wiedzę i biegłość w przedziale od osiemnastu miesięcy do dwóch lat – jeśli naprawdę się skoncentrują. I nie myśl, że na tym to wszystko się kończy; w hackingu (tak jak w innych dziedzinach) okres około dziesięciu lat pozwala na osiągnięcie mistrzostwa. A jeśli staniesz się prawdziwym hackerem – spędzisz resztę swojego życia na uczeniu i udoskonalaniu swojego fachu.

Pytanie: Czy Visual Basic jest dobrym językiem na początek?

Odpowiedź: Jeśli zadajesz to pytanie, to prawie na pewno oznacza to, że myślisz o hackowaniu pod Microsoft Windows. Jest to zły pomysł sam w sobie. Kiedy porównałem próbę nauki hackingu pod Windowsem do próby nauki tańca podczas noszenia odlewu gipsowego całego ciała – nie żartowałem. Nie idź w tą stronę. Tam jest paskudnie i nigdy nie przestanie być.

Jest jeden specyficzny problem z Visual Basic; nie jest on przenośnym na inne platformy systemowe. Chociaż jest prototyp open soruce’owej implementacji Visual Basic’a to standardy ECMA (European association for standardizing information and communication systems – Europejskie Stowarzyszenie na rzecz Standaryzacji Systemów Informacyjnych i Komunikacyjnych; dawniej ang. European Computer Manufacturers Association – Europejskie Stowarzyszenie Producentów Komputerów) nie obejmują więcej niż małego zbioru jego interfejsów programowania. W Windowsie większa część wsparcia dla bibliotek jest własnością jednego dostawcy (Microsoftu); jeśli nie będziesz niezwykle ostrożnym w funkcjonalnościach, które wykorzystujesz – nawet ostrożniejszy niż potrafi naprawdę być internetowy nowicjusz – skończysz zamknięty tylko w tych platformach, które Microsoft postanowi obsługiwać. Jeśli zaczniesz od Uniksa będziesz miał dostęp do znacznie lepszych języków programowania i bibliotek. Dla przykładu: Python’a.

Również jak inne formy Basic’ów, Visual Basic jest kiepsko zaprojektowanym językiem, który nauczy Cię tylko złych zwyczajów w programowaniu. Nie, nie proś mnie o podanie szczegółowych przykładów, ponieważ można by nimi wypełnić nie jedną książkę. Zacznij uczyć się dobrze zaprojektowanego języka zamiast tego.

Jednym z tych złych nawyków jest stanie się zależnym od bibliotek i narzędzi programistycznych jednego dostawcy oprogramowania. Na ogół jakikolwiek język, który nie jest w pełni obsługiwany, co najmniej przez Linuksa albo jedną z wersji BSD i / lub, co najmniej trzech innych producentów systemów operacyjnych jest zbyt ubogim do nauki hackingu.

Pytanie: Pomożesz mi włamać się do systemu, lub nauczysz mnie crackerstwa?

Odpowiedź: Nie. Każdy, kto ciągle zadaje takie pytanie po przeczytaniu tego dokumentu jest zbyt głupi, by go czegoś nauczyć, nawet gdybym miał na to czas. Jakiekolwiek podobne prośby wysłane e-mailem zostaną zignorowane, lub odpowiem na nie ze skrajną nieuprzejmością.

Pytanie: Jak mogę zdobyć hasło do jakiegoś innego konta?

Odpowiedź: To jest cracking. Odejdź idioto.

Pytanie: Jak mogę włamać się / czytać / monitorować kogoś pocztę e-mail?

Odpowiedź: To jest cracking. Spadaj pajacu.

Pytanie: Jak mogę ukraść uprawnienia @Pa na kanale IRC?

Odpowiedź: To jest cracking. Przepadnij kretynie.

Pytanie: Zostałem ofiarą crackingu. Pomożesz mi odeprzeć kolejne ataki?

Odpowiedź: Nie. Jak dotychczas, ile razy zadano mi to pytanie było ono od jakiś biednych durni użytkujących Microsoft Windows. Nie istnieje skuteczny sposób zabezpieczenia systemów Windows przed wyborowymi atakami crackerów – kod i architektura po prostu mają zbyt wiele luk, co czyni zabezpieczanie Windowsa jak próbowanie wypłynięcia łodziom z dziurawym dnem. Jedyną niezawodną prewencją jest przejście na Linuksa lub inny system operacyjny, który jest zaprojektowany by być zdolnym do ochrony.

Pytanie: Mam problemy ze swoim oprogramowaniem Windowsa. Pomożesz mi?

Odpowiedź: Tak. Przejdź do linii poleceń DOS i wpisz: „format c:”. Jakiegokolwiek problemu doświadczysz przestanie istnieć w ciągu kilku minut.

Pytanie: Gdzie mogę znaleźć prawdziwych hackerów do rozmowy?

Odpowiedź: Najlepszą metodą jest odnaleźć grupę użytkowników Uniksa lub Linuksa w pobliżu i udać się na ich spotkanie (możesz znaleźć linki do kilku list takich grup na stronie LDP ibiblio).

(Kiedyś uważałem, że nie spotkasz prawdziwych hackerów na IRC, ale miałem okazję przekonać się, że to się zmienia. Okazuje się, że niektóre społeczności hackerskie, związane z takimi rzeczami jak GIMP czy Perl mają własne kanały IRC.)

Pytanie: Czy możesz polecić mi jakieś książki tematycznie związane z hackingiem?

Odpowiedź: Rozwijam Linuksową Listę Lektur HOWTO, którą możesz uznać za pomocną. Loginataka równieżm może być interesująca.

Dla wprowadzenia do Python’a, zobacz podstawową dokumentację na jego oficjalnej stronie.

Pytanie: Czy muszę być dobry z matematyki by zostać hackerem?

Odpowiedź: Nie. Hacking używa bardzo mało formalnej matematyki lub arytmetyki. Szczególnie nie będziesz potrzebował trygonometrii, obliczeń rachunkowych lub analizy matematycznej (oczywiście są wyjątki w garsce konkretnych obszarów czy programów użytkowych takich jak grafika komputerowa 3D). Znajomość jakieś logiki formalnej i algebry Boole’a jest dobrym pomysłem. Jakieś podstawy w zakresie ograniczonej matematyki (wliczając w to teorię ograniczonych zbiorów, kombinatoryki i teorii grafów) mogą być pomocne.

Dużo bardziej istotnymi są sposoby logicznego myślenia i podążania za łańcuchami precyzyjnego rozumowania, jakimi kierują się matematycy. Podczas, gdy większość samej matematyki nie pomoże Ci, będziesz potrzebował dyscypliny i inteligencji by opanować ową matematykę. Jeśli nie posiadasz inteligencji jest mała nadzieja dla Ciebie jako hacker; jeśli brak Ci dyscypliny – lepiej ją wypracuj.

Myślę, że dobrym sposobem na sprawdzenie tego czy masz to czego potrzeba jest przeczytanie książki Raymond’a Smullyan’a What Is The Name Of This Book? Swawolne, logiczne zagadki Smullyan’a są bardzo utrzymane w hackerskim duchu. Możliwość ich rozwiązania jest dobrym znakiem; delektowanie się rozwiązywaniem ich jest jeszcze lepszym.

Pytanie: Jakiego języka powinienem nauczyć się na początku?

Odpowiedź: XHTML (ostatni dialekt HTML’a) jeśli jeszcze go nie znasz. Jest pełno widowiskowych, przeładowanych formą, złych książek o HTML’u na rynku i załamująco niewiele dobrych. Tą, którą lubię najbardziej jest HTML: The Definitive Guide.

Ale HTML nie jest pełnym językiem programowania. Kiedy będziesz gotowy zacząć programować, polecam rozpoczęcie od Pythona. Spotkasz wiele osób polecających Perla, i Perl jest popularniejszy od Pythona, ale jest trudniejszy do nauki (i w mojej opinii) gorzej zaprojektowanym.

C jest naprawdę ważne, ale jest też dużo trudniejsze od Perla i Pythona. Nie próbuj uczyć się go na początku.

Użytkownicy Windowsa, nie zadowalajcie się Visual Basic’em. To nauczy was tylko złych nawyków i nie jest przenośny poza Windows. Unikać tego.

Pytanie: Jakiego rodzaju sprzęt będę potrzebował?

Odpowiedź: Bywało, że komputery osobiste były raczej małej mocy obliczeniowej i ubogie w pamięć – w ten sposób tworząc sztuczne granice w procesie nauki hackerów. Fakt ten przestał być prawdziwy w połowie lat dziewięćdziesiątych; każda maszyna powyżej 486DX50 Intela jest wystarczająco mocna by pomóc w rozwoju swojej pracy, obsługi środowiska X czy komunikacji internetowej, a najmniejszy dysk jaki możesz dzisiaj kupić jest wystarczająco duży do tego zadania.

Ważną rzeczą w doborze maszyny, na której ma przebiegać nauka jest to czy zawarty w niej sprzęt jest kompatybilny z Linuksem (lub BSD – powinieneś wybrać którą drogą iść). Co więcej, będzie to sprawdzało się dla prawie wszystkich nowoczesnych maszyn. Jedynymi wrażliwymi obszarami, na które należy zwrócić uwagę to modemy oraz karty bezprzewodowe; niektóre komputery wyposażone są w sprzęt jedynie dedykowany pod Windows, który nie będzie pracować pod Linuksem.

Istnieje FAQ na temat kompatybilności sprzętu, najnowsza wersja znajduje się tutaj.

Pytanie: Chcę się przyczynić do rozwoju jakiegoś projektu. Pomożesz mi wybrać problem nad którym można popracować?

Odpowiedź: Nie, ponieważ nie znam stopnia rozwoju Twoich talentów lub zainteresowań. Musisz być sam wewnętrznie umotywowany inaczej nie będziesz pasował, ponieważ wybieranie Ci drogi przez innych ludzi nigdy się nie sprawdza.

Spróbuj tego. Obserwuj wydania kolejnych projektów na Freshmeat przez kilka dni. Kiedy zobaczysz jeden, który da Ci do myślenia: „Super! Chciałbym nad tym popracować!” – dołącz do jego rozwoju.

Pytanie: Czy muszę nie cierpieć i krytykować Microsoft?

Odpowiedź: Nie nie musisz. Zauważ, że Microsoft nie jest aż tak wstrętny, ale kultura hackerów była dużo wcześniej przed Microsoftem i będzie nadal długo po Microsofcie, gdy ten będzie historią. Jakąkolwiek energię, którą poświęcisz na nienawidzeniu Microsoftu może zostać lepiej spożytkowana na wielbieniu się w swoim rzemiośle. Skoncentruj się na pisaniu dobrego kodu – to wystarczająco dotknie Microsoft bez zanieczyszczania Twojej karmy.

Pytanie: Ale, czy rynek oprogramowania z dostępnym kodem źródłowym nie uniemożliwi programistom zarobienia na życie?

Odpowiedź: To wydaje się nieprawdopodobne – ale na razie przemysł oprogramowania z dostępnym kodem źródłowym wydaje się stwarzać nowe stanowiska pracy zamiast je odbierać. Jeśli zrealizowanie programu jest korzystniejsze ekonomicznie niż nie stworzenie go, programista otrzyma zapłatę niezależnie od tego, czy program będzie darmowy. I niezależnie od ilości „darmowego” oprogramowania, zawsze wydaje się być większy popyt na nowe i specjalizowane oprogramowanie. Napisałem więcej na ten temat na stronach Open Source.

Pytanie: Jak mogę zacząć? Gdzie zdobędę darmowego UNIKSA?

Odpowiedź: Gdzieś na tej stronie zawarłem wskazówki, gdzie znaleźć najpowszechniej stosowanego darmowego UNIKSA. Żeby być hackerem potrzebujesz motywacji, inicjatywy i umiejętności samodzielnej nauki. Zacznij od teraz…

Glider

Bibliografia.

Korekta i uwzględnienie zmian do wersji 1.39 z 2008/08/14: Patryk Krawaczyński, agresor [Shift+2]=(?) nfsec.pl
Rewizja – 1.39 – 14 Sierpień 2008 – Naprawa linków.
Rewizja – 1.38 – 8 Styczeń 2008 – Dezaprobata Javy jako języka do początkowej nauki.
Rewizja – 1.37 – 4 Październik 2007 – Polecenie Ubuntu jako dystrybucji dla początkujących.
Rewizja – 1.36 – 21 Marzec 2007 – Dodanie noty na temat LiveCDs, oraz 10 lat do osiągnięcia mistrzostwa w fachu.
Rewizja – 1.35 – 3 Sierpień 2006 – Główne uaktualnienia.
Rewizja – 1.34 – 7 Marzec 2006 – Usunięcie C# z listy języków, których trzeba unikać.
Rewizja – 1.33 – 29 Wrzesień 2005 – Dodanie uwagi do eseju Peter’a Norvig’a.
Rewizja – 1.32 – 25 Czerwiec 2005 – Nowy materiał dotyczący nie rozwiązywania problemów dwukrotnie. Odpowiedź w FAQ o hackingu i programowaniu open-source. Trzy pytania odpowiadające czy jesteś już hackerem.
Rewizja – 1.31 – 22 Marzec 2005 – Dodanie linku do eseju Paul’a Graham’a i rady jak wybrać swój pierwszy projekt. Więcej uaktualnień linków do tłumaczeń.
Rewizja – 1.30 – 2 Marzec 2005 – Dodanie i uaktualnienie linków do wielu tłumaczeń.

Więcej informacji: How To Become A Hacker

Kategorie K a t e g o r i e : Hackultura

Tagi T a g i : , , , , ,

1 komentarz.

  1. Patryk Krawaczyński napisał(a):

    W przypadku nieaktualnych linków do tłumaczeń w innych językach wystarczy wejść na narodową stronę Google wybranego kraju np. dla Japonii będzie to Google Japan i wyszukać frazę: „how to become a hacker”.

Zostaw odpowiedź.

Musisz być zalogowany by móc komentować.