说到黑客文化,就不能不提到技术。黑客是一个复杂的文化,不同的人,不同的时代有不同的解读。黑客的一端是技术,另一端是文化。如同武侠一般,一端是武,一端是俠。金大侠说过,武好写,侠难写。同样,要讲述技术,虽然艰涩,但总是可以表达的,难以表达的是黑客文化中的种种现象。对于没有背景的人来说,这些文化现象并不比技术易懂到哪里去。下面我们首先统一解说一些名词概念,以便下面的阐述。

名词解说 hacker 从原生意义上说,是喜爱计算机技术而充满叛逆的年轻人。藐视传统,不按照常规方法使用软件和服务,而是通过自己的洞察力,非法(或在后来被定义为非法)的使用。例如音频拨号时代,某位(绰号Captain Crunch)发现通过发出特定音频可以绕过收费机制,于是就公开了这个机制。hacker的原生目的不是破坏,而是表达自己的叛逆,炫耀自己的技术。而目前在主流媒体和民众中的形象是恶意的系统破坏者,会给你带来麻烦,并且以技术手段获得不法收入。在文中注意区别hacker的前后两种不同含义。

cracker

没有歧义,从一开始,就指软件的破坏者,但是不一定以此牟取私利。cracker和hacker的界限很模糊。

geek

原意是怪人,善于研究不善于交往的怪人,和书呆子(nerd)类似。但是近些年随着网络文化兴起,逐步变成褒义词,指喜爱技术(不特指计算机技术),充满DIY精神的人。

black hat

黑帽子,hacker中为了达成私利性目的而非法使用系统的人。通常常见的情况有,勒索(例如不付钱就会破坏系统和数据),盗用账户,获得非法虚拟货币等。

white hat

白帽子,和黑帽子相对,为了修补系统问题而研究系统的人。白帽子不代表免费,相反,白帽子通常催生了某类安全产业,不少白帽子是挂靠在安全公司名下,甚至自己经营安全公司。他们致力于寻找大型系统中的漏洞,并且向企业汇报漏洞,换取收入。白帽子可以看作是企业对hacker妥协的一次结果,与其让这些年轻人精力充沛的寻找漏洞,然后不知道发生什么事情。不如雇用他们为自己寻找漏洞,减轻自己的风险。

grey hat

灰帽子介于白帽和黑帽之间,你可以理解为,他们有的时候当白帽,有的时候当黑帽。也可以理解为,如果我卖你漏洞你不要,那我就卖给要抢你的人。

script kids

脚本小子。指一些并没有技术能力的人,利用他人已经完成的脚本进行攻击行为。这显然有悖于传统黑客伦理,充满乐趣的发现问题是第一位的,至于漏洞只是发现问题的结果。通常而言,普通人碰到的90%以上被认为是hacker的人都是script kids。

红客红客是一批非官方的,使用技术“维护国家和民族尊严”的人。严格来说,有不少“红客”是原生的hacker,只是激进的表达爱国主义和民族主义,这批人可以视为黑客中的一个特殊群体。然而不断有技术不足的人为了“维护中国尊严”而加入,导致一些自称红客的人实际上只能算是利用技术的script kids。由于试图以技术为手段表达政治意图的人数量庞大的关系,因此红客在一词在使用的时候,script kids的比例异常的高。在不少文章中经常混谈两者,阅读的时候应当注意区别。

飞天面条教 具体查wiki“飞天面条怪物”一词。这个是用于反对“智能设计论”的。即某些宗教主张,人类是由一个超自然的智能所设计。因此Bobby Henderson同样创造出一个符合智能设计论的神进行反讽。列入本文是因为很多geek本着找乐子的心情加入了相关恶搞。关于这个问题请仔细阅读飞天面条怪物的相关页面并去那里讨论,本文不掰扯宗教问题。

海盗党 具体wiki“海盗党”“盗版党”。瑞典的一大政党,主张现有的版权制度过度的限制了知识的发放,阻碍了人类的进步。主张减少版权限制,增进知识交流,注重隐私保护。

DDOS

分布式拒绝服务攻击。使用大量的肉鸡(傀儡)来访问某个服务,导致服务器过载,从而无法继续服务。本质上说DDOS很难防御,因为他实际上就是一种过载。

黑客文化历史 我们首先阐述的是黑客文化的背景。在大部分的文章里面,会提到黑客起源于美国的朋克文化。实际上基本如此,但是黑客属于朋克文化在校园中的一个变种,更专注于技术。这个变种是如此的具有生命力,以至于今天仍在极大的影响世界。关于这点,更进一步可以阅读(http://man.lupaworld.com/content/develop/joyfire/project/7.html),其中《黑客文化简史》这部分。说一点题外话,链接的这篇文档收录了ESR的不少名文,可以看作是传统黑客文化的讨论和总结,是相当不错的文档。

时代在变化,背景在变化,黑客在大众中的形象也在变化。黑客首次为大众所知,是在1988年,莫里斯蠕虫造成大量主机宕机。此次事件经过媒体大规模渲染,很大的影响了黑客文化在大众中的形象。实际上,传统的黑客文化很不稳定,极易被误解。因为传统的黑客文化信条之一是表达叛逆,而表达叛逆往往跟随着破坏现状,这点非常容易被滥用。很多人无视了注重技术,充满趣味的工作等其他信条,而只专注于挑战权威,从而成为臭名昭著的破坏者。而另一些人则在不违背信条的情况下,试图利用自己的技术赚钱。这催生了黑客产业链(当然,这不全是坏事)。而黑客产业链肯定会为用户和企业带来额外的麻烦。

另外提一句,在亚洲地区,黑客第一次为大众所知估计是CIH病毒。这也是第一个大规模破坏硬件的病毒。

由于种种因素,黑客在大众中的形象逐步变为了破坏者,找麻烦的人,以技术作恶者。实际上,在hacker的原始含义中是没有这个意义的。

从黑客到极客 在现代,hacker这个词和cracker这个词实际上已经很类似了。如果说区别的话,cracker更偏向于破坏程序本身,而hacker则引入了以技术作恶的意味。但是hacker的精神不死,他以其他词的形态出现。现代替代hacker出现的词是geek,这个词类似于原来的hacker,但又有所不同。我们首先回顾一下hacker的信条。

1.充满乐趣的工作,为了乐趣而工作。

2.挑战权威,自由万岁。

3.专注技术。

4.一个问题不应该被解决两次,无聊的工作是罪恶。

我找不到一个权威的geek信条,但是我个人总结如下:

1.关注原理而不关注结果。

2.为了自己的乐趣而非利益工作。

3.乐于挑战其他人无法完成的事情,并视为一种成就。

4.不限于coding,也包括以各种有技术含量的手段达成炫耀技术的目的。

对比两者,我们可以看出差别。hacker主要注重的是计算机技术,而geek更偏向于指代各种技术。hacker叛逆,挑战权威,自由万岁,而geek虽然喜欢自由,但是并没有强调挑战权威。两者都强调乐趣,强调技术。这些区别主要是由于各种时代的变化所致的。相比起来,geek文化更类似于hacker文化的一个普及和切割。去除了挑战权威的味道,泛化了技术,使得更多人有可能成为geek。

我们举一个当代的传统hacker的例子,Arron Swartz试图下载JSTOR的论文并散布,这是典型的一个hacker行为——下载并散布论文并不是出于为了获得私利,而是为了表达自己的观点——人类获得知识的权力不应当被阻碍。从法律上说,是的,这是违法行为。但是这个事情反过来,让我们关注了这么一个事实——JSTOR的收费论文库是否还有必要存在?或者说,一个更本质的问题。以校园墙为界限阻止知识获取,并以这种行为牟利是否合理。当然,思考的结果可能是合理的,也可能不合理。hacker并不在乎违法,实际上,很多hacker就是在违反法律的同时走向伟大。要找类似例子,可以wiki“五角大楼文件泄密案”,当然,主角不是黑客。

而geek就没有这么叛逆,以当代的典型geek形象——TBBT中那一帮书呆子而言,基本就看不到多少反叛气息。Sheldon的却进过监狱,可是理由可不是因为挑战现有制度,而是在法庭上找抽。很多geek有自己的政治主张,会讨厌某个政党,或者认同hacker文化中的思想。但是并不会像hacker们那样,无视法律,使用技术手段直接表达。

当代其他和黑客有关 另外有一些很特殊的例子,是黑客文化极端介入政治,导致产生的各种政治和宗教流派。例如飞天面条教,就我所知有不少geek程序员加入了恶搞行为,甚至参与了网页制作或线下活动。另外一个不得不提的和黑客文化有关的政治事务则是海盗党。海盗党的主张和hacker挑战权威,自由万岁的想法完全一致。不同的是,hacker(此处取褒义)以技术手段,破解他们认为非法的数据。而海盗党则以政治运动和政党体系为手段,推进政治改革。

介入经济的黑客则演变成了很有名的黑客经济链条。大致上说,这个链条呈金字塔结构。最上层的是极少数黑帽子,负责寻找系统的“硬”漏洞。其下则是为数不多的程序员,通过各种手段购买漏洞,非法的内部文件,实现各种破坏性工具。这些工具被各个地区的老板购买,分发到大量的普通技术员(甚至不需要技术)手中,利用技术来作恶。例如种下大量木马,利用获得的肉鸡进行DDOS,收费破坏敌对系统的运行。或者是诱骗用户点击木马,收集用户游戏账户或银行/支付宝账户。

链条的意义在于,链条上每向后推进一个环节,牵涉到的人和财富会以倍数增长。一个价值数十万的漏洞从黑帽子手中流出,到了程序员手里成为工具时,可能价值已经上百万。而这个工具最终被分发到技术员手中,用于诈骗的财富可能高达上千万。这个链条,使得上游精通技术但没有足够时间的专家,和下游渴望获得金钱但是没有技术的普通人相结合,使得少数专家可以指导大量普通人进行犯罪活动。因此才出现了灰帽子和白帽子两个行业,毕竟直接收购漏洞相比损失来说小的多。

当技术为政治所用,产生的则是GFW,JFCCNW等。关于这个不进一步阐述。

在中国,我如何成为一名geek 本文不会谈论如何成为一名hacker,毕竟后者在大众眼中的形象不佳,同时ESR也有一篇《如何成为一名黑客》说的甚好,我就不拾人牙慧了。不过限于中国特殊的情况,我还是说说你如何成为一名计算机技术geek。

geek不是能够培养的,而是自发产生的,geek是在苦逼的道路上蛋疼且快乐着。

要成为geek,一个首要的条件就是能够享受技术的乐趣,而不是被吓倒。在面对复杂的文档(对于国人而言,尤其是英文文档)时,仔细的阅读,并且找到系统工作的原理。无论是hacker还是geek,对于他们感兴趣的东西,仅仅知道如何使用是不够的。通常而言,大部分的geek都有自己动手拆解修改一些系统的经历。这个行为有一个术语——hack。例如,我们可能会希望http在转发请求的时候增加一些头部帮助识别信息,而原生的http服务器没有这个内容。怎么办呢?下载一份源码,然后找到相关部分,修改并重新编译一遍,这是最简单的hack行为。如果你不知道怎么修改,可以阅读文档。然而你完全没有“我可以修改http服务器”这个想法时,是注定无法培养成为geek的。也就是说,成为geek的必要条件是强烈的求知欲和与之相匹配的动手能力。

有了求知欲,我不相信你还可以若无其事的使用windows系统。你有没有希望了解系统开机时发生了什么事情?希望知道系统是如何工作的?如果有,你必定会想要下载一份linux的源码,并且进行编译安装。当然,对于初学者而言,我建议你先从ubuntu开始入手。

ubuntu的安装门槛相对比较低,但是对于初学者,还是会有很大的门槛。你可以求助于当地lug,目前中国比较大的lug有,bjlug,shlug,szlug,gzlug,hzlug。对应于北京,上海,深圳,广州,杭州。以上几个地方的同学,可以直接搜索lug,然后寻找同好求助。其他地方的只能更多的求助于线上资源。

有了ubuntu的使用经验,也许你的脑子里会跳出更多复杂的念头。例如有一台多余的旧电脑,是否可以配一块硬盘,作为nas来服务整个家里。是否可以在这个nas上加载其他系统,完成自己的需求,例如在上面开一个网页服务器。这个网页服务器是否可以监控家中的摄像头等设备,等等。

自由的思考,进而发现现状中的不足,然后快乐的折腾改进,这是geek的根本。当然,这会花费大量的时间,甚至金钱。你可能会没有时间交往男女朋友,或者要自费购买价值不算低的高阶路由器。这就是为什么我说,geek是在苦逼的道路上蛋疼且快乐着。

而进阶则可以安装arch或者gentoo。最后,你可以试试lfs。当然,所谓试试lfs,绝对不是复制粘贴,而是通过自己的了解,改变lfs适用的过程。例如你可以通过脚本和make来简化复制粘贴过程,简化测试过程。或者通过自己的了解在虚拟机上跑起lfs来。如果这些都没问题了,那么你可以看看《如何编写操作系统》和《操作系统:设计和实现》两本书。这些都没问题后,基本就可以通晓系统的方方面面,然后用mac或者用回windows。

是的,这不奇怪,geek中有不少windows用户,也有不少macos用户。一旦了解了系统的方方面面,没道理还保留一个实验用的系统在自己日常工作的机器上。

其次,你需要学习至少三种语言,一种是汇编,一种是C,一种是lisp。如果你需要经常使用,也许还要学习一种快速开发语言,例如ruby或者python。作为一个geek,没有掌握一种以上语言是不可能的。

为什么要学习语言,而且学习那么多种?因为语言是人类操纵机器的大门,不同的语言会改变你对机器的认识。汇编语言教给你的是机器的硬件工作原理,包括中断原理,输入输出控制。C语言教给你的是内核工作机制,如何结合硬件和软件进行工作。而lisp教给你的则是数学。

当然,作为入门,你可以先从bash开始,这种语言相当的简洁而且对人友好,可以很好的粘合系统中现有的程序开始工作。但是在进阶的时候会变得复杂,所以一般很少作为一门主力语言使用。

黑客文化的未来 世界各地的版权组织,总是努力使我们确信,盗版抢走了“我们”的钱,因此我们需要捐款,并身体力行的反对盗版。但是从我个人的体悟来看,实际上的情况,是版权比盗版更加恶劣的影响我们的生活。当然,盗版是恶,这点没有错。在盗版横行的国度,例如中国大陆,程序员的劳动并不得到尊重,这点我反复强调过。但是相反的,在注重版权的国度,例如美国,另一些问题更加困扰着我们。我们需要了解java底层的运作(jvm,不是底层库)?抱歉,这个受到版权的保护。我们需要查阅一些文献。抱歉,这个paper的copyright属于JSTOR。甚至,我们需要在一种新的设备上使用一种已经成为工业标准的语言,都必须经过版权所属公司的批准,甚至可能被恶意阻止(android上的java)。

比这个问题更恶劣的,是美国的音乐和影视作品版权保护。美国的影视作品享有70年的版权保护期限,而且可以被继承。政客们提出的理由是,如果没有足够的版权保护,就没有人愿意生产歌曲和影视作品。但实际上,美国的软件保护年限只有20年,还是有源源不断的软件被生产出来。

版权保护和知识自由是一对矛盾。没有版权保护,就没有人会重视知识劳动成果,那样会使得更少的人去生产知识。而过度的版权保护,会使得大家都重视知识劳动成果,但是却无法获得知识。不平衡的两者,都无法促使我们创造出更好的东西。

另一个和hacker有关的问题则是隐私保护和言论自由的矛盾。通常来说,我们对隐私保护越重视,则会相应的妨碍言论自由。因为你对他人的批评几乎不可避免的会涉及到他人的隐私。美国对这个问题的约束通常是,公众人物的隐私受到更少的保护。hacker的传统是注重自由,其中就包括言论自由。如果有一个hacker认为你为非作歹,他会通过他能做的把你的家底狠狠的翻一遍,而不管你是不是个公众人物。理所当然,这对个人隐私保护是个严重威胁。现在在中国大陆地区越演越烈的网络实名制其实就有这方面的冲突。

网络实名制主要用于对应"人肉",即网友通过查询网络数据,获得某个网络帐号的真实身份,进而查询出他的各种相关信息。在当代,几乎没有人是没有网络数据留存的,因此几乎每个人都有被人肉的可能。

实际上,我认为每个人都应当思考一下,版权保护和知识自由的界限,以及隐私保护和言论自由的界限。

这会为hacker文化引入的新的信念。