什么是黑客技术?成为黑客需要学什么


什么是黑客?
几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的 年代 , 那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群 。这种文化的成员创造了 “hacker” 这个名词 。黑客们建立了 Internet 。黑客们发明出了现在使用的 UNIX 操作系统 。黑客们使 Usenet 运作起来 ,  黑客们让 WWW 运转起来 。如果你是这个文化的一部分 , 如果你对这种文化有所贡献 , 而且 这个社群的其它成员也认识你并称你为 hacker, 那么你就是一位黑客 。
黑客精神并不仅仅局限在软件的黑客文化中 。有人用黑客态度对待其它事情 , 如电子学和音乐—— 事实上 , 你可以在任何最高级别的科学和艺术活动中发现它 。精于软件的黑客赞赏这些在其他领域的同类并把他们也称作黑客—— 有人宣称黑客天性是绝对独立于他们工作的特定领域的 。但在这份文档中 ,  我们将注意力集中在软件黑客的技术和态度 ,  以及发明了“黑客”一词的以共享为特征的文化传统之上 。
有一群人大声嚷嚷着自己是黑客 , 但他们不是 。他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人 。真正的黑客把这些人叫做“骇客”(cracker) , 并不屑与之为伍 。多数真正的黑客认为骇客们又懒又不负责任 , 还没什么大本事 。专门以破坏别人安全为目的的行为并不能使你成为一名黑客 ,  正如 用铁丝偷开走汽车并不能使你成为一个汽车工程师 。不幸的是 , 很多采访人员和作家往往错把“骇客”当成黑客; 这种做法一直使真正的黑客感到恼火 。
根本的区别是:黑客搞建设 , 骇客搞破坏 。
如果你想成为一名黑客 , 请接着读下去 。如果你想做一个骇客 , 去读 alt.2600 新闻组 , 并在意识到你并不像自己想象的那么聪明后去坐五到十次监狱 。关于骇客 , 我只想说这么多 。
黑客应有的态度
黑客们解决问题 , 建设事物 , 同时他们崇尚自由和无私的双向帮助 。要被他人承认是一名黑客 , 你的行为得体现出你好像具备了这种态度一般 。而要想做得好象你具备这种态度一般 , 你就得切切实实坚持它 。
但是如果你认为培养黑客态度只是一条在黑客文化圈中得到承认的路子 ,  那就大错特错了 。成为具备这些特质的这种人对 你自己非常重要——有助于你学习 , 及给你提供源源不断的动力 。同所有创造性的艺术一样 , 成为大师的最有效方法就是模仿大师的精神—— 不仅从智力上 , 也要从感情上进行模仿 。
或许, 下面这首现代的禅诗很好的阐述了这个意思:
To follow the path:(沿着这样一条道路:)
look to the master,(寻找大师 , )
follow the master,(跟随大师 , )
walk with the master,(与大师通行 , )
see through the master,(洞察大师 , )
become the master.(成为大师 。)
嗯 , 如果你想成为一名黑客 , 反复读下面的事情直至你相信它们 。

什么是黑客技术?成为黑客需要学什么

文章插图
如果想成为一名黑客 , 都需要具备什么能力?
1. 学习如何编程
这当然是最基本的黑客技能 。如果你还不会任何编程语言 , 我建议你从Python开始 。它设计清晰 , 文档齐全 , 合适初学者入门 。它是一门很好的入门语言 , 并且不仅仅只是个玩具; 它非常强大、灵活 , 也适合做大型项目 。我有一篇 Python评价详细说明这点 。好的 教程 可以在Python网站得到 。(译者:比较好的中文Python站点可能是http://pythonrecord.51.net 。)
Java也是好的入门语言 。它比Python难得多 , 但是生成的代码速度也快得多 。它同时也是一种优秀的计算机语言 , 不止是用来入门 。
但是注意 , 如果你只会一两门语言 , 你将不会达到黑客所要求的技术水平 ,  甚至也不能达到一个程序员的水平——你需要学会如何以抽象的方式思考编程问题 ,  独立于任何语言 。要做一名真正的黑客 , 你需要学会在几天内通过一些手册 ,  结合你现在所知 , 迅速掌握一门新语言 。这意味着你应该学会几种截然不同的语言 。
如果要做一些重要的编程工作 , 你将不得不学习C语言 , Unix的核心语言 。C++与C非常其他类似;如果你了解其中一种 , 学习另一种应该不难 。但这两种都不适合编程入门者学习 。而且事实上 , 你越避免用C编程 , 你的工作效率会越高 。
2. 得到一个开放源代码的Unix并学会使用、运行它
没错 , 这世界上除了Unix还有其他操作系统 。但它们都是以二进制形式发布的——你无法读到它的源代码 , 也不可能修改它 。尝试在运行DOS或Windows或MacOS的机器上学习黑客技术 , 就象是带着脚镣学跳舞 。
除此之外 , Unix还是Internet的操作系统 。你可以学会上网却不知道Unix , 但你不了解Unix就无法成为一名Internet黑客 。因此 , 今天的黑客文化在很大程度上是以Unix为中心的 。(这点并不总是真的 ,  一些很早的黑客对此一直很不高兴 , 但Unix和Internet之间的联系已是如此之强 ,  甚至连Microsoft也无可奈何 。)
所以, 安装一套UNIX——我个人喜爱LINUX但还有其他种类的 (是的 , 你可以同时安装Linux及DOS/Windows在同一电脑上) 。学习它 , 使用它 , 配置它 。用它在Internet上冲浪 。阅读它的源代码 。修改它的源代码 。你会得到比在Microsoft操作系统上更好的编程工具(包括C , LISP , Python及Perl) 。你会觉得乐趣无穷 , 学到在你成为大师之前意识不到的更多的知识 。
(注:如果你是一个新手 , 我不推荐自己独立安装Linux或者BSD 。安装Linux的话 , 寻求本地Linux用户组的帮助;或联系 Open Projects Network 。LISC维护着一些 IRC频道 ,  在那里你可以获得帮助 。)
3. 学会如何使用WWW和写HTML
黑客文化建造的大多东西都在你看不见的地方发挥着作用 , 帮助工厂、办公室和大学正常运转 ,  表面上很难看到它对非黑客的普通人的生活的影响 。Web是一个大大的例外 。即便政客也同意 , 这个巨大耀眼的黑客玩具正在改变整个世界 。单是这个原因(还有许多其它的) , 你就需要学习掌握Web 。
这并不是仅仅意味着如何使用浏览器(谁都会) , 而是要学会如何写HTML ,  Web的标记语言 。如果你不会编程 , 写HTML会教你一些有助于学习的思考习惯 。因此 , 先完成一个主页 。(网上有很多好的教程; 这是一个 。)
但仅仅拥有一个主页不能使你成为一名黑客 。Web里充满了各种网页 。大多数是毫无意义的 , 零信息量垃圾——界面时髦的垃圾 ,  注意 , 垃圾的水准都类似(更多信息访问 The HTML Hell Page) 。
要想有价值 , 你的网页必须有内容—— 它必须有趣或对其它黑客有帮助 。这是下一个话题所涉及的……
4. 如果你不懂实用性的英语 , 学习吧
这一点千真万确 。大概1991年的时候我就了解到许多黑客在技术讨论中使用英语 , 甚至当他们的母语都 相同 , 英语对他们而言只是第二语言的时候;据我知道的报导 , 当前英语有着比其他语言丰富得多的技术词汇 ,  因此是一个对于工作来说相当好的工具 。基于类似的原因 , 英文技术书籍的翻译通常不令人满意(如果有翻译的话) 。
Linus Torvalds , 一个芬兰人 , 用英语注释他的代码(很明显这对他来说不是凑巧) 。他流利的英语成为他能够管理全球范围的Linux开发人员社区的重要因素 。这是一个值得学习的例子 。
什么是黑客技术?成为黑客需要学什么

文章插图
那么 , 做为一名小白 , 应该怎么学起呢?
1.计算机的工作原理
要完成这部分的基础学习 , 你有很多开始的起点选择 , 你可以选择从经常使用电脑开始 , 也可以从明天起开始选择一门编程语言去学开始(此处注意:小白可能不理解有哪些语言 , 并且很容易陷入迷乱中) , 或者是去一些论坛逛逛 , 或者是买一本书籍 。起点的渠道很多 , 看你选择哪一种 。
我建议 , 首先从一门编程语言开始 , 一定要死磕 , 选择一门编程语言不能放弃 , 要从头到尾的去学完 。我在这里不推荐语言 , 可以自己慢慢了解去选择自己喜欢的一门 。(了解过程中不免有迷茫 , 很正常)
但这还只是一部分而已 , 还有一部分硬件的知识可能需要你去理解 。比如什么是冯诺依曼结构?作为一名小白可以不那么三心二意 , 先把前人给你指引的首要的东西学了 , 然后再去拓展是最稳妥的 。
计算机众所周知的是由软件+硬件的机器 , 硬件是轨道 , 软件是跑车 , 跑车在轨道上跑才形成了各种各样的数据样式的展现 。这是形象化了的举例 , 与真正的硬件和软件有所出入 , 但是前期为了理解 , 放弃那种精确 , 求之以粗糙是很有必要的 。
上面我的建议 , 从编程开始入手学习 , 从更大的视野来看 , 就是从软件开始下手 , 因为硬件已经被设计完成 , 与你操作计算机的关系不大 , 一个懂硬件的未必会对计算机操作很牛逼 , 因为你的目的是黑客 , 是对计算机工作的控制 , 而不是构造计算机 , 因此软件优先于硬件 。
因此 , 去找一门编程语言 , 死磕一门 , 绝对要死磕 , (我指的是想成为黑客大神的人 , 如果你的目标就是能搞个小入侵 , 知道点计算机的基本工作过程 , 没有必要) , 学完一门语言后你就会进步很多 , 到时候你思维打通了 , 你才会明白今天我所说的 。至于学什么语言前面我已经说过不能推荐 , 一定要自己去摸索 。
2.计算机网络基础
当你能够用一门语言去编程的时候你就对计算机如何工作的有很深的认知了 , 计算机上跑的任何软件和程序(怎么跑的 , 为什么能跑?这些潜在的疑问在学的过程中会迎刃而解 , 此刻记住你的问题边界 , 不要过分拓展疑问边疆) , 一些安装包什么的 , 你都明白那是干啥的 。
接着对于所有软件程序中的一个集合“网络协议”也就很容易学习了 。
网络协议本质是程序 , 他的功能是让计算机之间能够通信 , 加一点 , 安全通信 。
再上一部分的计算机工作原理基础上你学习完成后 , 那么这一部分的学习很轻松 。但是绝对重要 , 因为黑客的影响力主要来自互联网 , 没有广泛相互联系的互联网 , 黑客也只能对面前的计算机进行操控 , 而不能远程去控制和攻击 , 学习计算机网络会让你明白黑客攻击当中的很多远程的方式 , 并且黑客的多数伟大和神秘也是互联网赋予的 。
3.黑客基础
黑客基础是给学习完以上两大基础后依然不知道如何入侵和进行黑客工程的人准备的 , 一般有黑客天赋的人学完以上两部分 , 对于如何利用计算机通过网络去进入其他计算机的系统 , 窃取信息等都会不学自通 。
假如你还尚未打通 , 那么就要学学黑客的基础 , 这方面有大量前辈们所写的书 , 对于前辈经验们的系统性的梳理去认知也很快会让你进入一个不一样的思维模式去 。
【什么是黑客技术?成为黑客需要学什么】