什么是黑客

在《黑客辞典》里有不少关于“黑客”的定义, 大多和“精于技术”或“乐于解决问题并超越极限”之类的形容相关。然而,若你想知道如何成为一名黑客,只要牢记两点即可。
这是一个社区和一种共享文化,可追溯到那群数十年前使用最初的共享小型机以及最早的“阿帕网”的专业程序员和网络专家们。而这样一群人便被称之为“黑客”。黑客们建立了互联网,黑客们让Unix操作系统成为了今天这个样子,黑客们管理着讨论组,黑客们维持着万维网的运转。如果你是这种文化的一部分,你为这些做出过你的贡献并让其他的人知道你且以“黑客”之名称呼你,那你就是一名黑客!
然而,黑客精神却并未被禁锢在“软件黑客”这一范畴之中。有很多人将黑客精神应用到了其他的领域,例如电子或是音乐——事实上,你可以在所有的科学与艺术的最高境界中发现黑客精神的影子。由于这种共同的精神,软件黑客亦称后者为“黑客”——甚至有人认为黑客精神是脱离于黑客这项工作而独立存在的。但在以下的文章中,我们将重点讨论软件黑客的技能与态度,以及能令他们被称之为黑客的“共享文化”这一传统。
而另外一群人总是声称自己是黑客,但他们不是。这些人(大多是年轻人)入侵其他人的计算机或是破坏通信系统。真正的黑客称这群人为“骇客”并与他们划清界线。真正的黑客大多认为骇客是懒惰、不负责任以及不明智的一群人。能够破坏保安系统并不能让你成为一名黑客,正像能够偷车并不能让你成为一名汽车工程师一样。不幸的是,很多记者与作家都被误导而使用“黑客”一词去形容“骇客”,而这将永远激怒那些真正的黑客。
最根本的区别在于:黑客是创造事物,而骇客是破坏事物
若你想成为黑客,请看下去。若你只想成为骇客,请到讨论小组并做好准备当你发现你远没有自己想象的那样明智之后,去坐五到十年的牢。这就是我要对骇客说的。

黑客的态度

黑客解决问题并创造事物,他们信仰自由与互助。想要以黑客的身份为大家所接受,你需要表现出你拥有这种态度,而若要表现出你拥有这种态度,则需要你真的信仰这种态度。
而如果你认为培养黑客态度仅仅是融入黑客文化的一种方式,那你就错了。真正的去信仰这些对你来说非常重要——它可以帮助你学习并保持你的动力。像所有的艺术创作一样,成为大师最有效的方法是遵循大师的思维——不仅是智慧,还有情绪!
以下这首现代禅谒便说明了问题:

遵循此法:
仰慕大师,
跟随大师,
比肩大师,
超越大师,
成为大师。

所以,要成为黑客,请反复阅读以下几点直到你牢记并坚信它们为止。

1. 这世上有无数奇妙的问题等待我们去解决。
成为黑客是一件非常有趣的事情,但乐趣的背后需要付出大量的努力。努力需要动力。一名出色的运动员的动力往往来自于自身肢体运动与超越自身极限的一种天然成就感。正如一名黑客应该从解决问题、磨练技能以及挥洒智慧之中获取喜悦一样。
如果你不是这种人,那为了成为一名黑客,你必须让你自己成为这种人。否则你会发现你的黑客热情将被诸如性、金钱以及社会价值观等事物慢慢的消磨干净。
(你亦需要培养一种对于自学能力的信仰——坚信即便你现在不能解决全部的问题,但如果你可以解决哪怕一小部分的问题并从中学习,那么你都可以学习到足够的东西去解决下一小部分的问题——直到将整个问题全部解决为止。)

2.没有任何一个问题应该被解决两次
创造力是一个宝贵而又有限的资源。世上有如此多的新奇问题等待我们去解决,创造力不该被浪费在“再发明”这样的怪圈中。
想要成为一名黑客,就要去相信其他黑客的思考时间都是很宝贵的——以致于分享信息对于你来说是一个道义层面上的责任。解决问题并给出解决方案,好让其他的黑客可以去解决新的问题而不是永远在旧问题上止步不前。
然而,请注意:“没有任何一个问题应该被解决两次”并非是要你认为现有的解决方案是神圣不可侵犯的或者它是当前问题的唯一解决方案。通常,我们遇到一个前所未见的问题时,总是从该问题最初的那个解决方案中学会很多东西。这很好,而且通常很必要,这意味着我们可以做的更好。而不好的则是人工技术上、法律上或是体制上的阻碍(譬如闭源代码),它阻止人们使用一个现有的解决方案,而迫使人们陷入“再发明”的怪圈之中。
(你不必认为你有责任公布出你全部的作品——虽然这样做的黑客会从其他黑客那里获得最多的尊重。用它们赚取足够的钱来维持你的食物、租金和计算机——这并不违背黑客的价值观。利用你的黑客技术来维持一个家庭甚至致富是一件好事——只要你在做这些的时候没有忘记你对于黑客艺术以及黑客朋友的忠诚。)
 
3. 无聊与繁冗的工作等同于邪恶
黑客——或是其他一些创作者——不应在那些无聊的或是愚蠢的重复工作中充当苦力, 因为如果这样那就意味着他们没有去做一项只有他们才可以做的事情——解决新问题。这种蠢事对谁都没有好处。因此,无聊与繁冗的事情对黑客而言不仅只是不良的, 甚至是是邪恶的。
要成为一名黑客,你必须信仰此观念并将所有无聊与繁冗的事情尽可能的自动化,这不止为自己,也是为其他人(尤其是其他的黑客)。
(这里有一个显而易见的例外。黑客们有时会做一些看起来重复或无聊的事情用以令思维清晰,或是为了训练某些特殊的技能与经验并且别无他法。但这完全取决于个人的选择——没人能强迫一个善于思考的人去完成这些事情。)

4. 自由很好
黑客是天生反独裁的。若有人可以对你下达命令,那他也可以阻止你去解决那些令你着迷的问题——并且基于这种独裁的思维模式,他总能找到一些愚蠢到令人吃惊的理由去这么做。所以无论何时何地都要与独裁主义战斗,这样才不至于让你或是其他黑客被他扼杀。
(这并不等同于向所有权威挑战。儿童们需要被教导而罪犯需要被压制。同样,黑客需要接受某些权威统治,前提是从中的获益应该多于去执行统治者的命令。但这一切都该是有限度的,并且是一个平等的契约关系。而不该是一个强加于个人意愿之上的独裁思想。)
独裁依靠的是“审查”与“保密”。他们总是怀疑“自愿合作”和“信息共享”——他们只喜欢在他们控制下的“合作”。所以要成为一名黑客,你必须练就一种对审查、保密或使用暴力和欺骗手段去压迫人民的行为的本能敌对情绪。并且你该因这种信仰而采取行动。

5. 态度不能代替能力
作为一名黑客,你当拥有以上的态度。但仅有一个正确的态度不能让你成为黑客,最多能让你成为一名优秀的运动员或是摇滚明星。想成为一名黑客还需要智力、实践、奉献以及勤奋。
因此,你该时刻持有怀疑的态度并尊重每一种能力。黑客们不会让一个过难的问题去浪费他们的时间,但他们崇拜能力——特别是黑客技能,但其实任何的能力都是有价值的。很少有人能掌握的能力尤为可贵,而这其中若含有高度的智慧、技巧与集中力就再好不过了。
若你尊重能力,你便会非常乐于锻炼自身的能力——那么勤劳工作与无私奉献就会成为一种紧张的竞赛而非一件苦差事。这种态度对于成为一名黑客也是至关重要的。

基本的黑客技能

黑客的态度固然重要,但技能却更为重要。态度无法替代能力,有一些必备技能和基本工具是任何一个梦想成为黑客一员的人都应该掌握的。
随着时间的流逝,这些工具也在慢慢的吐故纳新。例如,过去需要用机器码编写的一些程序,现在却更多的用HTML去编写。但很显然,你需要掌握以下这些:

1.学习如何编程

这当然是最根本的黑客技能。如果你不熟悉任何计算机语言,我建议从Python开始。它设计清晰、文档详实,对于初学者来说非常友好。尽管它是一种非常好的初学语言,但它绝非玩具。他非常强大与灵活,并且适于开发大型项目。我已经写了一份更加详细的“Python评价
”,更多的教程
可以在Python网站
上获取到。
我过去也常推荐Java作为早期学习的一种语言。但一些批评
改变了我的想法。黑客不能像他们说的那样“像一个五金店里的管子工一样的去解决问题”,而是应该知道每一个部件是如何运作的。现在我认为最好是先学习C和Lisp,而后再是Java。
此处可能有一个很普遍的问题。如果一种编程语言令你吃不消,那它可能是优秀的编程工具却不易学习。并非只有编程语言才有这种问题,像RubyOnRails、CakePHP、Django这样的页面应用平台会很容易有一种肤浅的认识,但当你遇到一个难题时却发现无力应对,即便是去纠正一个很简单的错误。
如果你对程序的要求很严格,那你必须要去学习C——Unix的核心语言。而C++和C非常的相近,如果你学会了其中的一种,那学习另外一种将不会有什么困难。然而,这两者都不是初学者的好选择。并且实际上,越是能够避免用C编程,你的效率就越高。
C语言非常高效,也很节约计算机资源。不幸的是,C是通过要求你进行大量低级的手动资源(如内存)管理来实现这种“高效”的。所有这些低级代码都是复杂和易错的,并会占用你大量的时间去调试。在机器越来越强大的今天,这可不是个明智的权衡——一个明智的选择应该是用编程语言让机器变得不那么高效,而让你的时间变得越来越高效。因此,选择Python吧。
而其他对于黑客具有重要意义的语言包括Perl
和LISP
。Perl值得学习的主要原因是:它被广泛的应用于动态网页和系统管理中,所以即便你不会写Perl程序你也应该学会如何阅读Perl代码。很多人选择Perl的原因与我建议Python的原因相同,既避免使用C编程而使不需要C的机器更高效。你至少应该能理解它们的代码。
LISP值得学习的原因则不同——在你掌握它之后你会收到一些意想不到的经验和启示。这些经验会让你在今后成为一个更加出色的编程者,即便你并不经常使用LISP。(你可以很容易的使用Emacs文本编辑器
或是GIMP
的Script-Fu插件来编写LISP)
最好能学习全部这五种语言——Python、C/C++、Java、Perl、LISP.此外,作为最重要的黑客语言,它们代表了完全不同的编程方式,并且每一种都有它们自身的价值。
但你该知道若只是简单的堆砌这些语言,那你根本无法达到黑客的水平而仅仅是一个程序员而已——你应该去学习如何去用一种独立于任何一种编程语言之外的思维模式去规划你的程序。作为一名真正的黑客,你该达到可以在数日之内学会一种新的编程语言的能力,且凡是手册中做出过说明的就应该是你知道的。这意味着你得学习一些非常不同的语言。
我不可能在这里完整的介绍如何学习编程——这是一个很复杂的技能。但我可以告诉你书籍与课程并不有效。许多,或者是大部分的优秀黑客都是自学的。你仅能从书中学到语言的基本特征——就这点东西。而将知识融为自然的思维模式只能从实践与模仿中学到。而能做到这样的只有(1)阅读代码(2)编写代码
Peter Norvig——Google公司的顶尖黑客之一以及被广泛应用的关于人工智能的教科书作者之一——撰写了一篇非常优秀的文章《教自己在十年内学会编程
》,他“编程成功的秘诀”是非常值得关注的。
学习编程就像学习去写好一门自然语言一样。最好的方法就是去阅读一些大师写好的东西为规范,然后自己写一些东西,再多读些,再多写点,再多读些,再多写点……反反复复直到你的作品看起来像模像样了。
寻找优秀的代码来阅读曾经是件很不容易的事情,因为很少有大型程序的代码供新手黑客阅读和思考。而现在则发生了巨大的改变:开源的软件、编程工具和操作系统(全部由黑客创造)现在已经被广泛的使用。而这恰巧让我引入了我们的下一个主题……

2.获取一个开源的Unix系统并学着去使用和运行它

我假设你拥有一台个人计算机或至少是可以使用一台(花些时间来欣赏一下这是多么的弥足珍贵。黑客文化可以追溯到那个计算机昂贵到个人无力承受的时代)。对于每个想收获黑客技能的新人来说,第一步也是最重要的一步就是获取一份Linux或是BSD-Unix亦或是OpenSolaris的拷贝,之后在你的机器上安装并运行它。
的确,除了Unix系统之外这世上还有很多的操作系统。但他们都是以二进制形式发布的——你无法阅读其中的代码,也无法修改他。想要在装有Windows系统或是其他什么闭源系统的机器上学习黑客技能就像是穿着盔甲学跳舞一样。
在Mac OS X上学习还是可行的,但仅有一部分系统是开源的——你会四处碰壁,并要时刻注意不要养成依赖苹果私有代码的坏习惯。如果你将精力集中到Unix的引擎中,那你将学会不少有用的东西。
Unix是互联网的操作系统。虽然你不了解Unix也可以学习如何使用互联网,但你终究无法成为一名互联网黑客。正因如此,当今的黑客文化拥有一个强大的Unix核心。(这并不总是真的,有些早期的黑客为此不悦。但Unix与互联网的联系已足够强大以致微软的魔爪都不足以削弱这种联系。)
所以,选择一款称心的Unix吧——我本人很中意Linux,但也有别的选择(当然,你也可以同时在一台机器上同时运行Linux和Windows)。学习它,运行它,用它来思考,用它与互联网对话,阅读代码,修改代码。你会获得那些在微软的操作系统上做梦也无法得到的优秀编程工具(包括C、LISP、Python和Perl),并将从中获得很多的快乐。当你成为一名黑客高手的时候再回头来看,你会发现你获取到了比你想象的更多的知识。
关于Unix的更多知识,可以参见“Loginataka
”。你或许也想看看《Unix编程艺术
》。
若你想着手于Linux,那可以看看“Linux在线
”网站。你可以从那里下载或者(这样可能更好)寻找一个本地的Linux用户社群来指导你如何安装。
在这份指导诞生的头十年里,我始终认为站在一个初学者的角度来看,所有的Linux发行版几乎都是等价的。而在2006-2007年之间,一个最好的选择诞生了:Ubuntu
.任何一款Linux发行版都有自己的优势,而Ubuntu却是最多新手青睐的选择。
你可以在BSD的官网
中找到BSD Unix的指导和源代码。
一个很好的尝试方法就是使用被Linux迷们称为LiveCD
的东西,它将系统完全的运行在CD中而不会改变你硬盘中的任何数据。这样可能有些慢,因为CD运行速度比较慢,但这是一个很好的方法来测试你能否适应这一切。
我还写了一篇入门教程来阐述“互联网与Unix基础
”。
我曾经反对新手独自安装Linux或是BSD。但时至今日,安装程序已经变得足够好以致新手也可以自己完成所有的安装了。尽管如此,我依然建议你和当地的Linux用户社群保持联系并寻求帮助。这没什么坏处,而且还可以让一切变得更顺利。

3.学习如何使用万维网以及编写HTML

大部分由黑客文化创造的事物是远离人们的视线的,建立工厂、办公室、学校这些事情显然和黑客没什么直接关系。只有网页是一个例外,即便是政治家也要承认这个伟大而光辉的黑客玩具改变了世界。仅此一条理由(当然还有很多其他理由),你就应该学习如何在互联网上工作。
这并不仅仅是打开一个浏览器这么简单的事情(这任何人都会作),而是要学习如何编写HTML——网页的标记语言。如果你不懂如何编程,那HTML会教给你一些习惯来帮助你学习编程。因此建立一个自己的主页,并坚持用XHTML编写——一种比过去的HTML更简洁的语言。(网上有很多的相关教程)
但仅是拥有一个主页并不能让你更接近一名黑客。网上到处都是各种各样的主页,大多都是些毫无意义、没有技术含量的垃圾——看上去很绚丽的垃圾。记住,垃圾都是一样的。(更多的信息可以参考“HTML地狱
”)
要想让你的页面变得有价值,那它必须要有内容——那些对其他黑客来说有趣且有益的内容。而这将是下一个主题中要说的……

4.如果你不懂英语,请学习它。

早在1991年我就发现很多黑客以英语作为第二语言在技术论坛中交流。在那时,我意识到英语较之其他语言拥有最多的技术词汇,因此也是完成黑客工作的最佳语言。基于同样的原因翻译用英语写成的技术类图书也往往不能令人满意(虽然都已经做完了)。
Linus Torvalds,一个芬兰人,用英文注释自己的代码(他显然是想也没想就这样做了)。他流利的英语也是他能够在世界范围内招募到Linux社区的志愿开发者的一个重要因素。这是一个值得学习的榜样。
我并不能保证你拥有很实用的黑客语言。如果你的书写不够流畅或是有着千疮百孔的拼写错误,很多黑客(包括我本人)将会无视你。虽然马虎的拼写并不总意味着草率的思想,但它们之间通常还是有关联的——我们不需要一个草率的思想者。如果你还不能写的很好,那就去学吧。

黑客文化现状

正像许多文化与金钱无关一样,黑客帝国是建立在名誉之上的。你试图去解决一些有趣的问题,而到底这个问题是否有趣以及你的解决方案是否出色,这些往往只有你的技术同行或是高手们才有能力去评价。
因此,当你玩这场黑客游戏的时候,你要知道你的得分主要取决于其他黑客对你的评价(这也是为什么在其他黑客皆称你为黑客之前你并不算是个真正的黑客)。这一事实常被掩盖于黑客独自工作的表面之下,同时黑客文化也避讳(虽然上世纪90年代后期这种避讳在逐渐减弱,但依然存在)承认个人的动力会受到外部观念的左右。
具体的来说,黑客帝国所秉承的就是人类学家所称之为的“奉献文化”。你从中获得地位与荣誉并不因为你领导着其他人,亦不因你的美丽,不因你有他人所求之物,而仅因为你的给予。或者说,你献出了你的时间和创造力,收获了技能。
若要获得黑客们的尊重,以下五件事是你应该做的:

1.编写开源软件

首先(最核心也是最传统的),就是写一些其他黑客认为有趣或是有用的程序,并将源代码开放出来供整个黑客团体使用。
(我们也常将这种东西称为“自由软件”,但这会引起很多人的疑惑——到底这个“自由”该如何定义。所以我们现在更多的称其为“开源
”软件。)
在黑客帝国中那些受到最多尊重的大神,是编写并放出那些有广泛需求的强大程序供他人使用的人。
此处有一个历史的转折点。虽然黑客们总是视身边的开源开发者为社区的强大核心,但在上世纪90年代中期之前,大部分黑客大多数时间还是在做闭源开发工作。在1996年我撰写这份指南的第一版时,这种现象依然普遍。而开源软件成为主流则是在1997年之后的事情。今天,“黑客社区”与“开源开发者”基本成了描述同一种文化和群体的两种说法——但应该记住这并非是始终如此。

2.帮助测试和调试开源软件

应服务于那些代表并调试开源软件的人。在这个并不完美的世界中,我们不可避免的花费大量的编程时间在调试错误上。这就是为什么开源软件作者会告诉你一个优秀的测试者(那些知道如何清晰的描述问题,能够准确的定位错位,能容忍预先版的缺陷,并愿意制做一些简单的诊断程序的人)对他们来说是比宝石还要珍贵的。甚至他们中的某些人可以让整个调试阶段从一场旷日持久而精疲力竭的噩梦变成一段不无益处的小困扰。
如果你是一个新人,那么找到一款你感兴趣且正在开发阶段的程序,并试着成为一名优秀的测试者。从帮助测试程序到帮助调试再到帮助修改,这是一个很自然的过程。你会从中学会很多,并且会在日后得到你所帮助的人的回报。

3.公布有用的信息

另一件有益的事情就是在诸如“常见问题”这样的网页或是文档中收集和过滤有趣的或是有用的信息。并将这些公诸于众。
重要的技术问答的维护者会得到同开源作者同样的尊重。

4.帮助维护基础设施的运作

黑客文化(就此而言,还有互联网工程的开发工作)的运作离不开志愿者的参与。为了维护它的运作,有大量必须却枯燥的工作需要去完成——管理邮件列表,监管新闻组群,维护大型软件的存档站点,发展RFC
以及其他技术标准。
而做这些事的人也会受到相当的尊重,因为谁都知道这些工作会消耗大量的时间而且显然没有编写代码有趣。做这些来奉献吧。

5.服务于黑客文化本身

最后,你可以服务并传播这文化本身(比如写一篇准确描述如何成为黑客的文章:-))。通常你不必如此,除非你已经在以上四条中取得了一定的地位与尊重。
准确的讲,黑客文化中没有领导,但却有诸如文化英雄、长老、历史学家或是发言人一类的角色。当你在这个战线中呆的足够久了,你也会成为以上几种人之一。但请注意:黑客们很排斥那些太过于个人主义的长老,所以赤裸裸的去追求这种名誉是危险的。与其费力的去追求这些,不如摆正自己的位置,并虚心和谦恭的面对自己现有的地位。

超级黑客

这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类

一些笔者自己买的、其他平台白嫖不到的视频教程。

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包免费领取!直接关注我会自动发送哦

结语

网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

特别声明:
此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!