ADSENSE
How To Become A Hacker
197
lượt xem 45
download
lượt xem 45
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Đây là bản dịch của tài liệu "How To Become A Hacker" của Eric Steven Raymond. Bản gốc có ở http://catb.org/~esr/faqs/hacker-howto.html. Tôi dịch tài liệu này với hy vọng phần nào cung cấp thông tin nhằm mục đích giải toả một số ngộ nhận về cái gọi là 'hacking'. Cá nhân tôi cho rằng Eric Raymond có một cái nhìn cực đoan thể hiện qua những điều anh ta định nghĩa và phân tích trong tài liệu này. Có nhiều điểm anh ta cố tình (hay vô ý), càng về sau, càng đưa tính chất hacking hướng về việc đóng góp và phát triển cộng đồng...
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: How To Become A Hacker
- Lời người dịch: Đây là bản dịch của tài liệu "How To Become A Hacker" của Eric Steven Raymond. Bản gốc có ở http://catb.org/~esr/faqs/hacker-howto.html. Tôi dịch tài liệu này với hy vọng phần nào cung cấp thông tin nhằm mục đích giải toả một số ngộ nhận về cái gọi là 'hacking'. Cá nhân tôi cho rằng Eric Raymond có một cái nhìn cực đoan thể hiện qua những điều anh ta định nghĩa và phân tích trong tài liệu này. Có nhiều điểm anh ta cố tình (hay vô ý), càng về sau, càng đưa tính chất hacking hướng về việc đóng góp và phát triển cộng đồng mở nguồn và đây là một cái nhìn (theo tôi là) thiên vị. Tuy vậy, tài liệu này của Eric Raymond đã đưa ra những điểm giá trị về cái gọi là "thái độ" và khả năng tư duy một hacker. Những điểm bàn về "phong cách" và thói quen của hackers là những điểm lý thú. Theo tôi, hacker và hacking không có biên giới rõ ràng về hệ điều hành, về software, về môi trường.... Hacking là việc thay đổi tính chất và khả năng làm việc của một sự thể và "sự thể" này không có giới hạn Microsoft, Linux, BSD, Solaris.... Hacking cũng không nhất thiết phải là những đóng góp cho cộng đồng mã nguồn mở. Bất cứ nơi đâu, hacking để giải quyết trở ngại, để cải thiện công việc, để nâng cao chất lượng.... đều là hacking. Rất mong bạn đọc với cái nhìn tỉnh táo. Tại sao có tài liệu này? Là chủ biên của mục http://www.ctb.org/jargon và một số tài liệu nổi tiếng có tính chất tương tự, tôi thường nhận rất nhiều e-mail từ các newbies hỏi cách "làm sao tôi có thể học để tr ở thành cao thủ hacker -1-?" Quay về năm 1996, tôi thấy chẳng có FAQ -2- hoặc tài liệu trên web giải đáp câu hỏi tuyệt đối cần thiết đó, bởi thế tôi bắt đầu với tài này. Ngày nay, rất nhiều hackers cho rằng tài liệu này là một kim chỉ nam -3-. Nếu bạn đang đọc một bản lưu nào đó của tài liệu này, phiên bản hiện lưu có ở: http://catb.org/~esr/faqs/hacker-howto.html Có khá nhiều bản dịch của tài liệu này cho các thứ tiếng: Ả Rập, Bulgary, Catalan, tiếng Hoa (giản thể), Đan Mạch, Hoà Lan, Farsi (tiếng Iran), Phần Lan, Đức, tiếng Do Thái thuộc nhánh Hy Lạp, Ý, Nhật, Na Uy, Ba Lan, Bồ Đào Nha, Romania, Nga, Tây Ban Nha, Thổ Nhĩ Kỳ và Thụy Điển. Xin lưu ý vì bản chính thỉnh thoảng có thay đổi nên các tài liệu dịch có thể bị lỗi thời ở mức nào đó. Năm chấm trong chín hình vuông được dùng để trang trí trên tài liệu này được gọi là glider. Nó là một mẫu đơn giản có các giá trị đáng ngạc nhiên của một quy trình simulation toán học được gọi là http://dmoz.org/Computers/Artificial_Life/Cellular_Automata/Conway's_Game_of_Life/ đã làm nhiều hackers kinh ngạc nhiều năm qua. Tôi nghĩ nó có thể dùng để làm một biểu tượng tuyệt vời cho những điều hackers ưa thích - tính trừu tượng -4-, thoạt tiên có vẻ mang một chút bí ẩn, nhưng đó là cổng vào một thế giới đầy logic của riêng nó. Bạn có thể đọc thêm về biểu tượng glider ở http://www.catb.org/~esr/hacker-emblem/.
- Hacker là gì? Trên mục http://www.catb.org/jargon có chứa một mớ định nghĩa cho từ 'hacker', hầu hết liên quan đến khả năng kỹ thuật và cái sướng sau khi giải quyết những trở ngại và vượt qua các giới hạn. Nếu bạn muốn biết cách trở thành một hacker, chỉ có hai định nghĩa là xác hợp. Có một cộng đồng, một nơi có thứ văn hoá chia xẻ của các chuyên viên lập trình và các cao thủ mạng từ nhiều thập kỷ trước, từ thời các tiểu vi tính -5- lần đầu được tung ra và từ thời ARPAnet còn hoang sơ. Các thành viên của cộng đồng này tạo ra từ 'hacker'. Hackers xây dựng nên Internet. Hackers tạo ra hệ điều hành UNIX ngày nay. Hackers điều quản Usenet. Hackers làm cho World Wide Web hoạt động. Nếu bạn là một phần của cộng đồng này, nếu bạn đã đóng góp cho nó và những người trong cộng động này biết đến bạn, gọi bạn là 'hacker' thì bạn chính là hacker. Tư duy của một hacker không giới hạn trong khuôn khổ văn hoá 'software-hacker'. Những người này đã áp dụng thái độ của hacker vào những việc khác ví dụ như trong điện tử hoặc trong âm nhạc - thật sự ra, bạn có thể thấy điều này ở đẳng cấp cao nhất của lãnh vực khoa học hay nghệ thuật. Dân Software hackers nhận ra được mối liên hệ đồng cảm ở những lĩnh vực khác và có thể gọi họ (những người ở những lĩnh vực khác) là 'hackers' - vài người cho rằng bản sắc tự nhiên của hacker thật sự độc lập với thể trạng mà hackers làm việc và tiếp cận -6-. Phần còn lại của tài liệu này chúng ta sẽ tập trung vào khả năng và thái độ của software hackers và các truyền thống của nền văn hoá chia xẻ đã tạo ra từ 'hacker'. Có một nhóm người khác luôn tự cho họ là hackers một cách ầm ĩ nhưng thật sự họ không phải là hackers. Những người này (phần lớn là các cậu ở tuổi đang lớn) là những người "ghi bàn" được một vài cú thâm nhập vào máy tính và lừa lọc hệ thống điện thoại. Những hackers thực thụ gọi loại người này là 'crackers' và họ (hackers) chẳng muốn dính dáng gì đến đám người này. Hackers thực thụ hầu hết cho rằng đám 'crackers' lười nhác, vô trách nhiệm và không thông minh cho lắm. Việc có thể bẻ gãy cơ chế bảo mật chẳng biến anh thành một hacker; cái này chẳng khác gì khả năng 'đề' xe (không cần chìa) -7- biến anh thành một kỹ sư xe máy. Không may, quá nhiều phóng viên và cây viết đã bị ngu hoá với việc dùng từ 'hacker' để mô tả crackers; điều này làm cho các hackers thứ thiệt cực kỳ khó chịu. Điểm khác biệt căn bản là: hackers xây dựng, crackers đánh đổ. Nếu bạn muốn trở thành hacker, tiếp tục đọc. Nếu bạn muốn trở thành cracker, hãy đến với news:atl.2600 newsgroup và sẵn sàng lao vào để tìm thấy rằng bạn không khôn ngoan như bạn tưởng. Và đó là bấy nhiêu điều tôi muốn nói về crackers.
- Thái độ của Hacker Hackers giải quyết trở ngại và xây dựng vật thể, và họ tin tưởng ở tự do và tự nguyện chia xẻ, giúp đỡ lẫn nhau. Để được tiếp nhận như một hacker, bạn phải tự trọng như thể chính bạn có thái độ này. Và để tự trọng như thể bạn có thái độ ấy, bạn phải thật sự tin vào thái độ ấy -8-. Nhưng nếu bạn nghĩ rằng chỉ cần bồi đắp thái độ để được tiếp nhận vào xã hội này thì bạn đã ngộ nhận. Trở thành một người tin tưởng vào những điều này là điều quan trọng cho bạn - bởi lẽ, từ việc giúp đỡ, chính bạn sẽ học hỏi và duy trì động lực cho chính bạn. Cũng như với các lĩnh vực nghệ thuật, cách hữu hiệu nhât để trở thành bậc thầy là bắt đầu với tư duy của bậc thầy - không chỉ ở khía cạnh trí thức mà còn ở khía cạnh tinh thần. Hoặc, như một đoản thơ Thiền như sau: Theo lối dẫn: ngẩng nhìn thầy, đi theo thầy, đi cùng thầy, nhìn thấu thầy, trở thành thầy. Thế, nếu bạn muốn trở thành hacker, lặp đi, lặp lại các điều sau cho đến khi bạn tin vào chúng: 1. Thế giới đầy những trở ngại kỳ lạ đang chờ được giải quyết. Làm một hacker có nhiều điều vui, nhưng những điều vui này đòi hỏi rất nhiều cố gắng. Cố gắng tạo động lực. Các vận động viên tìm thấy động lực từ những điểm thú vị trong việc khiến cho cơ thể của họ hoạt động, trong việc tự đẩy họ vượt qua chính giới hạn thể lực hiện có. Tương tự, để làm một hacker bạn cần bắt lấy những niềm thích thú nho nhỏ từ việc giải quyết được những trở ngại, tinh luyện khả năng và thực tập trí thông minh của mình. Nếu bạn không phải là dạng người có cảm nhận những chuyện này một cách tự nhiên, bạn sẽ cần biến mình thành một người như thế thì mới có thể trở thành hacker. Nếu không, bạn sẽ thấy năng lượng hacking của mình bị những thứ dễ làm chi phối như tình ái, tiền bạc và danh tiếng.... cắn xé tơi bời. (Bạn cũng cần phát triển một thứ niềm tin với khả năng học hỏi của chính mình - một niềm tin, ngay cả có thể bạn không biết mọi điều cần thiết để giải quyết trở ngại, nếu bạn chỉ cần lao vào để giải quyết một mảnh trở ngại rồi học hỏi từ điểm ấy, bạn sẽ học đủ để giải quyết mảnh kế tiếp - và như thế, cho đến khi bạn hoàn tất.) 2. Không có trở ngại nào nên được giải quyết hai lần Những khối óc sáng tạo là những thứ quý báu, có giới hạn. Chúng không nên bị phí phạm trong việc tái tạo những thứ đã có sẵn -9- trong lúc có quá nhiều trở ngại lạ kỳ đang đợi được giải quyết ngoài kia. Để có thái độ như một hacker, bạn cần tin rằng thời gian suy gẫm của các hackers khác là
- những thứ quý giá - quý giá đến nỗi, đối với bạn nó trở thành trách nhiệm đạo đức để phải chia xẻ thông tin, giải quyết trở ngại và sau đó chia xẻ giải pháp để giúp những hackers khác có thể giải quyết những trở ngại mới thay vì họ phải thường xuyên tái xét những trở ngại đã được (ai đó) giải quyết. Tuy vậy, nên nhớ là câu "không có trở ngại nào nên được giải quyết hai lần" không ẩn dụ rằng mọi giải pháp hiện có đều quý giá, hoặc chỉ có một giải pháp đúng đắn cho một trở ngại. Thông thường, chúng ta nghiên cứu một trở ngại nào đó chưa từng đối diện trước đây bằng cách hình thành một giải pháp tức thời. Điều này không có gì sai và thường là cần thiết để giúp quyết định một cách tốt hơn. Điều không hay nằm ở chỗ trở ngại thuộc giới hạn kỹ thuật trá hình, pháp luật hoặc các hàng rào cản tập đoàn (như mã nguồn đóng) làm ngăn cản giải pháp tốt được tái dụng và buộc mọi người phải tái tạo lại những thứ đã có sẵn. (Bạn không cần phải tin rằng bạn bị buộc phải chia xẻ mọi sản phẩm sáng tạo của bạn, dẫu rằng những hackers làm việc này là những người được nể trọng nhất trong đám hackers. Việc duy trì thu nhập cho thức ăn, tiền trọ, chi phí cho máy tính là chuyện cần thiết. Bạn dùng khả năng hack của mình để hỗ trợ gia đình hoặc ngay cả làm giàu, đều tốt cả, miễn sao bạn đừng quên sự gắn bó của bạn đối với cái đẹp bạn tạo ra và đối với những bạn hackers đồng hành cũng đang làm như thế). 3. Chán nản và đơn điệu là ám chướng Hackers (và những người sáng tạo nói chung) không nên bị cảm thấy chán nản hoặc đơn điệu trong khi làm những việc mang tính lặp đi, lặp lại một cách ngu xuẩn, bởi vì khi cảm giác này xảy ra có nghĩa họ không làm những điều họ đáng làm - giải quyết trở ngại. Sự lãng phí này làm hỏng mọi người. Bởi thế, chán nản và đơn điệu không chỉ không thú vị mà còn là ám chướng. Để có thái độ như một hacker, bạn cần tin vào điều này, đủ để tự động hoá những công việc nhàm chán càng nhiều càng tốt, không chỉ cho riêng bạn mà cho mọi người (đặc biệt cho những hackers khác). (Có một ngoại lệ hiển nhiên cho điều (số 3) này. Hackers đôi khi làm những chuyện có vẻ như lặp đi lặp lại hoặc chán phèo để đóng vai như một quan sát viên cho công việc "tẩy não" hoặc để thu thập kiến thức hoặc kinh nghiệm nào đó không thể có được nếu không làm như thế. Nhưng việc này tùy người - chẳng có ai nên bị đẩy vào vị thế chán chường.) 4. Tự do là điều tốt Hackers có bản tính tự nhiên là những người chống cửa quyền. Bất cứ ai có thể ra lệnh cho bạn đều có thể ngăn bạn làm công việc giải quyết trở ngại mà bạn đam mê - và, bộ não của những kẻ có quyền lực thường nảy ra những lý do ngu xuẩn và buồn nôn để ngăn trở bạn. Thế nên, thái độ của kẻ cửa quyền cần được công kích bất cứ nơi nào bạn thấy có, hãy làm cho nó tan biến khỏi bạn và những hackers khác. (Đây không phải tương tự như chống đối luật pháp. Trẻ con cần được uốn nắn và tội phạm cần được kiểm chế. Một hacker có thể đồng ý một thể dạng luật pháp để đổi lấy cái gì đó anh ta muốn thay vì thúc thủ tuân lệnh. Nhưng đây là chuyện có giới hạn, mặc cả tỉnh táo;
- một dạng chấp nhận trao đổi bán chính thức giữa kẻ có quyền lực và bạn.) Những kẻ có quyền lực thích bồi đắp khả năng ngăn cản và tính bí mật. Và thế, họ không tin vào thái độ tự nguyện hợp tác và tự nguyện chia xẻ thông tin - họ chỉ muốn 'hợp tác' theo kiểu họ khống chế. Bởi thế, để có thái độ như một hacker, bạn cần phát triển phản xạ chống trả với thái độ ngăn cản, thái độ bí hiểm bằng vũ lực hoặc ép buộc. Bạn cần có ý chí để làm chuyện này. 5. Thái độ không thay thế thực chất khả năng Để làm một hacker, bạn cần bồi đắp một số thái độ như thế. Nhưng chỉ có thái độ sẽ không đủ biến bạn trở thành một hacker hoặc một vận động viên vô địch hoặc một ngôi sao nhạc rock. Trở thành một hacker cần kiến thức, thực hành, bền bỉ và chăm chỉ. Bởi thế, bạn cần hoài nghi 'dáng điệu' và thật sự tôn trọng thực chất khả năng. Hackers không để cho những kẻ làm dáng lãng phí thời gian của họ, ngược lại (hackers) thường tôn thờ thực chất khả năng - đặc biệt là thực chất khả năng hacking và thực chất khả năng làm bất cứ việc gì có giá trị. Thực chất khả năng cho những nhu cầu ích lợi (mà không hiếm người đạt được) là điều rất tốt, và thực chất khả năng cho những nhu cầu đòi hỏi sự linh mẫn của trí tuệ, khéo léo và độ tập trung là tốt nhất. Nếu bạn đã có sẵn thực chất khả năng, bạn sẽ phát triển nó một cách thích thú - chăm chỉ và chuyên cần sẽ tạo nên trạng thái căng thẳng và sẽ không có chỗ cho sự uể oải. Thái độ này là điểm tối quan trọng để trở thành một hacker. Kỹ năng hacking căn bản Thái độ cần thiết của hacker là điểm quan trọng nhưng kỹ năng lại càng quan trọng hơn. Thái độ không thể thay thế cho khả năng thật sự, và một số "đồ nghề" -10- căn bản mà bạn phải có trước khi một hacker nào khác gọi bạn là hacker. "Đồ nghề" này thay đổi dần dần theo thời gian khi công nghệ hình thành những cái mới và làm cho cái cũ trở nên vô dụng. Ví dụ, trước đây thường bao gồm việc lập trình bằng ngôn ngữ của máy -11- và gần đây, việc dùng HTML chẳng hạn không còn đòi hỏi này nữa. Ngay lúc này 'đồ nghề' gồm có những thứ khá rõ ràng như sau: 1. Học lập trình Hiển nhiên đây là điểm nền móng cho kỹ năng hacking. Nếu bạn không biết một ngôn ngữ lập trình nào, tôi đề nghị bạn bắt đầu với Python. Ngôn ngữ này được thiết kế gọn, sạch, tài liệu đầy đủ và khá nhẹ nhàng cho những người bắt đầu. Mặc dù thích hợp cho ngôn ngữ đầu tiên, nó không phải là đồ chơi; nó rất mạnh mẽ, linh động và có thể thích hợp cho các công trình lớn. Tôi đã viết một bài chi tiết http://www.linuxjournal.com/article.php?sid=3882 (đánh
- giá Python). Các bài http://www.python.org/doc/Intros.html có chất lượng có ở http://www.python.org. Java cũng là một ngôn ngữ tốt để học lập trình. Nó khó hơn Python nhưng cho phép tạo code nhanh hơn Python. Tôi cho rằng nó là một chọn lựa rất tuyệt cho ngôn ngữ thứ nhì. Không may, phần nền của Java vẫn thuộc dạng "đóng". Điều này không phải là vấn đề gì với chính ngôn ngữ Java cả, nhiều bộ biên dịch nguồn mở chất lượng cao cho Java có trên mạng; vấn đề thật sự với Java là các lớp thư viện phải luôn luôn đi kèm với ngôn ngữ -12-. Các lớp thư viện nguồn mở cho Java thường bị tụt lùi sau bộ thư viện của Sun. Bởi thế, nếu bạn chọn Java, nên chọn một ứng dụng nguồn mở thay vì bị lệ thuộc vào nguồn đóng của Sun. Nhưng coi chừng một điều, bạn sẽ không đạt được mức kỹ năng cần thiết của một hacker hoặc ngay cả một lập trình viên nếu bạn chỉ biết có một hoặc hai ngôn ngữ - bạn nên học cách suy nghĩ đến những trở ngại lập trình một cách tổng quát, không phụ thuộc vào bất cứ ngôn ngữ nào. Trở nên một hacker thật sự, bạn cần đi đến chỗ bạn có thể học một ngôn ngữ mới trong giới hạn tính theo ngày bằng cách liên hệ từ những gì có trong tài liệu chỉ dẫn và những gì bạn đã biết. Điều này có nghĩa bạn nên học rất nhiều ngôn ngữ. Nếu bạn muốn đi sâu vào lập trình một cách nghiêm túc, bạn sẽ phải học C, ngôn ngữ cốt lõi của Unix. C++ liên hệ rất gần với C; nếu bạn đã biết cái này, học cái kia sẽ không khó. Tuy vậy, chẳng có cái nào tốt hơn để học trước cả. Và thật ra, càng tránh lập trình trên C, bạn càng năng suất. C rất hiệu năng và hiệu dụng cho tài nguyên của máy. Không may C đòi hỏi bạn phải thực hiện rất nhiều công tác quản lý tài nguyên ở mức cấp thấp và bằng tay (trong phần bộ nhớ chẳng hạn) để đạt được mức hiệu năng đó. Tất cả mã nguồn ở mức cấp thấp rất phức tạp và dễ tạo lỗi, chúng dễ hao tổn cả khối thời gian của bạn cho việc tìm lỗi. Với độ mạnh mẽ của máy tính hiện nay, việc đánh đổi (thời gian) thế này là điều không hay - dùng một thứ ngôn ngữ tốn kém thời gian của máy, thiếu hiệu xuất nhưng lại tiết kiệm thời gian của bạn có lẽ là chọn lựa thông minh hơn. Như: Python chẳng hạn. Những ngôn ngữ khác cũng không kém phần quan trọng đối với hackers như http://www.perl.com/ và http://www.lisp.org/. Perl đáng để học vì lý do thực dụng; nó được sử dụng rộng rãi cho ứng dụng web và công tác quản lý hệ thống, thế nên, ngay cả bạn không bao giờ viết Perl, bạn cũng nên học cách đọc nó. Nhiều người sử dụng Perl để tránh dùng C với những công việc không đòi hỏi mức hiệu năng của C, tôi nghĩ nên dùng Python thì thích hợp hơn. Bạn cần phải hiểu code của những người khác. LISP đáng để đề cập đến vì một lý do khác - đó là cảm giác "phê" khi bạn nắm bắt được nó. Cảm giác này sẽ biến bạn trở thành một lập trình viên tốt hơn, ngay cả bạn không bao giờ dùng LISP. (Bạn có thể nắm bắt được kinh nghiệm dùng LISP khá dễ dàng bằng cách viết và điều chỉnh chế độ điều chỉnh cho Emacs -13- hoặc Script-Fu plugin cho GIMP -14-.) Tốt nhất là nên học luôn cả năm ngôn ngữ: Python, C/C++, Java, Perl và LISP. Ngoài lý do chúng là những ngôn ngữ lập trình quan trọng nhất cho hacking, chúng còn đại diện cho các hướng tiếp cận rất khác nhau cho việc lập trình và mỗi ngôn ngữ này sẽ giáo dục bạn bằng
- những cách có giá trị khác nhau. Tôi không thể cho bạn cách thức học từng ngôn ngữ ở đây - đây là một thứ kỹ năng phức tạp. Tôi có thể cho bạn biết rằng những cuốn sách và các khoá học cũng sẽ không chỉ cho bạn cách rèn luyện (rất nhiều, có thể nói là hầu hết các hackers chiến nhất là những người tự học). Bạn có thể học tính năng của ngôn ngữ - phần kiến thức - từ sách vở, nhưng phần tư duy giúp chuyển hoá kiến thức vào kỹ năng thật sự trong đời sống chỉ có thể tìm được qua thực hành và rèn luyện. Đó là những thứ (a)đọc code và (b) viết code. Peter Norvig là một trong những hackers đứng đầu của Google -15- và là đồng tác giả của cuốn sách giáo khoa phổ biến nhất cho về AI -16-, đã viết một tài liệu sáng giá có tên gọi là http://www.norvig.com/21-days.html (tự dạy lập trình trong mười năm). Đây là "công thức để thành công trong lập trình" của ông ta, một tài liệu đáng chú ý. Học cách lập trình giống như học cách viết một thứ ngôn ngữ tự nhiên. Cách tốt nhất là đọc một ít những thứ đã được các bậc thầy viết, rồi tự bạn viết cái gì đó, đọc nhiều hơn nữa, viết thêm chút nữa, đọc nhiều hơn nữa, viết nhiều hơn nữa.... và lặp lại cho đến khi những thứ bạn viết bắt đầu hình thành sức mạnh và giá trị mà bạn thấy được từ những mẫu người bạn noi theo. Trước đây, tìm code hay để đọc là điều rất khó bởi vì rất ít có chương trình đủ lớn mà có luôn mã nguồn để các hackers mới gia nhập có thể đọc và táy máy. Điều này đã thay đổi rất nhiều; các chương trình mở nguồn, các công cụ lập trình và các hệ điều hành (tất cả được hackers xây dựng) lúc này có sẵn khắp nơi. Điều này dẫn tôi đến phần tiếp theo... 2. Lấy ngay một cái Unix nguồn mở và học cách sử dụng và điều khiển nó. Tôi giả định bạn có máy tính cá nhân hoặc có thể sử dụng một cái ở đâu đó. (Hãy suy gẫm chốc lát để cảm thấu điều này. Văn hoá hacker nguyên thủy biến thiên từ lúc máy tính thật đắt tiền đến nỗi rất nhiều người không thể làm chủ nổi một cái). Bước đầu tiên và quan trọng nhất cho bất cứ newbie nào để có thể vươn đến kỹ năng của hackers là lấy ngay một bản Linux hoặc một bản BSD-Unix hoặc OpenSolaris, cài nó lên máy và chạy nó. Vâng, có nhiều hệ điều hành khác trên thới giới ngoài Unix nhưng chúng được cung cấp ở dạng binary - bạn không thể đọc được mã nguồn và bạn không thể điều chỉnh nó. Cố học hack trên máy chạy Microsoft Windows hoặc trên một máy chạy hệ điều hành nào thuộc dạng mã đóng cũng giống như cố học cách khiêu vũ trong lúc cơ thể đang bó bột -17-. Có thể dùng MacOS X nhưng chỉ một phần của hệ điều hành là nguồn mở - bạn hẳn sẽ sa vào hàng đống bế tắc và bạn cần cẩn thận để tránh lâm vào thói quen xấu là phải dựa dẫm vào mã nguồn có bản quyền của Apple. Nếu bạn tập trung vào phần Unix bên dưới, bạn có thể học được vài điều hữu dụng. Unix là hệ điều hành của Internet. Trong khi bạn có thể học cách sử dụng Internet mà không cần biết đến Unix, bạn lại không thể là một Internet hacker nếu không hiểu Unix. Vì lý do này, văn hoá hacker ngày nay tập trung khá mạnh ở Unix. (Điều này không phải lúc nào cũng đúng, và một số hacker thời trước vẫn không vui với chuyện này nhưng mối quan hệ cộng
- sinh giữa Unix và Internet đã trở nên đủ mạnh khiến cho cả bắp thịt Microsoft không đủ sức làm xước được nó). Thế, mang Unix vào câu chuyện - bản thân tôi thích Linux nhưng có những cách khác (và vâng, bạn có thể chạy cả Linux và Microsoft Windows trên cùng một máy). Học nó. Chạy nó. Máy mó nó. Trao đổi trên Internet với nó. Đọc mã nguồn. Chỉnh mã nguồn. Bạn sẽ có những công cụ lập trình (bao gồm C, LISP, Python và Perl) tốt hơn bất cứ một hệ điều hành Microsoft nào mơ tưởng để có được. Bạn sẽ vui thích, bạn sẽ bồi đắp thêm kiến thức nhiều hơn mà bạn có thể hình dung (bạn chỉ có thể thấy) lúc nào đó, khi nhìn lại trọn bộ quá trình như một hacker bậc thầy. Để có thêm thông tin về việc học Unix, xem http://catb.org/~esr/faqs/loginataka.html. Bạn cũng có thể cần xem http://catb.org/~esr/writings/taoup/. Để mó tay vào Linux, xem http://www.linux.org/; bạn có thể tải đồ từ đó hoặc (tốt hơn nữa) tìm một nhóm người dùng ở địa phương giúp bạn cho việc cài đặt. Đối với người dùng mới với Linux. tất cả Linux Distribution đều tương tự như nhau. Bạn có thể tìm thông tin giúp đỡ và tài nguyên về BSD Unix ở http://www.bsd.org. Tôi cũng đã viết một bài tổng luận về http://en.tldp.org/HOWTO/Unix-and-Internet- Fundamentals-HOWTO/index.html (căn bản về Unix và Internet). (Ghi chú: Tôi thật lòng không đề nghị việc tự cài Linux hoặc BSD một mình nếu như bạn là newbie. Với Linux, tìm một nhóm người dùng Linux ở địa phương bạn để được giúp đỡ.) 3. Học cách sử dụng World Wide Web và viết HTML Hầu hết hackers xây dựng những thứ giúp cho công việc không hiển hiện cụ thể, họ giúp điều khiển nhà máy, văn phòng và trường đại học mà chẳng để lại ảnh hưởng cụ thể gì đến đời sống của những người không phải là hacker. Web lại là một ngoại lệ to lớn, web là một món đồ chơi khổng lồ và lấp lánh khiến cho ngay cả đám chính trị gia -18- cũng phải thừa nhận rằng nó đã thay đổi thế giới. Chỉ cần mỗi lý do này (và nhiều lý do đáng giá khác nữa) đủ để bạn cần học cách làm việc với Web. Điều này không có nghĩa học cách sử dụng trình duyệt (ai cũng làm được việc này), nhưng học cách viết HTML, thứ ngôn ngữ hình thành Web. Nếu bạn không biết cách lập trình, viết HTML sẽ dạy bạn một số thói quen tinh thần ích lợi cho việc học lập trình. Thế nên, làm vài trang web. Cố bám vào XHTML, một dạng HTML sạch hơn dạng HTML cổ điển. (Có rất nhiều bài thực tập hay trên Web; http://htmldog.com. Nhưng chỉ có vài trang chủ thì chẳng đủ thiếu gì để biến bạn trở thành một hacker. Web tràn ngập những trang chủ. Chúng hầu hết vô ích, ngập ngụa trang trí nhưng hoàn toàn không có nội dung - rất hào nhoáng, rất ngập ngụa, bạn phải biết, sự ngập ngụa này y hệt như nhau (xem thêm ở http://catb.org/~esr/html-hell.html (trang HTML gớm giếc). Để đáng công sức, trang của bạn phải có nội dung - nó phải lý thú và/hoặc hữu dụng cho các
- hackers khác. Điều này dẫn dắt chúng ta đến phần kế tiếp... 4. Nếu bạn không có tiếng Anh ở mức đủ dùng, học. Một người Mỹ và nói tiếng Anh như tôi, trước đây tôi đã từng ngần ngại khi đề nghị điều này, e rằng sẽ bị ngộ nhận như một thứ văn hoá chủ nghĩa đế quốc. Nhưng hàng loạt những người có tiếng mẹ đẻ là tiếng Anh và các thứ tiếng khác đã thúc đẩy tôi nên nhấn mạnh rằng tiếng Anh là thứ ngôn ngữ dùng để làm việc của xã hội hacker và của Internet, và bởi thế, bạn cần phải biết nó để có thể làm việc và sinh hoạt trong cộng đồng hacker. Quay lại khoảng 1991, tôi được biết có nhiều hackers dùng tiếng Anh (là thứ ngôn ngữ thứ nhì của họ) trong các cuộc thảo luận kỹ thuật ngay cả bằng khẩu âm của tiếng mẹ đẻ. Tôi được cho biết khi đó tiếng Anh có từ vựng kỹ thuật phong phú hơn nhiều ngôn ngữ khác nên nó trở thành chọn lựa thích hợp. Cho những lý do tương tự, các bản dịch từ những sách kỹ thuật được viết bằng tiếng Anh thường thiếu sâu sát (khi chúng được hoàn thành hay chăng nữa). Linus Torvalds, người Phần Lan, chú thích mã nguồn của anh ta bằng tiếng Anh (hiển nhiên anh ta chưa hề làm khác hơn thế - chú thích bằng tiếng Phần Lan). Sự nhuần nhuyễn tiếng Anh của anh ta là một trọng điểm cho phép anh triệu tập cộng đồng phát triển nhu liệu của toàn thế giới cho Linux. Đây là một ví dụ đáng để noi theo. Là một người có tiếng Anh là tiếng mẹ đẻ không bảo đảm bạn có đủ kỹ năng ngôn ngữ để hoạt động như một hacker. Nếu lối viết của bạn thuộc dạng thiếu hụt, không có văn phạm và đầy lỗi chính tả sẽ khiến cho nhiều hackers khác (kể cả tôi) có xu hướng làm ngơ bạn. Dù rằng lối viết bừa bãi không hẳn là biểu thị của lối suy nghĩ lộn xộn nhưng chúng tôi thưòng thấy mối liên hệ này khá gần - và chúng tôi chẳng có chỗ cho những người có lối suy nghĩ lộn xộn. Nếu bạn chưa thể viết một cách mạch lạc, hãy rèn luyện để viết như thế. Vị thế trong xã hội Hacker Tương tự như hầu hết các dạng xã hội không dùng tiền nong làm tiêu chuẩn, hacker hoạt động dựa trên uy tín. Bạn đang cố giải quyết một số trợ ngại lý thú, nhưng chúng thật sự lý thú thế nào, và liệu những giải pháp của bạn thật sự tốt, có cái gì để chỉ có những người đồng đẳng kỹ thuật với bạn hoặc những người ở mức cao hơn mới có thể đủ sức đánh giá những giải pháp này? Theo đó, khi bạn chơi trò chơi hacker, bạn học cách ghi bàn chủ yếu dựa trên nền tảng các hackers khác nghĩ thế nào về kỹ năng của bạn (đây là lý do tại sao bạn không thực sự là một hacker cho đến khi khác hackers khác thường xuyên gọi bạn là một hacker). Sự thật này trước đây bị lu mờ bởi hình ảnh hacking như một hoạt động đơn độc, và cũng bởi trong thâm tâm các hacker chống lại những quan điểm cho rằng động cơ làm việc là niềm kiêu hãnh hoặc sự
- công nhận từ bên ngoài (quan điểm này đã dần dần đã bị suy thoái từ những năm cuối thập niên 1990 nhưng vẫn còn ảnh hưởng ít nhiều). Một cách cụ thể, sinh hoạt hacker là một thứ mà những chuyên gia xã hội học -19- gọi là văn hoá cho tặng -20-. Bạn đạt được vị trí và uy tín trong xã hội này không phải do đè nén những người khác, không phải vì ngoại diện đẹp đẽ mà cũng chẳng phải do có những thứ vật chất khiến những người khác thèm muốn nhưng vì sự hiến tặng. Cụ thể hơn, do bạn hiến tặng thời gian của bạn, khả năng sáng tạo của bạn và hiến tặng cả kinh nghiệm của bạn. Có năm điều căn bản bạn có thể làm để được các hackers khác kính trọng: 1. Viết chương trình mã nguồn mở Điều đầu tiên (cốt tủy và truyền thống nhất) là viết những chương trình khiến những hackers thấy vui và hữu dụng, và hiến tặng mã nguồn của chương trình cho cả cộng đồng hacker sử dụng. (Trước đây chúng tôi gọi nó là "free software", nhưng từ này làm nhiều người lầm lẫn và không xác định rõ "free" là thế nào. Hầu hết bây giờ chúng tôi dùng cụm từ http://www.opensource.org/ software). Những đại cao thủ -21- trong thế giới hacker là những người đã viết các chương trình to lớn, có khả năng đáp ứng những nhu cầu rộng lớn và hiến tặng chúng để mọi người có thể dùng. Tuy vậy, có một điểm lịch sử tinh tế ở đây. Hiện tại, các hackers tìm trong cộng đồng phát triển mã nguồn mở để chọn ra những người "chiến" nhất, nhưng trước bán thập niên 1990, hầu hết các hackers làm việc với mã nguồn đóng. Điều này vẫn còn đúng ngay khi tôi viết bản đầu tiên của tài liệu HOWTO này vào năm 1996. Sau 1997 luồng mã nguồn mở mới thật sự trở mình. Ngày nay, "cộng đồng hacker" và "những người phát triển mã nguồn mở" là hai biểu dạng cho cùng một văn hoá và dân số - nhưng đáng để nhớ rằng đây không phải là điều luôn luôn như vậy trước đây. 2. Giúp thử nghiệm và tìm lỗi mã nguồn mở Những hackers cũng đóng góp trong việc tìm lỗi cho software mã nguồn mở. Trong thế gi ới thiếu hoàn hảo này, chúng ta không tránh khỏi việc phải mất hầu hết thời gian trong phân đoạn tìm lỗi của cả một quá trình phát triển software. Đó là lý do tại sao bất cứ một tác giả của phần mềm mở nguồn nào có suy nghĩ thường cho bạn biết rằng những người thử nghiệm phó bản đều được xứng đáng hưởng trọng lượng của họ ngang với số lượng hồng ngọc (đây là những ai biết mô tả tình trạng rõ ràng, phân vùng những trở ngại rạch ròi, có thể tiếp nhận lỗi trong một bảng công bố nhanh (quick release), và sẵn sàng áp dụng một số chu trình kiểm tra đơn giản). Ngay cả ai đó có thể giúp thay đổi trong phân đoạn tìm lỗi, một phân đoạn mất thời gian và mệt nhọc thay vì kéo lê, chẳng đi tới đâu cũng đáng ca ngợi. Nếu bạn là một newbie, thử tìm một chương trình đang được phát triển mà bạn thích và làm một người thử nghiệm phó bản xem sao. Có một sự biến thiên từ việc giúp thử nghiệm chương trình đến tìm lỗi chương trình và điều chỉnh chúng. Bạn sẽ học rất nhiều theo cách này và tích đức -22- cho những người họ sẽ giúp bạn về sau.
- 3. Phổ biến thông tin hữu ích Một cách rất hay là sưu tập và chọn lọc những thông tin hữu ích và lý thú để tạo các trang web hoặc các tài liệu như "Những câu hỏi thường gặp" (FAQ) và phổ biến chúng một cách rộng rãi. Những người bảo trì các FAQ kỹ thuật quan trọng được nể trọng như những tác giả tạo mã nguồn mở. 4. Giúp duy trì cơ sở hạ tầng Xã hội hacker (và những cơ cấu kỹ thuật) được các tình nguyện viên điều hoạt. Có rất nhiều công việc cần thiết nhưng không "xôm tụ" cần được gánh vác để xã hội này tiếp tục hoạt động - quản lý mailing lists, điều hợp newsgroups, duy trì các site software lưu trữ, phát tri ển RFC -23- và các tiêu chuẩn kỹ thuật khác. Những người làm các loại việc này rất được nể trọng bởi vì mọi người biết rằng loại công việc này ngốn không biết bao nhiêu là thời gian và không lý thú như việc táy máy với mã nguồn. Làm những việc này chứng tỏ sự đóng góp lớn lao. 5. Phục vụ chính văn hoá hacker Sau chót, bạn có thể phục vụ và phát triển chính văn hoá này (bằng cách, ví dụ như viết một bài tổng luận về cách làm thế nào để trở thành hacker ). Đây không phải là điều bạn có thể làm được cho đến khi đã sinh hoạt ít lâu và đã được biết đến với một trong bốn điểm ở trên. Văn hoá hacker không có các vị lãnh tụ, nói một cách chính xác, nhưng nó vẫn có những vị anh hùng và những "già làng", những sử gia và những phát ngôn viên. Một khi bạn ở trong bộ lạc đủ lâu, bạn có thể trở thành một trong những người như thế. Coi chừng: hackers không tiếp nhận dạng người tự phụ trơ trẽn trà trộn trong nhóm "già làng" của họ, bởi thế, thấp thoáng với tới "danh phận" này có phần nguy hiểm. Thay vì phấn đấu để được lấy nó, bạn nên an nhiên, khiêm tốn và hài lòng với chính vị trí của mình. Mối quan hệ Hacker/Dân gạo cội -24- Ngược với những điều thường được bàn tán, bạn không cần là một tay "nerd" mới trở thành hacker. Nó có phần ích lợi và nhiều hackers quả thật là những tay "nerd". Đôi khi bị tách rời khỏi xã hội thông thường -25- giúp bạn tập trung vào những điều quan trọng như suy nghĩ và hacking. Vì lý do này, nhiều hackers tiếp nhận nhãn hiệu "geek" như một loại phù hiệu để hãnh diện - đó là cách để công bố tính độc lập với các dự tưởng xã hội thông thường (cũng là một cách chuộng những thứ khác như khoa học giả tưởng và các loại game chiến thuật cũng thường đi
- đôi với những ai là hacker). Từ "nerd" được dùng trước đây theo tinh thần này vào những năm 90, khi mà 'nerd' là một dạng bị từ chối hạng nhẹ và 'geek' là dạng nặng hơn; một lúc nào đó sau năm 2000, chúng đổi chỗ, ít ra là với văn hoá phổ thông của Mỹ, và hiện nay, một thứ văn hoá 'tự hào geek' càng lan tràn trong đám người không phải là dân kỹ thuật. Nếu bạn có thể làm cách nào để đủ tập trung vào hacking hoặc giỏi với chuyện này mà vẫn có một đời sống sinh hoạt bình thường -26- thì đây là điều rất tốt. Chuyện này dễ dàng hơn nhiều ở thời nay so với thời tôi còn là newbie vào những năm 70; xã hội chính thống bây gi ờ có thiện cảm với đám 'kỹ thuật gạo cội' hơn rất nhiều. Thậm chí số người tin rằng đám hackers thường là những người yêu tuyệt vời và những người phối ngẫu lý tưởng. Nếu bạn bị lôi cuốn vào hacking bởi vì bạn không có một đời sống bình thường, điều này cũng tốt cả - ít ra bạn sẽ không bị trở ngại với việc tập trung. Có thể bạn sẽ có một cuộc sống bình thường về sau. conmale dịch và chú thích từ nguyên bản "How To Become A Hacker" - 14/9/2006 Chú thích: -1-: Nguyên bản "wizardly hacker", tạm dịch là "cao thủ hacker" cho gần với tinh thần tiếng Việt. Dịch sát có thể có nghĩa là "phù thủy hacker". -2-: FAQ (Frequently Asked Questions), các câu thường hỏi. -3-: Nguyên bản "definitive", một tài liệu hoặc hướng dẫn mang tính thẩm quyền và có giá trị xuất sắc. Tạm dịch là "kim chỉ nam" và tôi giả định rằng nó vẫn còn giá trị này. Tuy thế, tôi không chiếm giữ trọn bộ thẩm quyền các vấn đề thuộc chủ đề này; nếu bạn không thích những điều đọc được ở đây, hãy tự viết bản của mình. -4-: Nguyên bản "abstract". Tạm dịch sát nghĩ là "tính trừu tượng". Thật ra tinh thần abstract được đưa ra ở đây không đơn thuần là trừu tượng, nó mang nặng tính khái niệm, nó tách rời lý thuyết và các ứng dụng thực tiễn. Tính "abstract" ở đây xoáy vào khía cạnh tư duy hơn là ứng dụng. -5-: Nguyên bản "mini computers". Tạm dịch là "tiểu vi tính" để phân biệt với các "super computers" như mainframes. -6-: Nguyên bản "the hacker nature is really independent of the particular medium the hacker works in". Tạm dịch là "bản sắc tự nhiên của hacker thật sự độc lập với thể trạng mà hackers làm việc và tiếp cận". Câu này tác giả nhận định rằng, hacker không chỉ là những người làm việc với CNTT mà ở mọi lĩnh vực. Tư duy của một hacker thật sự là tư duy của một người
- có khả năng suy luận và hình thành giải pháp cho mọi vấn đề. -7-: Nguyên bản "hotwires cars". Tạm dịch là "'đề' xe (không cần chìa)". Hình ảnh này ám chỉ cho dạng người hay "chôm" xe máy bằng cách đột nhập vào xe và khởi động máy bằng cách chập hệ thống điện của bộ đề. Dạng này rất thường thấy ở các nước Âu Châu, Mỹ và cách nước có nhiều xe máy. -8-: Nguyên bản "To be accepted as a hacker, you have to behave as though you have this kind of attitude yourself. And to behave as though you have the attitude, you have to really believe the attitude". Tác giả muốn nói rằng, ngay cả bạn thật sự không hoặc chưa trang bị đúng thái độ của một hacker, bạn cũng nên tỏ ra mình có thái độ này và tin tưởng vào thái độ này thì mới có thể được tiếp nhận như một hacker. -9-: Nguyên bản "re-inventing the wheel". Tạm dịch là "tái tạo những thứ đã có sẵn". -10-: Nguyên bản "toolkit of skills". Tạm dịch "đồ nghề" cho gần gụi với tiếng Việt. -11-: Nguyên bản "machine language". Tạm dịch là ngôn ngữ của máy. Thật ra nó ám chỉ loại ngôn ngữ ở tầng thấp nhất để gởi chỉ thị cho máy thực thi công việc. -12-: Tôi không đồng ý hoàn toàn quan điểm này của Eric. Bởi lẽ, bất cứ ngôn ngữ mạnh mẽ và phức tạp nào cũng cần có bộ thư viện thì mới làm việc được. Hay chăng Eric cho rằng Java JDK không được cài sẵn ở mức hệ điều hành? Eric bị mâu thuẫn trong câu này. Nếu các ứng dụng mở cho Java thường đi sau Sun thì lý do thoả đáng nào để dùng ứng dụng mở thay vì dùng bản của Sun? -13-: Một text editor phổ biến và mạnh mẽ trên *nix. Nó tạo cảm giác "khó dùng" cho những ai quen "point & click" (như trên hệ điều hành Windows) như sau khi vượt qua được cảm giác này. Emacs là một công cụ tuyệt vời cho nhu cầu xử lý text, lập trình... -14-: GIMP, một công cụ nguồn mở dùng để xử lý hình ảnh gần như là tiêu chuẩn trên các Linux Distribution. -15-: xin đừng lẫn lộn với các tiểu xảo thường gọi là "google hacking" bằng cách dùng các phối hợp từ khoá trên Google để 'hack' (theo ý nghĩa không đúng về cái gọi là 'hack'). Peter Norvig là một trong những người 'đẻ' ra Google. Ông ta 'hack' ở đây có nghĩa là (cùng với các hackers khác) suy tư, thiết kế, thử nghiệm và kiến tạo giải pháp cho công việc tìm kiếm (searching) và đã hình thành nên Google. Trang chủ của Norvig ở: http://www.norvig.com/index.html -16-: AI viết tắc của cụm "Artificial Intelligent", một công nghệ kỳ thú và đa diện. AI tạm mang nghĩa tiếng Việt là "trí tuệ nhân tạo" nhưng tôi không dịch hẳn ra như thế mà vẫn dùng AI vì hai lý do: 1) AI là thuật ngữ quá đặc thù với lĩnh vực này, dịch ra tiếng Việt sẽ làm hỏng tính đặc thù ấy. 2) "trí tuệ nhân tạo" không đủ lột tả "artificial intelligent" bởi vì viết một software bình thường cũng đòi hỏi "trí tuệ" và cũng "nhân tạo". Bởi thế, tôi đành để nguyên AI.
- -17-: Nguyên bản "learn to dance while wearing a body cast". Tạm dịch là "học cách khiêu vũ trong lúc cơ thể đang bó bột". Tác giả muốn ám chỉ việc học 'hack' trên một hệ thống mã nguồn đóng hết sức hạn chế. -18-: Nguyên bản politicians, có nghĩa là "các chính trị gia". Từ này theo nghĩ đen chẳng có gì đặc biệt nhưng tác giả để nó ở dạng chữ nghiêng để nhấn mạnh nghĩa bóng. Đây là chi tiết lý thú để khẳng định thái độ chống cửa quyền đã nêu ở mục 4. Đối với những người làm khoa học thuần thành, họ rất xem thường các chính trị gia, đặc biệt là ở các nước phát triển. Các chính trị gia là những người chỉ ngồi trong văn phòng và tìm cách kiếm phiếu thay vì làm những việc ích lợi và thiết thực. Họ không quan tâm mấy đến những phát kiến ngoại trừ chúng có lợi cho họ (chủ yếu là việc kiếm phiếu). Ở đây, web cũng khiến cho các chính trị gia quan tâm, có nghĩa là mức ảnh hưởng của nó có biên độ và cường độ đáng kể đến các chính trị gia. -19-: Nguyên bản anthropologists, là những chuyên gia / khoa học gia chuyên về xã hội học. -20-: Nguyên bản gift culture, tạm dịch là "văn hóa cho tặng". Thật ra, cụm từ được dịch ra ở đây không đủ lột tả tinh thần gift culture bởi vì trong một xã hội, vật chất khuynh đảo mọi khiá cạnh của xã hội, tính "cho tặng" ở đây là một hiện tượng hoặc một thứ văn hoá đặc thù và độc đáo. -21-: Nguyên bản "revered demigods", tạm dịch "đại cao thủ" cho gần gụi. "revered demigods" hàm chứa sự tôn trọng và vinh dự cao cả của một người được xếp hạng như thế. -22-: Nguyên bản "karma". Tạm dịch là "tích đức" theo đúng tinh thần Phật giáo (theo từ karma). -23-: Nguyên bản RFC hay là "Request For Comments", là những tài liệu đề xuất các tiêu chuẩn ứng dụng kỹ thuật. Chúng được dùng như kim chỉ nam để tạo sự đồng nhất và tương quan giữa các ứng dụng có chung tính chất. -24-: Nguyên bản "nerd". Tạm dịch là "dân gạo cội" chỉ cho những cá nhân hết sức cần mẫn, chăm chỉ và rất có khả năng. Hình tượng "nerd" là hình tượng một cá nhân (thường là nam giới) gầy gò, mang cặp kính mắt rất dày và tỏ ra hiểu nhiều, biết rộng. -25-: ở những nước Tây phương, những ai "bị" xếp vào dạng "nerd" thường ít nhiều bị tách rời khỏi các sinh hoạt bình thường như bạn bè, tiệc tùng, giao tiếp. Đây có lẽ là một thứ "nếp sống" và đây không hẳn là một thứ quan niệm đúng đắn. -26-: Nguyên bản "have a life". Tạm dịch "đời sống bình thường". Tôi thú nhận không thể dịch cụm "have a life" sang tiếng Việt và chuyển tải đầy đủ hàm ý của nó. Cụm "have a life" chẳng những hàm chứa một cuộc sống bình thường mà còn an hưởng và thoả mãn với nó. Những điểm phong cách Một lần nữa, để làm một hacker, bạn cần đi vào tâm thức của một hacker. Có một số điều có ích bạn có thể làm ngay cả khi bạn không động đến máy tính. Những điều này không dùng để thay thế cho hacking (chẳng có gì thay thế cho hacking cả) nhưng nhiều hackers làm những
- điều này và cảm thấy họ kết nối đến cốt lõi của hacking. - Học cách viết ngôn ngữ mẹ đẻ của mình một cách nhuần nhuyễn. Dẫu thiên hạ thường nghĩ rằng dân lập trình không có khả năng viết lách, nhưng một con số đáng ngạc nhiên các hackers (bao gồm những người đã thành đạt nhất mà tôi biết) lại rất có khả năng viết lách. - Đọc truyện khoa học giả tưởng. Đi dự các buổi hội thảo về khoa học giả tưởng (một cách rất tốt để gặp gỡ các hackers và hackers cố cựu) -27-. - Rèn luyện một môn võ thuật. Thứ kỷ luật đòi hỏi cho võ thuật khá tương đồng với những thứ hackers hoạt động. Dạng võ thuật được ưa chuộng nhất của đám hackers có lẽ là Không Thủ Đạo của Á Châu như Tae Kwon Do, các dạng Karate, Kung Fu, Aikido hoặc Ju Jitsu. Các môn kiếm thuật Tây phương và Á Châu cũng có tác dụng tương tự. Ở những nơi cho phép, bắn súng cũng là môn thể thao phổ biến từ những năm cuối thập niên 90. Võ thuật đúng tinh thần hacker là để nhấn mạnh kỷ luật tinh thần, tạo thư giãn và chủ động hơn là để rèn luyện sức mạnh thô hào, thúc đẩy năng lực thể chất cao độ. - Nghiên cứu một nhánh thiền. Một sinh hoạt được ưa thích một cách bền bỉ trong đám hackers là môn Thiền -28- (một cách nghiêm trọng mà nói, bạn có thể thâu nhận được những điều ích lợi từ Thiền mà không cần phải theo một tôn giáo hoặc từ bỏ một tôn giáo mà bạn đã có). Những môn khác ở dạng tương tự cũng có thể có tác dụng nhưng hãy cẩn thận mà chọn lựa một môn không đòi hỏi bạn tin vào những điều điên khùng. - Bồi dưỡng cho mình một lỗ tai có khả năng phân tích âm nhạc. Học cách thưởng thức tính đặc thù của âm nhạc. Học cách chơi một nhạc cụ nào đó hoặc học cách hát. - Bồi dưỡng cho mình khả năng chơi chữ -29- và dùng chữ. Nếu bạn đã làm những điều trên và càng nhiều, càng chứng tỏ bạn có thiên khiếu của một hacker. Lý do tại sao như vậy thì chưa rõ nhưng điều quan trọng là những việc trên kết nối giữa khả năng thuộc phần trái và phần phải của não bộ. Hackers cần có khả năng lý luận một cách logic và có thể bước ra khỏi một logic mang tính hiển nhiên ngay lúc nhận ra điều này. Làm việc hết lòng cũng như giải trí và giải trí hết lòng cũng như làm việc. Đối với hackers, biên giới của "chơi", "làm", "khoa học" và "nghệ thuật" có xu hướng biến mất, hoặc gộp lại thành một lối chơi có mức sáng tạo cao độ. Cũng như thế, đừng tự hài lòng với chuỗi kỹ năng hạn hẹp. Dù rằng hầu hết hackers đều tự xếp loại mình là lập trình viên, họ thường có khả năng trong nhiều lãnh vực khác nhau - quản lý hệ thống, thiết kế web, và sửa chữa máy tính thường là những kỹ năng thường gặp. Một hacker đóng vai trò là một nhân viên quản lý hệ thống thường rất giỏi với kỹ năng lập trình ở dạng script và thiết kế web. Hackers không làm chuyện gì nửa vời cả; nếu họ đầu tư vào một kỹ năng, họ thường có xu hướng trở nên rất xuất sắc với kỹ năng ấy. Cuối cùng là vài điều không nên làm: - Đừng dùng một cái tên (nick name) hào nhoáng và vô nghĩa.
- - Đừng dính vào những trận khẩu chiến trên Usenet (hoặc bất cứ nơi đâu). - Đừng tự gọi mình là 'du đãng mạng' -30-, và đừng phí thời gian với những kẻ tự xưng như thế. - Đừng gởi bài hoặc e-mail đầy những lỗi chính tả và lỗi văn phạm. Thứ tiếng tăm duy nhất mà bạn tạo ra nếu làm một trong những điều ở trên là tự biến mình thành kẻ bị từ chối. Hackers thường có trí nhớ rất tốt - nó có thể làm bạn mất nhiều năm mới được tiếp nhận trở lại nếu bạn tạo ra những lỗi ngu xuẩn ngay từ đầu. Trở ngại của nickname đáng được nhắc kỹ hơn. Che dấu danh tánh của mình đằng sau một nickname là trò con nít và có tính đặc thù của những tay crackers, warezd00dz -31- và những dạng rác rưởi khác. Hackers không làm những trò này; họ tự hào với những điều họ làm và muốn nó đi chung với tên thật của họ. Cho nên, nếu bạn có một cái nickname, bỏ nó đi. Văn hoá hacker thực thụ sẽ đánh dấu bạn là một tên thất bại. Các nguồn khác Paul Graham viết một bài tiểu luận có tên http://www.paulgraham.com/gh.html và một bài khác là http://www.paulgraham.com/college.html trong đó ông ta nói đến những điều nên làm. Peter Seebach duy trì một trang http://www.plethora.net/~seebs/faqs/hacker.html dành riêng cho các ngài giám đốc, những người không biết cách ứng phó với hackers ra sao. Thêm một tài liệu có tên http://samizdat.mines.edu/howto/HowToBeAProgrammer.html, một tài liệu xuất sắc hỗ trợ cho tài liệu HOWTO này. Nó chẳng những mang giá trị giáo dục về việc gõ code và kỹ năng mà còn chỉ ra cách sinh hoạt trong một nhóm lập trình. Tôi cũng viết tài liệu http://catb.org/~esr/writings/hacker-history/hacker-history.html Tôi đã viết một bài http://catb.org/~esr/writings/cathedral-bazaar/index.html giải thích rất nhiều về cách Linux và xã hội open-source làm việc. Tôi cũng khai triển chủ đề này trực tiếp hơn trong phần http://catb.org/~esr/writings/homesteading/. Rick Moen viết một tài liệu xuất sắc về cách http://linuxmafia.com/faq/Linux_PR/newlug.html (làm cách nào để điều hành một nhóm người dùng Linux). Rick Moen và tôi đã phối hợp hình thành một tài liệu khác http://catb.org/~esr/faqs/smart- questions.html. Tài liệu này sẽ giúp bạn tìm sự giúp đỡ theo theo hướng bạn có thể thực sự có được câu trả lời.
- Các câu hỏi thường gặp: H: Làm sao tôi biết được tôi có phải là một hacker hay không? Đ: Tự hỏi ba câu sau: - Bạn có nói ngôn ngữ code nhuần nhuyễn không? - Bạn có xác định mục tiêu và giá trị của cộng đồng hacker chưa? - Đã bao giờ bạn được một thành viên của một cộng đồng hacker đã thành hình và có uy tín gọi bạn là hacker chưa? Nếu bạn có thể trả lời vâng cho cả ba câu trên, bạn đã là một hacker. Nếu chỉ hai câu cũng chưa đủ. Trắc nghiệm đầu dành cho kỹ năng của bạn. Có thể bạn đạt được câu này nếu bạn có tối thiểu khả năng kỹ thuật được mô tả ở phần đầu của tài liệu. Bạn sẽ đi xuyên suốt phần thử nghiệm này nếu bạn đã có một khối lượng mã nguồn đã được một công trình mở nguồn nào đó tiếp nhận. Trắc nghiệm thứ nhì dành cho thái độ. Nếu năm điểm nền tảng tư duy của một hacker có vẻ hiển nhiên đối với bạn, gần với cách bạn đã sống chớ chẳng phải là chuyện gì xa vời thì bạn đã vượt quá nửa chặng đường. Đó là nửa phần hướng nội, phần còn lại, phần hướng ngoại là mức độ bạn được một cộng đồng hacker có những chương trình làm việc lâu dài công nhận. Đây là danh sách chưa hoàn chỉnh, chỉ mang tính tượng trưng của một số chương trình làm việc: Bạn có quan tâm hay không nếu Linux cải thiện và mở rộng? Bạn có nhiệt thành với tính tự do của software? Bạn có căng thẳng với những biểu hiện độc quyền? Bạn có làm việc dựa trên căn bản máy tính có thể làm công cụ để biến thế giới trở nên một nơi giàu có và nhân bản hơn? Một điểm cần dè chừng với thứ tự ở đây. Cộng đồng hacker có một số điểm quan tâm mang tính tự vệ trên phương diện chính trị khá cụ thể - hai điểm dùng để tự vệ quyền tự do ngôn luận và tẩy chay sức mạnh "intellectual-property" -32- vì nó có thể biến mã nguồn mở trở thành bất hợp pháp. Một số các chương trình dài hạn gồm có những tổ chức dân chủ như Electronic Frontier Foundation (Tổ chức điện tử tiền phong), và thái độ hướng ngoại hàm chứa việc hỗ trợ chúng. Bên ngoài những chuyện này, quan điểm chung của hầu hết các hackers là thử nghiệm hệ thống hoá thái độ hoài nghi của hacker vào một chương trình cụ thể mang tính chính trị; các thử nghiệm như thế thường bị lạc đề và chia rẽ. Nếu có ai đó mướn bạn tuần hành ở thủ đô của bạn với nhân danh "thái độ hacker" thì họ bị lạc đề rồi. Lời hồi đáp đúng đắn có thể là "Im mồm và phô chúng mã nguồn". Trắc nghiệm thứ ba có một phần gay go với tính tái diễn trong đó. Trong phần Hacker là gì?, tôi đã nêu ra rằng làm một hacker là một phần thuộc về một thứ văn hoá ngầm nào đó hoặc
- một mạng lưới xã hội có chung lịch sử, một nội diện và một ngoại diện. Trong quá khứ, hackers kém liên kết và thức tỉnh như ngày nay. Nhưng điểm quan trọng là khía cạnh mạng lưới xã hội đã gia tăng đáng kể sau hơn ba mươi năm và Internet đã tạo ra những kết nối với phần lõi của văn hoá ngầm hacker một cách dễ dàng hơn để phát triển và duy trì. Một trong những biểu thị của sự thay đổi này là, trong thế kỷ này, chúng tôi đã có T-shirts riêng của chúng tôi. Những chuyên gia xã hội học nghiên cứu các mạng lưới tương tự như mạng lưới của các hackers dưới quy chế ở dạng "trường học vô hình" -33-, đã ghi nhận rằng những mạng lưới như thế thường có các kẻ giữ cổng (gatekeepers) - những thành viên cốt lõi có thẩm quyền xã hội để giới thiệu những thành viên mới vào mạng lưới này. Bởi "trường học vô hình" văn hoá hacker là một thứ văn hoá thư giãn và không nghiêm trọng, vai trò của kẻ giữ cổng cũng không nghiêm trọng. Nhưng một điều các hackers ghi xương khắc cốt rằng không phải hacker nào cũng là kẻ giữ cổng. Kẻ giữ cổng phải có mức già dặn và thành đạt trước khi họ có thể lãnh nhận tước hiệu này. Mức độ bao nhiêu thì khó mà đếm nhưng mọi hacker biết được điều này khi họ nhận thấy như thế. H: Ông dạy tôi cách hack được không? Đ: Từ lúc đăng tải trang này lên, tôi nhận được sa số thỉnh cầu mỗi tuần (thường là hàng loạt mỗi ngày) từ mọi người để yêu cầu "dạy tôi hết mọi thứ về hacking". Không may, tôi chẳng có thời gian và năng lực để làm chuyện này; các công trình hack của riêng tôi và làm vi ệc ở vị thế một người vận động cho open-source, chiếm hết 110% thời gian của tôi. Ngay cả tôi có dạy được đi chăng nữa, hacking là một thứ thái độ và kỹ năng mà bạn phải tự dạy lấy chính mình. Bạn sẽ thấy rằng những hackers thứ thiệt sẵn sàng giúp bạn nhưng họ sẽ không tôn trọng bạn nếu như bạn đòi hỏi họ "đút bé ăn" -34- những thứ họ biết. Học vài điều trước đã. Cho họ thấy bạn đang cố gắng, bạn có khả năng tự học. Rồi sau đó mới đến gặp hackers với những câu hỏi cụ thể. Nếu bạn gởi mail đến một hacker để được khuyên nhủ, đây là hai điều bạn cần biết trước. Thứ nhất, chúng tôi thấy rằng những ai lười nhác hoặc vô trách nhiệm với chính những gì họ viết thường lười nhác và vô trách nhiệm trong suy nghĩ của họ để có thể trở thành hacker tốt - bởi thế, nên cẩn thận với từ vựng và dùng văn phạm câu cú cho tốt, nếu không bạn sẽ bị làm ngơ. Điều thứ nhì, đừng có mà dám đòi hỏi hồi âm đến một e-mail khác với e-mail bạn đang dùng để gởi tới; chúng tôi thấy những ai làm chuyện này thường là những kẻ trộm hoặc dùng tài khoản chôm chỉa, và chúng tôi chẳng thích tưởng thưởng hoặc trợ giúp thói ăn cắp. H: Vậy tôi bắt đầu thế nào đây? Đ: Cách tốt nhất để bạn bắt đầu là đi đến một cuộc họp của LUG (Linux user group). Bạn có thể tìm thấy các nhóm này ở http://www.tldp.org/links/index.html; hẳn có một nhóm gần bạn, có thể nhóm này có liên hệ với một trường cao đẳng hoặc trường đại học. Các thành viên LUG có lẽ sẽ cho bạn một bản Linux nếu bạn yêu cầu, và chắc chắn sẽ giúp bạn cài đặt và bắt đầu. H: Khi nào thì tôi bắt đầu được? có quá muộn để tôi học không?
- Đ: Bất cứ tuổi nào bạn muốn bắt đầu thì tuổi ấy thì hợp. Hầu hết mọi người thường quan tâm ở lứa 15 - 20, nhưng tôi biết có nhiều trường hợp ngoại lệ cho cả hai phía. H: Tôi sẽ mất bao lâu để học hack? Đ: Điều này tùy thuộc ở chỗ bạn tài năng và chịu khó thế nào nữa. Hầu hết mọi người có thể đạt được một mớ kỹ năng đáng nể trong vòng mười tám tháng cho đến hai năm nếu họ chịu khó tập trung. Nhưng đừng nghĩ rằng nó chấm dứt ở đó; nếu bạn là hacker thứ thiệt, bạn sẽ mất suốt đời để học và hoàn thiện thành quả của bạn. H: Visual Basic có phải là một ngôn ngữ tốt để bắt đầu không? Đ: Nếu bạn hỏi câu này thì chắc chắn bạn đang nghĩ đến chuyện muốn hack Microsoft Windows. Đây là một ý kiến tồi. Khi tôi so sánh việc học hack trên Windows giống như việc học khiêu vũ như toàn cơ thể bị bó bột, tôi không có ý đùa với so sánh này. Đừng bén mảng đến đó. Nó xấu xí và sẽ không bao giờ ngưng bị xấu xí. Có một lý do cụ thể về trở ngại của Visual Basic; chủ yếu là nó không chuyển dụng (từ hệ điều hành này sang hệ điều hành khác) được. Dẫu có một bản thử nghiệm nguồn mở ứng dụng Visual Basic, các tiêu chuẩn có thể ứng dụ được từ ECMA không đủ bao trùm một nhúm giao diện lập trình -35- bé nhỏ. Trên Windows, hầu hết các thư viện được hỗ trợ thuộc dạng thương mại có bản quyền của một công ty nào đó cung cấp (như Microsoft); nếu bạn không cực kỳ cẩn thận với những tính năng bạn dùng - dù có cẩn thận hơn bất cứ newbie nào có khả năng cẩn thận - bạn sẽ bị dính chặt vào những hoạt nền chỉ có Microsoft hỗ trợ. Nếu bạn bắt đầu với Unix, có những ngôn ngữ và thư viện tốt hơn rất nhiều. Ví dụ như Python. Cũng như các dạng Basics khác, Visual Basic là thứ ngôn ngữ được thiết kế một cách nghèo nàn chỉ dạy bạn những thói quen lập trình xấu. Đừng, đừng bắt tôi phải mô tả chi tiết; để giải thích chắc phải đầy một cuốn sách. Thay vì vậy, nên học loại ngôn ngữ được thiết kế đẹp hơn. Một trong những thói quen xấu là trở nên phụ thuộc vào một nhóm duy nhất cung cấp thư viện, tiện ích và công cụ lập trình. Tổng quát mà nói, bất cứ ngôn ngữ nào không được hỗ trợ đầy đủ trên ít nhất Linux hoặc một dạng BSB khác, hoặc/và ít nhất ba hệ điều hành khác nhau thì đó là một ngôn ngữ quá tệ để học cách hack trên đó. H: Ông có thể giúp tôi crack một hệ thống hay dạy tôi cách làm không? Đ: Không. Bất cứ ai vẫn có thể hỏi một câu như thế sau khi đọc cái FAQ này thì kẻ ấy quá ngu độn để có thể được dạy dỗ, ngay cả tôi có thời gian để dạy dỗ. Bất cứ email nào gởi đến để hỏi những câu như thế này tôi sẽ làm ngơ hoặc trả lời với nội dung cực kỳ nặng nề. H: Làm sao tôi có thể lấy được password của account nào đó? Đ: Cái này là cracking. Biến đi, đồ ngốc. H: Làm cách nào tôi có thể xâm nhập, đọc, theo dõi email của ai đó? Đ: Cái này là cracking. Cút xéo, đồ đần. H: Làm sao tôi chiếm được quyền admin của một IRC?
- Đ: Cái này là cracking. Đi cho khuất mắt, thằng ngu. H: Tôi bị crack. Ông có thể giúp tôi ngăn chặn không? Đ: Không. Mỗi khi ai hỏi tôi câu này, hầu như đó là câu hỏi của một kẻ khốn khổ đang dùng Microsoft Windows. Khó có thể bảo mật tuyệt đối Windows để khỏi bị tấn công; mớ mã nguồn và thiết kế có quá nhiều lỗ hổng, điều này khiến cho việc bảo mật Windows giống như thả trôi chiếc thuyền trong vùng bị chắn. Chỉ có một cách duy nhất và đáng tin cậy là bắt đầu chuyển sang Linux hoặc một hệ điều hành nào khác ít nhất được thế kế có khả năng bảo mật. H: Tôi bị sự cố với các chương trình chạy trên Windows. Ông giúp được không? Đ: Vâng. Vào khung DOS và gõ "format c:". Bất cứ trở ngại nào bạn đang gặp đều sẽ biến mất trong vài phút. H: Tôi có thể gặp vài hacker thứ thiệt để trò chuyện? Đ: Cách tốt nhất là tìm một nhóm người dùng Unix hay Linux ở địa phương của bạn và đến dự các buổi họp mặt của họ (bạn có thể tìm vô số đường dẫn đến các nhóm người dùng trên http://www.tldp.org/ ở ibilio). (Trước đây tôi thường nói ở đây rằng bạn sẽ không tìm ra một hacker thứ thiệt nào trên IRC, nhưng tôi nhận ra điều này đang thay đổi. Hẳn nhiên đã có một số nhóm hackers thứ thiệt có liên hệ đến GIMP và Perl đang sử dụng một số kênh IRC). H: Ông có thể giới thiệu một số sách giá trị về những vấn đề liên quan đến hacking không? Đ: Tôi bảo trì http://en.tldp.org/HOWTO/Reading-List-HOWTO/index.html có thể bạn sẽ thấy hữu dụng. Trang http://www.catb.org/~esr/faqs/loginataka.html cũng có thể lý thú với bạn. Đối với thông tin nhập môn cho Python, xem tài liệu http://www.python.org/doc/Intros.html ở trang Python. H: Liệu tôi có cần giỏi toán để trở thành hacker không? Đ: Không. Hacking dùng rất ít loại toán học hoặc số học thuần túy. Một cách cụ thể hơn, bạn sẽ hiếm khi cần đến các tam giác thức, tích phân hoặc khả năng lý giải toán (có một số ngoại lệ cho một số ứng dụng liên quan đến lãnh vực kỹ thuật ảnh không gian 3 chiều). Nắm được các logic và đại số Boolean thì tốt. Một số toán rời rạc (bao gồm lý thuyết tập hợp hữu hạn, thuật tổng hợp và đồ thị) có thể sẽ hữu dụng. Điều quan trọng hơn hết: bạn cần có khả năng suy nghĩ một cách logic và khai triển những chuỗi lý lẽ chính xác theo cách toán học. Nội dung toán học sẽ không trực tiếp giúp bạn nhưng bạn sẽ cần kỷ luật và trí tuệ toán học (để ứng dụng trong hacking). Nếu bạn thiếu trí tuệ, bạn sẽ khó hy vọng thành hacker; nếu bạn thiếu kỷ luật, bạn nên bồi dưỡng phần này. Tôi nghĩ một cách khá hay là tìm thử xem bạn có những đức tính này không là tìm một bản "What Is The Name of This Book" của Raymond Smullyan để đọc. Lối đùa bỡn trong việc giải quyết những logic phức tạp mà Smullyan đã viết rất gần với tinh thần của hacker. Có thể giải quyết trở ngại là việc rất hay; giải quyết chúng một cách thích thú là việc càng hay hơn nữa.
CÓ THỂ BẠN MUỐN DOWNLOAD