【超全超详细】2W字零基础小白黑客学习路线,知识体系(非常详细)从零基础到精通,收藏这篇就够了!
前言这是外网曾经一篇很火的关于如何成为一个黑客的文章虽然里面提到的一些技术可能有些过时但就学习方法和思想上仍然值得我分享给大家。关注大师的言行 跟随大师的举动 和大师一并修行 领会大师的意境 成为真正的大师。什么是黑客这可以追溯到几十年前那时候第一代分时微型计算机才刚刚诞生, 而 ARPAnet 的实验也才刚展开。那时的编程专家和组网高手建立了一个具有共享性质的文化社群 “hacker” 这个名词就是其中的成员创造的。黑客们建立了互联网黑客们让 Unix 操作系统演化到现在的模样黑客们经营着 Usenet黑客们让万维网运转起来。如果你是这个文化的一部分如果你对这种文化有所贡献而且这个社群的其它成员也认识你并称你为 hacker那么你就是一名黑客。黑客的思维方式并不仅仅局限在软件黑客的文化圈内。也有人用黑客态度对待其它事情如电子和音乐方面——其实你可以在任何最高级别的科学和艺术活动中发现它的身影。软件黑客对这些领域的践行者尊重有加并把他们也称作黑客——有人宣称黑客天性是绝对独立于他们工作的特定领域的。但在这份文档中我们将集中书写在软件黑客的技术和态度以及发明了“黑客”一词的、以共享为特征的文化传统。有另外一群人大声嚷嚷着自己是黑客但他们根本不是。他们主要由青少年男性构成是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客”(cracker)并不屑与之为伍。黑客们通常认为他们是一群懒散、没有责任心、而且不是很聪明的人。会通过热接线发动汽车并不意味着你是一个汽车工程师。一样的道理会破坏安全也不意味着你是一名黑客不幸的是很多记者和作家往往错把“骇客”当成黑客这种做法一直使真正的黑客感到恼火。根本的区别是黑客搞建设骇客搞破坏。如果你想成为一名黑客请接着读下去。如果你想做一个骇客就去读 alt.2600 新闻组吧顺便准备好去蹲个五到十年的监狱而且最终你会意识到你并不像自己想象的那么聪明。黑客的态度这个世界充满了令人着迷的问题等着我们解决。一个问题不应该被解决两次。无聊和乏味的工作是罪恶。崇尚自由。态度不能替代能力。黑客们解决问题建设事物同时他们信仰自由和无私的双向帮助。要想作为一名黑客被社群认同你需要体现出自己已经具备了这种态度。而要体现出这种态度你就得真正相信和赞同这种态度。但是如果你认为培养黑客态度只是进入黑客文化圈的敲门砖那就大错特错了。这种态度将有助于有助于你的学习并且能为你提供源源不断的动力所以它对你而言是至关重要的。和所有创造性的艺术一样成为大师的最有效方法就是模仿大师的精神——智力上的模仿还不够还要从感情上进行模仿。或者正如下面这首现代的禅诗讲的[修行之道]关注大师的言行 跟随大师的举动 和大师一并修行 领会大师的意境 成为真正的大师。所以如果你想成为一名黑客反复读下面的事情直至你相信它们为止1. 这个世界充满了令人着迷的问题等着我们解决。做一名黑客会有很多乐趣但是这些乐趣需要付出很多努力才能获得。这些努力需要动力。成功的运动员在表演和超越自我极限的时候获得身体上的愉悦并把这种愉悦作为自己的动力。同样为了成为一名黑客你要从解决问题、磨练技术以及锻炼智力中得到基本的享受。如果你不是天性如此而你又想成为一名黑客你就要设法成为这样的人。否则你会发现你的黑客热情会被其他分心的事物吞噬掉——如金钱、性、以及社交圈的认同。你必须建立对于自己学习能力的信念——就算你掌握的知识不足以解决当前的问题如果你从问题的一小部分下手并从中学习你将学到足够的知识用来解决下一部分——以此类推直到整个问题都被你解决为止。2. 一个问题不应该被解决两次。有创新能力的大脑是一种宝贵的有限资源。当世界还充满非常多有待解决的有趣的新问题时它们不应该被浪费在重新发明轮子的事情上。作为一名黑客你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客也不能使你成为一个运动健将和摇滚明星。成为一名黑客需要智力、实践、奉献精神、以及辛苦的工作。因此你必须学着忽略态度问题并尊重各种各样的能力。黑客们不会为那些装模做样的人浪费时间但他们却非常尊重能力——尤其是从事黑客工作的能力虽然有能力总归是好事。如果能具备少有人能掌握的技能就更好了当然如果你具备一些急需的技能而这些技能又需要敏锐的思维、高超的技巧、和专注的精神那就是再好不过了。如果你尊重能力你就会享受到提高自己能力的乐趣——辛苦的工作和奉献将不会是一件苦差事而是一种紧张的娱乐这是成为黑客至关重要重要的一点。[黑客的基本技能]学习如何编程。学习使用开源 Unix 系统。学会使用万维网以及编写 HTML。学习英语如果你的水平不够用的话。黑客态度重要但技术更加重要。态度无法替代技术在你被别的黑客称为黑客之前你必须掌握一些基本的技术作为你随身携带的工具。随着新技术的出现和老技术的过时这个工具包的内容也在不断改变。比如以前机器语言编程也被列在里边而 HTML 是直到最近才包括进去的。不过现在可以清楚地告诉你包含以下内容1. 学习如何编程。这一条无须多说当然是最基本的黑客技能。如果你还不会任何编程语言我建议你从 Python 开始学起。它设计清晰文档齐全而且对初学者比较友好。虽然它很适合作为一种入门语言但它不仅仅只是个玩具它非常强大、灵活也适合做大型项目。我在一篇更详细的 Evaluation of Python译注Python 试用体验中有更详细的论述。Python 网站有很好的入门教程。我曾经推荐过将 Java 作为初学的语言但这则批评改变了我的想法在里边搜索”The Pitfalls of Java as a First Programming Language” 就知道我的意思了。作为一名黑客你不能像人们挖苦的一样“像水管工人一样装电脑”你必须知道各个部件的工作原理。现在我觉得可能还是学过 C 和 Lisp 后再学 Java 比较好。有一个大体的规律就是如果你过于偏重使用一种语言这种语言一方面会成为你得心应手的工具另一方面也会阻碍你的学习。有这个问题的不只是编程语言类似 RubyOnRails、CakePHP、以及 Django 的 web 应用框架也有这个问题它们只会让你肤浅地懂得一些东西当你碰到难以解决的问题或者需要调试时你就可能不知所措了。如果你想进入正式的编程领域你将不得不学习 C 语言它是 Unix 的核心语言。C 与 C 非常其他类似如果你了解其中一种学习另一种应该不难。但这两种都不适合编程入门者学习。而且事实上你越避免用C编程你的工作效率会越高。C 语言效率极高而且占用很少的系统资源。不幸的是C 的高效是通过你手动做很多底层的管理如内存管理来达到的。底层代码都很复杂而且极易出现 bug你要花很多的时间调试。而现今的计算机速度如此之快花时间调试程序通常是得不偿失——比较明智的做法是使用一种运行较慢、效率较低但能大幅节省你的开发时间的语言。因此还是选择 Python 吧。其他对黑客而言比较重要的语言包括 Perl 和 LISP。从实用的角度来说Perl 是值得一学的它被广泛用于动态网页和系统管理中因此即便你从不用Perl 写程序至少也应该学会读懂 Perl。许多人使用 Perl 的理由和 我建议你使用 Python 的理由一样都是为了避免用 C 完成那些不需要 C 高效率的工作。你会需要理解那些工作的代码的。LISP 值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。虽然你实际上很少会用到 LISP但这些经验会使你在以后的日子里成为一个更好的程序员。当然实际上你最好五种都会PythonJavaC/CPerl 和 LISP。除了是最重要的黑客语言外它们还代表了截然不同的编程思路和方法每种都会让你受益非浅。你可以通过修改 Emacs 编辑器的模式单单学习编程语言并不会让你达到黑客的程度甚至连程序员的程度都难企及——你需要脱离某种编程语言的素服学习通过编程解决问题的思路。要成为一个真正的黑客你需要达到几天就能学会一门编程语言的水平你可以将文档里的信息和你已经掌握的知识结合起来很快就学会一门编程语言。这意味着你需要先学会机种思路截然不同的语言才行。编程是一个复杂的技能我无法给你完整的指南来教会你如何编程不过我可以告诉你书本和课程也无法教会你如何编程——很多黑客或者也许几乎所有的黑客都是靠自学的。你从书本上学到语言的特点——只是一些皮毛但要使书面知识成为自身技能你只能通过实践和虚心向他人学习。因此你要做的就是 (a) 读代码(b) 写代码。Peter Novig 是 Google 公司的顶尖黑客之一而且是最受欢迎的 AI 课本的一名作者。他写了一篇好文章名叫 Teach Yourself Programming in Ten Years译注十年教会自己编程其中的“recipe for programming success”译注编程的成功之道尤其值得一读。学习编程就象学习自然语言写作一样。最好的做法是读一些大师的名著试着自己写点东西再读些再写点再读些再写点……如此往复直到你的文章具备范文的力量和感觉为止。以前要找适合阅读的好代码并不容易因为几乎没有大型程序的源代码能让新手练手。这种状况已经戏剧性地发生变化开源软件、编程工具、和操作系统全都由黑客写成现在已经随处可见。让我们在下一个话题中继续讨论……2. 学习使用开源的 Unix 系统。我将假设你已经有一台个人计算机供自己使用了你可以体会一下这意味着多少东西。早些时候计算机是如此的昂贵没有人能买得起。而黑客文化就是在那样的环境下演化来的。新手们能够朝学习黑客技能迈出的最基本的一步就是找一版 Linux 或 BSD-Unix安装在个人电脑上并且把它跑起来。没错这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发布的——你无法读到它的源代码也不可能修改它。尝试在运行 DOS、Windows、或 MacOS 的机器上学习黑客技术就象是穿着骑士铠甲学跳舞。除此之外Unix 还是 Internet 的操作系统。你可以学会上网却不知道 Unix但你不了解 Unix 就无法成为一名 Internet 黑客。因此今天的黑客文化在很大程度上是以 Unix 为核心的。这点并不总是真的一些很早的黑客对此一直很不满但 Unix 和 Internet 之间的联系已是如此之强就连 Microsoft 这样强力的公司也对此也无可奈何。所以, 安装一套 Unix 吧——我个人偏爱 Linux但还有其他种类共你选择是的你可以在同一电脑上同时安装 Linux 和 DOS/Windows)。学习它运行它鼓捣它。用它上 Internet。阅读它的源代码。修改它的源代码。你会用到很多优秀的编程工具包括 C LISPPython 及 Perl这些工具在 Windows 下是做梦都没法得到的。你会觉得乐趣无穷。当你有一天成为大师再回顾初学的日子你会觉得那时学到的东西可真多。如果你想了解更多关于学习 Unix 的信息读一下 The Loginataka译注ESR 的另一著作可以称为黑客大藏经吧。也许你还想看看 The Art of Unix Programming 译注Unix 编程艺术经典著作。你可以访问 Linux Online! 网站这个网站可以帮你起步。你可以从那里下载到Linux或者更好的办法是找一个本地的 Linux 用户组让他们帮你安装 Linux。在这份 HOWTO 文档发布后的前十年里关于 Linux 我写的是从新人的观点来看所有的Linux 发行版都差不多但在 2006-2007 之间我们终于有了一个最佳选择Ubuntu。我们可以说各种Linux 发行版各有千秋但 Ubuntu 是新人最容易上手的一个发行版。你可以在 www.bsd.org 找到 BSD Unix 的求助及其他资源。Linux 有一种被称为 Live CD 的发行方式这种发行版会从CD 运行起来而且不会动到你硬盘里的东西Live CD 是尝试 Linux 的一个不错的方法。由于光驱读写本来就比较慢Live CD 的速度一般也会比较慢不过 Live CD 总归是一个能尝试各种可能性而又不过激的方法。我有写一篇关于 Unix 和 Internet 基础的入门文章。对于新手我以前不鼓励你自己独立安装Linux 或者 BSD现在这些系统的安装工具已经足够好了就算对新手来说独立安装操作系统也不是不可能的事。无论如何我还是推荐你联系本地的 Linux 用户组向他们寻求帮助这会进程更加顺利。3. 学会使用万维网以及编写 HTML。黑客文化建造的大多东西都在你看不见的地方发挥着作用。浙西东西可以帮助工厂、办公室、以及大学正常运转起来但从表面上很难看到它们对非黑客的普通人的生活的影响。而 Web 是一个大大的例外。就连政客也同意这个庞大耀眼的黑客玩具正在改变整个世界。就算只是因为这个还有许多其它的原因Web 也值得你一学。这并不是仅仅意味着如何使用浏览器谁都会而是要学会如何写 HTML也就是 Web 的标记语言。如果你不会编程写HTML会教你一些有助于学习的思考习惯。因此先完成一个主页。网上有很多不错的资源比如 这个 HTML 入门教程。)但仅仅拥有一个主页不能使你成为一名黑客。Web里充满了各种网页。大多数是毫无意义的、毫无信息量的垃圾——界面时髦的垃圾不过还是垃圾更多相关信息访问 The HTML Hell Page。要想有价值你的网页必须有内容——它必须有趣或对其它黑客有帮助。这是下一个话题所涉及的……4. 学习英语如果你的水平不够用的话。作为一个以英语为母语的美国人我以前很不情愿提到这点免得被当做一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点那就是英语是黑客文化和 Internet 的工作语言只有懂英语你才能在黑客社区顺利做事。大概1991年的时候我就了解到许多黑客在技术讨论中使用英语甚至有时他们来自同一种母语也在用英文讨论。在现阶段英语有着比其他语言丰富得多的技术词汇因此是一个对于工作来说相当好的工具。基于类似的原因英文技术书籍的翻译通常都不怎么令人满意。如果有翻译的话。Linus Torvalds 是芬兰人但他的代码注解是用英语写的很明显他从没想过其他的可能性。他流利的英语。是他能够管理全球范围的 Linux 开发人员社区的重要因素。这是一个值得学习的例子。就算你的母语是英语这也无法保证你的语言技能足够达到黑客的标准。如果你的写作文字不通、语法混乱、错字连篇包括我在内的大部分的黑客都会忽略你的存在。虽然写作马虎不一定意味着思考也马虎但我们发现两者的关联性还是挺强的——马虎的头脑对我们来说毫无价值如果你写作能力不够就好好学习写作吧。提高自己在黑客圈中的地位撰写开源软件帮助测试并调试开源软件发布有用的信息帮助维护基础设施的运转为黑客文化本身服务和大部分不涉及金钱的文化一样黑客王国靠声誉运转。你设法解决有趣的问题但它们到底多有趣你的解法有多好是要由那些和你具有同样技术水平或比你更厉害的人去评判的。相应地你需要认识到当你在玩黑客游戏时你的分数主要是靠其他黑客对你的技术的评价得到的这就是为什么只有在其它黑客称你为黑客时你才算得上是一名黑客。常人的印象里黑客是一项独来独往的工作所以上述评价方式并不为众人所知。另一个黑客文化误区是拒绝承认自我或外部评价是一个人的动力这种想法在 1990 年代末以后就逐渐衰退了但现在还有人这么认为。这也是让上述评价方式鲜为人知的原因之一。明确地讲黑客行为就是人类学家所称的“奉献文化”。在这里你不是凭借你对别人的统治来建立地位和名望也不是靠美貌或拥有其他人想要的东西而是靠你的贡献。尤其是贡献你的时间、你的创造、以及你的技术成果。要获得其他黑客的尊敬你可以从下面五种事情着手1. 撰写开源软件第一个方法也是最重要最传统的方法是写些被其他黑客认为有趣或有用的程序并把程序源代码提供给整个黑客文化圈使用。过去我们称之为“free software 自由软件” 但这却使很多不知 free 的精确含义的人感到困惑。现在我们很多人根据搜索引擎网页内容分析至少三分之二的人在使用”open-source software即“开源软件”这个词。黑客领域里最受尊敬的偶像是那些写了大型的、好用的、用途广泛的软件并把它们发布出来使得每人都在使用他软件的人。但是从历史方面来讲有一点值得一提。虽然黑客们一直认为开源软件的开发者是真正的黑客但在 1990 年代中期以前大部分黑客会把自己的主要时间用来撰写闭源软件直到我 1996 年开始写这篇 HOWTO 时也是如此。但从 1997 年后开源软件进入了主流而且改变了这一切。以现在的观点来看“黑客社群”和“开源开发者”是对这一个社群的两种称呼但值得记住的是以前这两者的概念并不完全一样。要了解更多信息你可以看看 关于黑客、开源、以及自由软件的历史这一节的内容。2. 帮助测试并调试开源软件黑客也尊敬那些使用和测试开源软件的人。这个世界并不完美我们不可避免地要把大多数的开发时间放在调试阶段。这就是为什么任何有头脑的开源代码的作者都会告诉你好的 beta 测试员象红宝石一样珍贵。好的测试者知道如何清楚描述出错症状很好地定位错误能忍受快速发布中的 bug并且乐意配合做一些例行的诊断性工作。一个优秀的测试者可以让一场旷日持久辛苦不堪的调试大战变成一场有益身心的小打小闹。如果你是个新手试着找一个你感兴趣的正在开发中的程序做一个好的 beta 测试员。你会自然地从帮着测试进步到帮着抓 bug到最后帮着改程序。你会从中学到很多而且善因种善果以后别人也会很乐意帮助你。3. 发布有用的信息另一件好事是收集整理有用有趣的信息做成网页或类似 FAQ 的文档并且让大家都能看到。技术性 FAQ 的维护者会受到和开源代码的作者一样多的尊敬。4. 帮助维护基础设施的运转黑客文化还有互联网工程方面的发展是靠志愿者推动的。要使Internet能正常工作就要有大量枯燥的工作不得不去完成——管理邮件列表和新闻组维护大型软件库开发 RFC 和其它技术标准等等。做这类事情的人会得到很多尊敬因为每人都知道这些事情费时颇多而又不象编程那样有趣。做这些事情需要奉献精神。5. 为黑客文化本身服务最后你可以为这个文化本身做宣传例如像我这样写一个“如何成为黑客”的教程 这并不要求在你已经在这个圈子呆了很久因以上四点中的某点而出名有一定声誉后才能去做。黑客文化没有领袖这点是确认无疑的。但黑客圈里确实有些文化英雄、部落长者、史学家、还有发言人。如果你在这圈里呆足够长时间你也许也能成为其中之一。记住黑客们不相信他们的部落长者的自夸因此过分追求这种名誉是危险的。与其奋力追求不如先摆正自己的位置等它自己落到你的手中——那时则要做到谦虚和优雅。黑客和书呆子(Nerd)的联系和大家普遍认为的相反并不是只有书呆子才能成为一名黑客。但它确实有帮助而且许多黑客事实上是书呆子。做一个深居简出的人有助于你集中精力进行十分重要的事情如思考和编程。因此很多黑客都接受了“geek极客”这个标签并把它作为骄傲的奖章——这是宣布他们独立于主流社会期望的一种方式这个标签也是他们喜欢科幻小说和策略型游戏的标记而这些也是很多黑客喜欢的东西。1990 年代更多用的称呼是“nerd书呆子”那时“nerd”只带点轻微的贬义而“geek”则是地地道道的蔑称而在 2000 年以后这两者逐渐调转过来了至少再美国的大众文化中是这样。而到了现在甚至在非技术人群里也有不少以 geek 精神为傲的文化团体。如果你能集中足够的精力做好黑客工作同时还能有正常的生活这是件好事。现在要做到这一点比我在 1970 年代还是新手的时候要容易的多如今主流文化对技术怪人要友善得多。甚至有越来越多的人意识到黑客通常是很好的恋人和配偶的材料。如果你因为生活上不如意而迷上做黑客那也没什么——至少你不会分神了。也许你以后还能找到自己的生活向黑客的格调靠拢重申一下要做一名黑客你必须深入体验黑客精神。计算你不在计算机边上你仍然有很多对黑客工作有帮助的事情可做。它们并不能替代真正的编程没有什么能替代编程但很多黑客都那么做并感到它们与黑客的本质存在某些基本的连系。学会用母语流畅地写作。尽管很多人认为程序员写不出好文章但是有相当数量的黑客包括所有我知道的最棒的黑客都是很有能力的写手。阅读科幻小说。参加科幻小说讨论会。这是一个认识黑客和准黑客的好方法 学习一种武术。武术中需要的精神自律能力和黑客在这方面的需求非常相似。黑中最受欢迎的武术是来自亚洲的空手格斗类武术例如跆拳道、空手道、武术、合气道、柔术等。西式击剑和亚洲剑术也有不少的跟随者。1990 年后期以来在可以合法使用枪支的地方射击受欢迎的程度也越来越高了。大部分黑客喜欢的武术类型都是那些强调精神的自律放松的意识以及意念的控制而不仅仅是单纯的力量、运动精神、以及身体的强健。实实在在学习一种冥想修炼。多年以来黑客中最受欢迎的形式是参禅。很重要的一点是参禅和宗教可以说是独立的你不需要接受一种新宗教或者放弃现有的宗教信仰就能做参禅的修炼。其他的形式也许也管用但注意一定要挑那些靠谱的不需要你相信不着边际的事物的冥想方式来演练。提高自己对双关语和文字游戏的鉴赏能力。如果这些事情有很多你已经在做了那你可能是天生做黑客的材料。至于为什么偏偏是这些事情原因并不完全清楚但它们都涉及用到左右脑能力的综合这似乎是关键所在黑客们既需要清晰的逻辑思维有时又需要偏离逻辑跳出问题的表象。最后还有一些不要去做的事情。不要使用愚蠢的哗众取宠的ID或昵称。不要卷入 Usenet或任何其他地方的骂战。不要自称为“cyberpunk网络朋克”也不要浪费时间和那些人打交道。不要让你的 email 或者帖子中充满错误的拼写和语法。以上的事情只会为你招来嘲笑。黑客们个个记忆超群——你将需要数年的时间让他们忘记你犯下的错误。网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、软件破解者、及其他低等生物幼稚愚蠢的行为。黑客不会做这些事他们对他们所作的感到骄傲而且乐于人们将作品与他们的真名相联系。因此, 如果你现在还在使用假名那就放弃它吧。在黑客文化里假名是失败者的标记。[关于黑客、开源、以及自由软件的历史]我在这里所描述黑客精神和社会远远早于1990 Linux 出现的时候我第一次涉足黑客圈是 1976 年而究其根源则可追溯到20世纪60年代初。但在 Linux 出现之前大多数黑客使用的操作系统要么是私有的商业版本要么是自己开发的未得到广泛使用的系统例如麻省理工学院的 ITS 系统。虽然那时也有人想要改变这种状况但他们的努力影响范围相当有限充其量仅在某个黑客社区有少数忠实用户而已。现在所谓“开源”历史和黑客社区的历史几乎一样长但直到 1985 年前它只是一种没有固定称谓的习惯做法而不是一套有理论做后盾有宣言做前锋的自觉运动。这种状态在 1985年结束了长老级黑客 Richard Stallman也被称为“RMS”将其命名为“自由软件 (Free Software)”。这种命名也是一种宣言的方式不过大多数黑客社区都不接收这种包含明显思想烙印的标签。因此而大多数现有的黑客社区从来没有接受。结果“自由软件”这一标签被黑客社群中声音较大的少数人尤其是 BSD Unix 的相关人士拒绝掉了而剩下的大部分人包括我虽然也有保留意见可也还是沿用了这一称谓。尽管很多人存在保留意见RMS 的“自由软件”的大旗也一直举到了 1990 年代中期。直到 Liunx 崛起时它才受到了重大挑战。Linux 给了的开源开发者一个新的自然归宿很多项目都已我们现称的开源的方式由 Unix 移植到了 Linux 系统中。Linux 的社区也得到了爆炸性增长成为了一个比以前黑客文化更为庞大并且异质化的新的群体。RMS 曾今尝试将这一社群也归并到他的“自由软件运动”大旗下但终究没有成功原因可以归于 Linux 社区的样性以及 Linus Torvalds 本人的质疑。Torvalds 公开拒绝了 RMS 的自由软件思想但还是沿用了“自由软件”这一术语这也引来了很多年轻黑客的效仿。当我第一次发表这篇 HOWTO 的时候黑客社团正在围绕着 Linux 和其它几个开源操作系统尤其是 BSD Unix 的衍生系统进行着快速的重组。几十年来围绕着闭源系统进行闭源开发的方式还没有开始淡出集体记忆但在大家看来这似乎已经是死去的历史了。越来越多的黑客都已经开始注重自己在开源项目例如 Linux、Apache 等上的贡献并将这些贡献当做自己的成就。然而在那个时候“开源”这一名词还没有出现。这个名词是 1998 年初才开始出现的而在出现的半年内大部分的黑客社区就接受了这一名词只有少数不接受这一概念的人还在坚持使用“自由软件”这一名词。1998 年以后或者更准确地说是 2003 年以后所谓的“hacking” 和 “开源自由软件开发”的含义已经非常接近了。从今天的眼光来看这种区分已经没有意义了看趋势这个现状将来也不大可能有多大的改变。不管怎样这段变更的历史还是值得记住的FAQ怎样才能知道自己已经是一名够格的黑客你可以问自己下面三个问题你能流利地读写代码吗你认同黑客社群的目的和价值吗黑客社群里有没有资深成员称呼你为黑客呢如果你对这三个问题的答案都是“是”的话你已经是一名黑客了。如果你只满足其中两项那就说明你还不够格。第一个问题是关于技能的。如果你已经符合本文前面提到的最低需求的话你也算过关不过如果你发布过为数不少的开源代码并被社群接受那你就算满分过关了。第二个问题是关于态度的。如果黑客精神的五项基本原则对你来说能有共鸣而且已经是你处事的方式你就算过关一半了。这算靠里的一半靠外的一半和你在黑客社区长期项目上的投入和关联程度有关。这里列出了一些项目的不完全列表供你参考Linux 的改进和用户群扩大对你来说是否重要你对于自由软件精神是否充满激情你对于垄断是否有敌意你是否相信计算机这种工具会让增加世界财富让这个世界更富有人道主义不过值得注意的一点是黑客社群有一些特有的政治倾向其中两条一条是保卫言论自由权一种是抵御所谓“知识产权”对于开源社区的侵害。实践这两条的是一些民间组织例如电子前沿基金会Electronic Frontier Foundation就是其中之一。不过虽然如此黑客们对于有任何明确政治目的的团体都是心怀戒备的因为我们已经从各种经验教训中学到一点这些活动只会分裂黑客社团并让黑客们分心。如果有人以黑客精神为名组织一场首都大游行那他就完全没有弄明白这点。真正的应对方式也许应该是“闭上嘴巴给他们看代码”。第三个问题有点循环递归的味道。在“什么是黑客”一节我已经讲过作为一名黑客的意义在于参与某个黑客社群也就是社交网络的一个亚文化团体作为内部的贡献成员以及外部的宣传者积极活动。和很久以前相比黑客群体现在的团结意识和自我意识已经增强了很多。过去三十年来随着互联网的发展社交网络逐渐开始发挥举足轻重的作用而黑客的亚文化团体也更加容易发展和维护了。这种变革的明显一个有代表性的现象是有的黑客社群现在都有自己专门的文化衫了。研究社交网络的社会学家把黑客文化归为“看不见的大学”而且注意到这些网络社交圈还有所谓的“看门人”——其中的一些核心成员他们有一定的权威可以准新成员的进入。所谓的“看不见的大学”本来就是一个松散的非正式组织所以这些“看门人”也只是这门称呼而已。但不是每个黑客都是“看门人”这是每个黑客都深刻明白的一点。“看门人”需要有一定的资历和成就究竟要到什么程度很难讲但一旦有这样的人出现每一个黑客都能辨识出来。你能教我做黑客吗自从第一次发布这份文档我每周都会收到一些请求频繁的话一天几封要我“教会他们做黑客”。遗憾的是我 没有时间和精力来做这个我自己的黑客项目及我作为一个开放源代码倡导者 的四处奔波已经占用了我110%的时间。即便我想教你黑客也依然基本上是一项自行修炼的的态度和技术。当真正的黑客想帮助你的时候如果你乞求他们一汤匙一汤匙“喂”你的话你会发现他们不会尊重你。先去学一些东西。显示你在尝试你能靠自己去学习。然后再去向你遇到的黑客请教特殊的问题。如果你发E-mail给一位黑客寻求他的帮助这是两件首要记住的事情。第一写出来的文字显得懒且粗心的人通常非常懒于思考且非常马大哈不能成为好黑客——因此注意拼写正确使用正确的语法及发音否则你可能会无人理睬。第二不要试图要求回复到一个ISP帐号而那个帐号与你 的发信地址不同。这样做的人一般是使用盗用帐号我们对于回报或者帮助窃贼不感兴趣。、我给大家准备了一份全套的《网络安全入门进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程需要的小伙伴可以扫描下方二维码或链接免费领取~那么我要如何开始对你而言最佳的入门方式也许是去参加 LUGLinux用户组的聚会。你可以找到在 LDP 的综合 Linux 信息页面上找到类似的组织也许有一个在你家附近的而且非常有可能与一所大学或学校挂钩。如果你提出要求LUG 成员兴许会给你一套 Linux当然此后会帮你安装并带你入门。我得什么时候开始学现在会不会太迟了你有动力学习的时候就是好时候。大多数人看来都是在1520岁之间开始感兴趣的但据我所知在此年龄段之外的例外也是有的。要学多久才能学会黑客技能这取决于你的聪明程度和努力程度。对于大多数人只要足够专注就能在 18 个月到 2 年之间学会一套令人尊敬的技能。但是不要以为这样就够了如果你是一个真正的黑客你要用你的余生来学习和完善你的技术。Visual Basic 是好的入门语言吗既然你问了这个问题那你肯定是想在 Microsoft Windows 操作系统下学习黑客技能。这本身就不是一个好主意。我前面讲过在 Windows 下 hack 就跟穿着骑士铠甲跳舞一样我不是在开玩笑。别走这条路Windows 是一个很低劣的 hack 环境而且一直如此。Visual Basic 有一个特征性问题就是它不可以被移植到其他平台。虽然也有些 Visual Basic 开源实现的雏形但实现的只是 ECMA 标准的一个很小的子集。在 Windows 下大部分类库的知识产权都是 Microsoft 独家所有如果你不是及其小心的话你的代码将只能在 Microsoft 支持的平台上使用。如果你不打算从 Unix 起步那你也有更好的语言可选而且类库质量还更高例如 Python 就是其中之一和其他的 Basic 类语言一样Visual Basic 这门编程语言的设计也很糟糕它会教你一些坏的变成习惯。你就别问我细节了这可是罄竹难书。还是去学一门设计优良的语言吧。其中一个坏习惯是让你依赖于单一厂商的函数库、控件及开发工具。一般而言任何不能够支持至少 Linux 或者某一种 BSD或其不能支持至少三种以上操作系统的语言都是一种不适合应付黑客工作的语言。你能帮我“黑”掉一个站点吗或者教我怎么黑它No。任何读完这份 FAQ 后还问这个问题的人都是无可救药的蠢材即使有时间指教我也不会理睬。任何发给我的此类电子邮件都会被忽略或被痛骂一顿。我怎么样才能得到别人帐号的密码这是骇客行为。滚得远远的傻*。我如何入侵/查看/监视别人的 Email这是骇客行为。在我面前消失智障。我如何才能在IRC聊天室里偷到频道 op 的特权这是骇客行为。滚开傻*。我被黑了。你能帮我避免以后再被攻击吗不行。目前为止每次问我这个问题的都是一些运行 Microsoft Windows 的菜鸟。不可能有效的保护 Windows 系统免受骇客攻击太多代码和架构的缺陷使保护 Windows 的努力有如隔靴搔痒。唯一可靠的预防来自转移到 Linux 或其他设计得至少足够安全的系统。我的 Windows 软件出现问题了。你能帮我吗当然。打开 DOS 命令行输入“format c:”。你遇到的任何问题将会在几分钟之内消失。我在哪里能找到可以与之交流的真正的黑客最佳办法是在你附近找一个Unix或Linux的用户组参加他们的聚会。你可以在 ibiblio 的 LDP 站点找到一些用户组的链接。我过去曾说过不能在IRC上找到真正的黑客但我发觉现在情况有所改变。显然一些真正的黑客的社区像 GIMP 及 Perl也有IRC频道了。你能推荐一些有关黑客的好书吗我维护着一份 Linux Reading List HOWTO也许你会觉得有用。The Loginataka 也大致值得一读。关于Python的介绍请访问我整理的Python入门教程。成为一名黑客我需要擅长数学吗不用。黑客道很少使用常规的数学或算术不过你绝对需要能逻辑性地思考和进行精密的推理。尤其是你不会用到微积分或电路分析我们把这些留给电子工程师们 。有限数学中的一些可提包括布尔代数集合论组合数学图论的背景知识会对你有所帮助。更重要的一点你要有逻辑思维能力能够以数学家的方式追溯因果。虽然大部分的数学知识对你可能没什么用处但数学思维的能力对你来说是极其重要的。如果你缺乏这方面的智慧要做一名黑客恐怕是无望了。如果你缺乏这方面的训练还是尽早开始吧。我该从那种语言学起如果你还没学过XHTMLHTML最新的表现形式的话就从它开始吧。市面上有一大堆的封面精美宣传得天花乱坠的HTML 书籍不幸的是质量优秀的几近于无。我最喜欢的是 HTML: The Definitive Guide。但HTML 不是一种完整的编程语言。当你准备开始编程时我推荐从 Python 起步。你会听到一大群人推荐 Perl但是 Perl 要难学得多而且以我之见设计得不是很好。C 确实重要但它也比 Python 或 Perl 难多了。不要尝试先学 C。Windows用户注意不要满足于 Visual Basic。它会教给你坏习惯而且它不可以跨平台移植只能在Windows下运行。因此还是敬而远之为好。我需要什么样的机器配置过去个人电脑能力相当不足并且内存很小这给黑客的学习过程设置了人为的障碍。不过 1990 中期以后就不是这样了任何一台 Intel 486DX50 以上配置的机器都有足够的能力进行开发工作、运行 X 系统、以及进行 Internet 通讯。而且你买到的市面上最小的硬盘都大得足够你使用了。选择用来学习的机器时重要的一点是注意配件是否是Linux兼容的或BSD兼容如果你选择 BSD 的话。和刚才提到的一样大多数现在的机器都是符合的唯一值得注意的区域在于 modem 和打印机有些具备为Windows设计的配件的机器不会在Linux下工作。你可以查看这份 Linux Hardware Compatibility FAQ。我想贡献社区。你可以帮我选一个问题让我下手吗不行因为我不知道你的兴趣和擅长领域在哪里。如果你没有内在动力你就很难坚持下去所以说别人只给你的路是行不通的。试试这么做吧。在 Freshmeat 网站观察几天看看里边的项目更新如果你看到一个看上去很酷而且你也很感兴趣的项目就加入吧。我得因此憎恨和反对 Microsoft 吗不你不必如此。不是因为Microsoft不令人讨厌而是因为黑客文化早在 Microsoft 出现之前就存在了且将在 Microsoft 成为历史后依然存在。你耗费在憎恨 Microsoft 的任何力气不如花在爱你的技术上。写好的代码——那会相当有效地打击 Microsoft 又不会让你得到恶报应。开放源代码软件不会使程序员丢饭碗吗目前看起来不太可能开放源代码软件产业似乎创造了更多的就业机会而不是减少就业机会。如果写一个程序比起不写来是纯经济收益的话那么在写完后程序员应该得到报酬不管程序是否是开放源代码。并且无论写出多么“免费自由”的软件都存在更多对新的定制的软件的需求。我有这方面更多的论述放在放源代码网站资料中。我要如何开始哪里有免费的Unix在本份文档的某个地方我已经提到过何处可以得到最常用的免费 Unix。要做一名黑客你需要自己找到激励和动力还要有自学的能力。现在就开始努力吧……网络安全学习路线学习资源网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底6k就算你底子差如果能趁着网安良好的发展势头不断学习日后跳槽大厂、拿到百万年薪也不是不可能初级网工1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗【“脚本小子”成长进阶资源领取】7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级网工这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。感兴趣的童鞋可以研究一下不懂得地方可以【点这里】加我耗油跟我学习交流一下。网络安全工程师企业级学习路线如图片过大被平台压缩导致看不清的话可以【点这里】加我耗油发给你大家也可以一起学习交流一下。一些我自己买的、其他平台白嫖不到的视频教程需要的话可以扫描下方卡片加我耗油发给你都是无偿分享的大家也可以一起学习交流一下。网络安全学习路线学习资源结语网络安全产业就像一个江湖各色人等聚集。相对于欧美国家基础扎实懂加密、会防护、能挖洞、擅工程的众多名门正派我国的人才更多的属于旁门左道很多白帽子可能会不服气因此在未来的人才培养和建设上需要调整结构鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”才能解人才之渴真正的为社会全面互联网化提供安全保障。特别声明此教程为纯技术分享本书的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失

相关新闻

微博图片溯源利器:WeiboImageReverse让原创追踪变得简单高效

微博图片溯源利器:WeiboImageReverse让原创追踪变得简单高效

微博图片溯源利器:WeiboImageReverse让原创追踪变得简单高效 【免费下载链接】WeiboImageReverse Chrome 插件,反查微博图片po主 项目地址: https://gitcode.com/gh_mirrors/we/WeiboImageReverse 在信息爆炸的社交媒体时代,微博作为国…

2026/7/6 18:15:47 阅读更多 →
Tao-8k模型快速部署教程:Anaconda虚拟环境配置与依赖管理

Tao-8k模型快速部署教程:Anaconda虚拟环境配置与依赖管理

Tao-8k模型快速部署教程:Anaconda虚拟环境配置与依赖管理 你是不是也遇到过这种情况:好不容易跟着教程装好了一个模型,结果发现它把你电脑上另一个项目需要的库给搞乱了,或者干脆就跑不起来?这种依赖冲突的问题&#…

2026/7/5 10:42:55 阅读更多 →
MediaCreationTool.bat:突破Windows部署限制的全能自动化工具

MediaCreationTool.bat:突破Windows部署限制的全能自动化工具

MediaCreationTool.bat:突破Windows部署限制的全能自动化工具 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …

2026/7/5 13:48:08 阅读更多 →

最新新闻

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划

M3u8Downloader_H未来路线图:即将推出的新功能与改进计划 【免费下载链接】M3u8Downloader_H m3u8下载器,功能强大,多线程,多任务,支持aes-128-cbc解密,自定义请求头,自定义插件 项目地址: https://gitcode.com/gh_mirrors/m3/M3u8Downloader_H M3u8Download…

2026/7/6 18:15:59 阅读更多 →
Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南

Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南

Notepad--:一款真正为中文用户打造的跨平台文本编辑器,5分钟上手指南 【免费下载链接】notepad-- 一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。 项目地址: https://gitcode.com/GitHub_Trendi…

2026/7/6 18:13:58 阅读更多 →
Encog多线程训练指南:充分利用多核CPU加速机器学习

Encog多线程训练指南:充分利用多核CPU加速机器学习

Encog多线程训练指南:充分利用多核CPU加速机器学习 【免费下载链接】encog-java-core 项目地址: https://gitcode.com/gh_mirrors/en/encog-java-core 在当今的机器学习应用中,训练时间往往成为瓶颈。Encog机器学习框架提供了强大的多线程训练功…

2026/7/6 18:11:56 阅读更多 →
如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得

如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得

如何构建完全自主掌控的AI知识库?开源方案让数据隐私与智能分析兼得 【免费下载链接】open-notebook An Open Source implementation of Notebook LM with more flexibility and features 项目地址: https://gitcode.com/GitHub_Trending/op/open-notebook 在…

2026/7/6 18:11:56 阅读更多 →
git-peek未来路线图:社区反馈与功能规划展望

git-peek未来路线图:社区反馈与功能规划展望

git-peek未来路线图:社区反馈与功能规划展望 【免费下载链接】git-peek git repo to local editor instantly 项目地址: https://gitcode.com/gh_mirrors/gi/git-peek 想要快速预览远程Git仓库代码?git-peek工具为您提供了终极解决方案&#xff0…

2026/7/6 18:11:56 阅读更多 →
date-io核心原理:为什么它能成为日期库的万能适配器?

date-io核心原理:为什么它能成为日期库的万能适配器?

date-io核心原理:为什么它能成为日期库的万能适配器? 【免费下载链接】date-io Abstraction over common javascript date management libraries 项目地址: https://gitcode.com/gh_mirrors/da/date-io date-io是一个针对JavaScript日期管理库的…

2026/7/6 18:05:50 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻