电脑黑客代码教材(简单黑客代码教学一学就会)
本人想学Python编程,推荐几本教程,还有几个问题。
如何成为一名黑客
什么是黑客?
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里充满了各种网页。多数是无意义的,零信息量垃圾。
要想有价值,你的网页必须有内容---必须有趣或对其它黑客有用。这样,我们来到下一个话题....
黑客文化中的地位大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“大教堂与集市”,解释了许多Linux和开放源码文化的运做原理。我还在它的续集“开拓智域”一文中有更直接的论述。
FAQ(常问问题解答)
问:你会教我如何做黑客吗?
自从第一次发布此页,我每周都会得到一些请求,要我“教会他如何做黑客”;遗憾的是,我没有足够的时间和精力来做这个;我自己的编程项目已经占用了我110%的时间。
甚至即便我想教你也不可能,黑客基本上是一项需要你自行修炼的的态度和技术。你会发现即使真正的黑客想帮助你,如果你乞求他们填鸭一样教你的话,你不会赢得他们的尊敬。
首先去学习。显示你在尝试,你能靠自己去学习。然后再去向黑客们请教问题。
问:你会帮我“黑”掉一个站点吗?或者教我怎么黑它?
No. 任何在读完FAQ后还问此问题人,都是愚不可及的家伙,即使有时间我也不会理睬。 任何发给我的此类mail都会被忽略或被痛斥。
问:哪里能找到真正的可以与之交流的黑客?
最佳办法是就近参加一个Unix或Linux的用户组,参加他们的会议。
问:我该先学哪种语言?
HTML, 如果你还不会的话.
但它不是一个真正的编程语言。当你准备编程时,我建议你从 Python开始. 会有很多人向你推荐Perl,它比Python还受欢迎,但却难学一些。
C 是非常重要的,但它却是最难学的。不要一开始就尝试学C。
问:开放源码的自由软件不会使程序员饿肚子吗?
这似乎不大可能---到目前,开放源码软件产业创造了而不是消灭了大量工作机会。
如果写一个程序比不写一个程序只是个纯粹经济上的收益的话,无论它是否免费,只要它被完成,程序员都会从中得到回报。而且,无论软件是由多么的free的方法开发的,对更新的软件应用的需求总是会有的。
问:我从何学起?哪里有免费的Unix?
本页的其他地方指向最常用的免费Unix。要做一名黑客,你需要自立自强,以及自我教育的能力。
现在开始吧......
求电脑C语言入门编程的书籍
我建议你用清华大学谭高强写的书《C 语言程序设计》这是一本入门书,而且写得很详细,刚开始看可能会觉得枯燥,慢慢就好了,只要入了门就觉得简单了,接下来看别的书就容易多了,贵在坚持,祝你成功!
黑客要知道些什么基本知识?
一、学习技术:
互联网上的新技术一旦出现,黑客就必须立刻学习,并用最短的时间掌握这项技术,这里所说的掌握并不是一般的了解,而是阅读有关的“协议”(rfc)、深入了解此技术的机理,否则一旦停止学习,那么依靠他以前掌握的内容,并不能维持他的“黑客身份”超过一年。
初级黑客要学习的知识是比较困难的,因为他们没有基础,所以学习起来要接触非常多的基本内容,然而今天的互联网给读者带来了很多的信息,这就需要初级学习者进行选择:太深的内容可能会给学习带来困难;太“花哨”的内容又对学习黑客没有用处。所以初学者不能贪多,应该尽量寻找一本书和自己的完整教材、循序渐进的进行学习。
二、伪装自己:
黑客的一举一动都会被服务器记录下来,所以黑客必须伪装自己使得对方无法辨别其真实身份,这需要有熟练的技巧,用来伪装自己的IP地址、使用跳板逃避跟踪、清理记录扰乱对方线索、巧妙躲开防火墙等。
伪装是需要非常过硬的基本功才能实现的,这对于初学者来说成的上“大成境界”了,也就是说初学者不可能用短时间学会伪装,所以我并不鼓励初学者利用自己学习的知识对网络进行攻击,否则一旦自己的行迹败露,最终害的害是自己。
如果有朝一日你成为了真正的黑客,我也同样不赞成你对网络进行攻击,毕竟黑客的成长是一种学习,而不是一种犯罪。
三、发现漏洞:
漏洞对黑客来说是最重要的信息,黑客要经常学习别人发现的漏洞,并努力自己寻找未知漏洞,并从海量的漏洞中寻找有价值的、可被利用的漏洞进行试验,当然他们最终的目的是通过漏洞进行破坏或着修补上这个漏洞。
黑客对寻找漏洞的执著是常人难以想象的,他们的口号说“打破权威”,从一次又一次的黑客实践中,黑客也用自己的实际行动向世人印证了这一点--世界上没有“不存在漏洞”的程序。在黑客眼中,所谓的“天衣无缝”不过是“没有找到”而已。
四、利用漏洞:
对于正派黑客来说,漏洞要被修补;对于邪派黑客来说,漏洞要用来搞破坏。而他们的基本前提是“利用漏洞”,黑客利用漏洞可以做下面的事情:
1、获得系统信息:有些漏洞可以泄漏系统信息,暴露敏感资料,从而进一步入侵系统;
2、入侵系统:通过漏洞进入系统内部,或取得服务器上的内部资料、或完全掌管服务器;
3、寻找下一个目标:一个胜利意味着下一个目标的出现,黑客应该充分利用自己已经掌管的服务器作为工具,寻找并入侵下一个系统;
4、做一些好事:正派黑客在完成上面的工作后,就会修复漏洞或者通知系统管理员,做出一些维护网络安全的事情;
5、做一些坏事:邪派黑客在完成上面的工作后,会判断服务器是否还有利用价值。如果有利用价值,他们会在服务器上植入木马或者后门,便于下一次来访;而对没有利用价值的服务器他们决不留情,系统崩溃会让他们感到无限的快感!
第二节、黑客应掌握的基本技能
从这一节开始,我们就真正踏上学习黑客的道路了,首先要介绍的是作为一名初级黑客所必须掌握的基本技能,学习这可以通过这一节的阅读了解到黑客并不神秘,而且学习起来很容易上手。为了保证初学者对黑客的兴趣,所以本书采取了循环式进度,也就是说每一章节的内容都是独立、全面的,学习者只有完整的学习过一章的内容,才能够进而学习下一章的内容。
一、了解一定量的英文:
学习英文对于黑客来说非常重要,因为现在大多数资料和教程都是英文版本,而且有关黑客的新闻也是从国外过来的,一个漏洞从发现到出现中文介绍,需要大约一个星期的时间,在这段时间内网络管理员就已经有足够的时间修补漏洞了,所以当我们看到中文介绍的时候,这个漏洞可能早就已经不存在了。因此学习黑客从一开始就要尽量阅读英文资料、使用英文软件、并且及时关注国外著名的网络安全网站。
二、学会基本软件的使用:
这里所说的基本软件是指两个内容:一个是我们日常使用的各种电脑常用命令,例如ftp、ping、net等;另一方面还要学会有关黑客工具的使用,这主要包括端口扫描器、漏洞扫描器、信息截获工具和密码破解工具等。因为这些软件品种多,功能各不相同,所以本书在后面将会介绍几款流行的软件使用方法,学习者在掌握其基本原理以后,既可以选择适合自己的,也可以在“第二部分”中找到有关软件的开发指南,编写自己的黑客工具。
三、初步了解网络协议和工作原理:
所谓“初步了解”就是“按照自己的理解方式”弄明白网络的工作原理,因为协议涉及的知识多且复杂,所以如果在一开始就进行深入研究,势必会大大挫伤学习积极性。在这里我建议学习者初步了解有关tcp/ip协议,尤其是浏览网页的时候网络是如何传递信息、客户端浏览器如何申请“握手信息”、服务器端如何“应答握手信息”并“接受请求”等内容,此部分内容将会在后面的章节中进行具体介绍。
四、熟悉几种流行的编程语言和脚本:
同上面所述一样,这里也不要求学习者进行深入学习,只要能够看懂有关语言、知道程序执行结果就可以了。建议学习者初步学习C语言、asp和cgi脚本语言,另外对于htm超文本语言和php、java等做基本了解,主要学习这些语言中的“变量”和“数组”部分,因为语言之间存在内在联系,所以只要熟练掌握其中一们,其他语言也可以一脉相同,建议学习C语言和htm超文本语言。
五、熟悉网络应用程序:
网络应用程序包括各种服务器软件后台程序,例如:wuftp、Apache等服务器后台;还有网上流行的各种论坛、电子社区。有条件的学习者最好将自己的电脑做成服务器,然后安装并运行一些论坛代码,经过一番尝试之后,将会感性的弄清楚网络工作原理,这比依靠理论学习要容易许多,能够达到事半功倍的效果
/本篇文章来源于 新贵网 原文出处:http://www.2xg.cn/?dp-bbsthread-67435.html
黑客是怎么入侵电脑的?
使用肉鸡入侵的 一般高手要会C++才能成为高手 木马使用C++制造的 你要学会C++就可以了 要两三年
想买一本关于vbs的书,大家推荐一本!
下面这个教程不记得在哪下电脑黑客代码教材的了 希望对你有用
一个在黑客界引起轰动的菜鸟教材---跟电脑黑客代码教材我学编程系列
跟我学编程系列
原黑白新区记忆碎片的帖子电脑黑客代码教材!转贴上来电脑黑客代码教材,供大家学习!!!
发现大部分黑白的朋友都不会编程, 这可不是件好事, 所以这次我就写了一个简单的编程教程, 讲一下VBScript. 主要面向菜鸟, 懂得编程的朋友就不要浪费时间了, 如果你想接触以下VBScript也可以, 但既然有编程基础推荐直接去找一些参考书来读, 会比较快.
什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.
我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本(Notepad).我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供 "语法高亮"等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus (2.10).
OK, 我们先来写一个VBScript程序热热身.
REM 输入并回显你的名字
'使用InputBox和Msgbox函数
Dim name,msg
msg="请输入你的名字:"
name=Inputbox(msg,"名称")
Msgbox(name)
把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件("保存类型"里面选择"所有文件").然后双击运行, 观察运行结果. 注意:请自己输入程序清单, 不要复制-粘贴!
我来解释一下这个程序, 第一行和第二行的开头分别是"REM"语句和" ' ", 这两个东西的作用是相同的, 表示本行是注释行, 就是说这两行什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.
Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.
下一行被称之为"赋值", "="是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于"请输入你的名字:"这个字符串,但当msg被再次复制的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2, b=12.222等等.
再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个"黑箱", 有输入(参数)和输出(返回值), 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来"接"住InputBox的返回值--就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用","分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg="请输入你的名字:", 所以我们在对话框的提示栏就会看到"请输入你的名字:" 第二个参数是对话框的标题, 我们用直接量(学名叫"常量", 这里是"字符串常量")传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在"名称"后面再加一个","然后输入随便一串字符(字符串,用双引号""包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.
Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.
要点:
1) 注释(以REM或'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.
2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="
3) 以""包裹起来的字符称之为"字符串"
4) 函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值
5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出
作业:
1) 试验Inputbox的第三个参数
2) 写一段程序输出你的年龄
3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出
第二篇:
我真没想到, 第一次的作业竟然有人不会.
看来要讲的非常非常细致才行, 嗯, 今天讲各种"量"和基本运算
先说常量, 这个比较简单.
什么是常量呢, 常量就是其值不可变化的量.
常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46
如果你在程序中使用"21=46", 这样的语句将会引发一个错误. 同样的, 字符串也是常量 (还记得字符串吗? 就是包裹在""之间的一串字符), "Hello World"就是一个例子, 如果你使用"Hello World"="Bye"这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?
第二种, 是我们自己定义的常量,这种量也使用代号, 他们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个变量,我们使用"const"这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用),格式是:const 常量名=常量值.
例如:
const PI=3.1415926
const NAME="记忆碎片"
这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
msgbox("Hello World")
这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:
const hw="Hello World"
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
msgbox(hw)
这样当你要修改输出的时候只要修改hw的值就行了.
好了, 现在我们来看看编程的第一块重要"基石":变量. 解释变量最好的办法我觉得是"盒子", 一个变量好像一个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个"盒子"是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖"盒子"里面装些什么东西, 这样才能找到合适的"盒子"(比如C语言), 但VBS给我提供的是能够自动伸缩的"魔术盒", 我们不用关心装进去的是什么东西,
VBS会自动调整盒子的大小. 例如:
Dim a1,a2,a3
a1=14
a2=12.23
a3="Hello"
而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:
int a1; Dim a1 as integer
float a2; Dim a2 as Double
char* a3; Dim a3 as strnig
a1=14; a1=14
a2=12.23; a2=12.23
a3="Hello"; a3="Hello"
嗯……扯远了……
变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个"盒子"把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:
dim a,b,s
a=15
b=12
s=a*b
msgbox(s)
这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:
dim s
s=15*12
msgbox(s)
这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.
现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?
所以, 我们要接受用户的输入, 还记得吗? InputBox函数.
修改后程序如下:
dim a,b,s
a=inputbox("请输入矩形的长:")
b=inputbox("请输入矩形的宽:")
s=a*b
msgbox(s)
ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.
我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:
dim ans
ans=12+32/4+[(23-10)*2]
msgbox(ans)
四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).
在编程中有一个有趣的运算符是"mod", 这个运算符叫做"取余运算符", 就是取得一次除法的余数, 例如
dim a
a=16 mod 5
你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3....1, 所以mod计算的结果就是1.
还有一个运算符是"^"(就是键盘"6"上面的小箭头), 他表示"乘幂"(或者是"方") 比如:
dim a,b,c
a=2
b=a^2
c=a^3
msgbox(a)
msgbox(c)
则b=a*a=4, c=a*a*a=8
我们一次不要讲太多, 这次就讲到这里, 现在总结一下.
要点:
1) 常量分为自然常量和自定义常量, 常量的值不可修改
2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字
3) 四则运算在编程中没有任何不同
4) MOD是取余运算
作业:
1) 编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox) PI取值3.14159
2) 编一个程序取得20 / 3 的余数
第三篇(共六篇):
首先, 我来解决一下上次课程的几个疑问
第一, 那个余数问题, 16 / 5 = 3...1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.
第二, 请看一下程序清单:
1)
Dim a,b,c
a=inputbox("a是:","输入半径")
b=Inputbox("b是:","输入半径")
c=a*2+b*2
Msgbox(c)
这个 输入1、2时是6
2)
Dim a,b,c
a=inputbox("a是:","输入半径")
b=Inputbox("b是:","输入半径")
c=(a+b)*2
Msgbox(c)
这个输入1、2时是24
为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于()1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.
怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:
c=(int(a)+int(b))*2
这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) 'c是你自己的变量
大家是不是觉得这个课程有点枯燥, 呵呵, 变量和运算符部分的确是这样的, 不过多多练习也就好了, 这次, 我们写写真正好玩的东西: 流程控制语句. 这个部分开始才是真正的编程.
首先介绍判断结构.
在此之前, 我们先介绍一种简单的变量类型:布尔值(Boolean), 这种变量只有两个可能值:True,Flase,即真或假. 这种变量在某些情况下很有用(比如"开关"). 我们定义一个bool变量的方法和其他变量一样, 赋值也一样, 例如:
dim a,b
a=true
b=false
注意,true和"true"是不一样的, "true"是字符串,true是布尔值, 千万不能混淆.
回到if语句上来, 我们先来看看简化版的if语句:if 判断式 then 语句体 我们来看一个例子:
dim a,b
a=12
b=13
if ba then msgbox("B大于A")
我们只看最后一行, ab这个式子(表达式)有一个返回值, 是bool型的. 因为这个式子只有两种可能:b大于a, b不大于a, 所以这个式子也只有两种可能性, 即真或者假. if语句判断这个表达式的返回值是真还是假, 如果是真(true)则执行then后面的语句, 如果是假, 则不执行, 你把a的值改成14看看还会不会弹出对话框?
当我们要在判断之后执行多行语句怎么办呢, 我们需要用语句块来解决, 在这里可以叫块if
dim a,b
a=12
b=13
if ab then
msgbox("A小于B")
msgbox("B大于A")
end if
两个msgbox函数夹在if和end if之间, 这个部分就是语句块, 块里的每一条语句之前请空出4--8(一个Tab键)个格, 这不是必需的, 但是是一个好习惯, 以便看清楚程序的结构. 这样我们就能运行多于一个的语句, 请注意if...then...end if 这三个关键部分不要掉了. OK, 我出一个题, 输入一个数, 如果小于100就输出"错误", 如果大于100就输出"正确", 我这里有两个程序版本:
dim a
a=inputbox("请输入一个大于100的数")
a=int(a) 'inputbox返回的是字符串, 我们把他变成整数 : )
if a100 then msgbox("正确")
if a100 then msgbox("错误")
还有一个更简单的
dim a
a=inputbox("请输入一个大于100的数")
a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
if a100 then
msgbox("正确")
else
msgbox("错误")
end if
看到多了一个else了吧, else的作用就是当要判断的表达式为false时执行的. 这样程序就可以处理两种不同的情况了. 不要忘了用end if结尾
嘿嘿, 我是变态者, 现在我要你处理三种情况, 100,=100,100, 还要写在一个if结构里, 你怎么办, 我给你答案:
dim a
a=inputbox("请输入一个大于100的数")
a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
if a100 then
msgbox("正确")
elseif a=100 then
msgbox("老大, 你耍我?")
else
msgbox("错误")
end if
这次输入100看看, 是什么? else if语句可以在if结构中多次出现, 以灵活判断不同的情况 (如果你要判断得太多, 就请使用"选择结构", 过会儿就讲), 当所有elseif都处理完了,而没有符合情况的时候再执行else中的语句.另一个例子:
Dim a,b,c,d
a=inputbox("a是:","输入半径")
b=Inputbox("b是:","输入半径")
d=Inputbox("答案:","输入答案")
c=a*2+b*2 '这里没有问题, 会自动转换
if d=c then
Msgbox("你好聪明")
else
Msgbox("你好猪头 自己的题还不会!")
end if
再看看这个, 无论你回答得多么正确你都是猪头, 哈哈, 不是我耍你, 还是文章开始时候的inputbox的返回类型在耍你, d是inputbox的返回值, 他是一个字符串, 而c是一次整数计算的结果, 他是一个整数. 一个字符串无论如何也不等于一个整数, 尽管他们字面上是一样的:"8"(不等于号)8 所以if的判断式的值永远是false, 总是执行else部分的语句. 我们可以这么修改
Dim a,b,c,d
a=inputbox("a是:","输入半径")
b=Inputbox("b是:","输入半径")
d=Inputbox("答案:","输入答案")
d=int(d)
'在这里我们取出了d的值, 变成整数, 在放回"d"这个盒子里
c=a*2+b*2
if d=c then
Msgbox("你好聪明")
else
Msgbox("你好猪头 自己的题还不会!")
end if
这样就成功了. 这也是Inputbox函数的一个讨厌的地方, 没办法, vbs没有其他好的输入方式了.
说到if, 我们不得不说一说逻辑运算符, 今天介绍两种, "and" 和 "or" 学会了if语句之后, 我举一个例子, 你一看就明白了.
dim a,b
a=inputbox("输入一个数 10")
b=inputbox("输入另一个数 10")
a=int(a)
b=int(b)
if a10 and b10 then
msgbox("正确")
else
msgbox("错误")
end if
这段程序让你输入两个值, 必须都大于10, 只要有一个不大于, 就输出错误
dim a,b
a=inputbox("输入一个数 10")
b=inputbox("输入另一个数 10")
a=int(a)
b=int(b)
if a10 or b10 then
msgbox("正确")
else
msgbox("错误")
end if
这段程序让你输入两个值, 只要有一个大于10, 就返回成功. 其实and和or很好理解, 我读"if a10 or b10 then" 这一句, 用华语是这样:"如果a大于10或者b大于10, 那么...". 这样是不是就很好理解了呢.
OK, 我们再来看一种新结构, 今天的课就结束, 已经午夜了, 我都累死了.
当你的程序要处理很多种不同的判断情况的时候elseif..then会让程序看起来很杂乱, 所以就有了一种select case结构专门对付这种情况, select case的语法结构很简单:
select case 变量名
case 值
语句
case 值
语句
case else
语句
end select
我们举个例子就能很简单的说明:
dim a
a=inputbox("输入一个1--3的值")
a=int(a) '处理inputbox返回字符串的问题
select case a
case 1
msgbox("壹")
case 2
msgbox("贰")
case 3
msgbox("叁")
case else
msgbox("输入错误")
end select
这个例子把1,2,3这三个阿拉伯数字转化成中国大写数字, 这个程序写成if...elseif 的形式如下
dim a
a=inputbox("请输入1--3的值")
a=int(a)
if a=1 then
msgbox("壹")
elseif a=2 then
msgbox("贰")
elseif a=3 then
msgbox("叁")
else
msgbox("输入错误")
end if
怎么样, 麻烦吧, 还是select好吧.
OK, 今天到此结束, 总结一下:
要点:
1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数
2) bool变量的值只有两种:true,false
2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true
3) if 语句的格式
4) select...case的格式
作业:
1) 使用3个bool值, 储存你的3兄弟姐妹是否是男性 (提示:sister1male=false)
2) 给定一个个数, 大于10而且小于20输出"正确", 否则输出"错误"
3) 输入12,或者15, 输出"正确", 否则输出"错误"
4) 把5以内的正整数都转换成中国大些数字
5) 自己随便设计一个程序, 应用今天的知识
四篇(共六篇):
大家好, 昨天我休息了一天, 所以今天写第4章:循环结构
我们先来看一道题:商场进行每日结算, 要求累加出今天的营业额, 每次输入一个数, 这道题其实很简单, 但就我们现在学
过的知识要完成这道题相当麻烦, 我们来分析一下. 首先, 我们需要知道买卖的次数, 这样才能控制输入的次数,但是, 这种设
计是非常低效的, 每天都要重新设计程序. 假定今天进行了5次交易, 以下是源程序:
dim sum
sum=0 '初始化变量
sum=sum + int(inputbox("请输入交易额"))
'sum=sum+x 这种形式是把本身的值取出来, 进行一次运算, 再放回本身, 这种方法很有用处
'这里使用了函数嵌套, 把inputbox的返回值直接传给int函数, 转化成整数, 下同
sum=sum + int(inputbox("请输入交易额"))
sum=sum + int(inputbox("请输入交易额"))
sum=sum + int(inputbox("请输入交易额"))
sum=sum + int(inputbox("请输入交易额"))
msgbox(sum)
看到了吗, 我通过把计算过程复制了5遍才设计好了程序, 这种程序在汽车交易所等交易次数少的地方还能凑合着用, 如果
放到超市岂不是要复制, 粘贴几千遍? 我们今天讲的内容就可以克服这种缺陷, 首先, 我们来讲以下Do...Loop语句.
do...loop的结构看上去非常简单, 就是:do...loop, 仅此而已, 这个结构不断执行do和loop之间的语句(学名叫:循环体),
永不停止. 举个例子来说:
do
msgbox("这个信息会不断重复出现, 要停止程序请使用任务管理器(Ctrl+Alt+Del)中止wscript进程")
loop
运行这个程序, 当你点销掉一个对话框马上会出来另一个, 你永远点不完, 总有下一个. 谁会运行这样的程序? 除非是给
别人捣乱(我就干过这种事), 所以在do..loop结构中还有一个语句:exit do, 这个语句将终止循环, 跳到loop后面的语句继续
执行. 据个例子来说:
dim a '注意:常量不需要在dim里面声明,否则会引发错误
const pass="123456" '这是一个字符串 请用""包裹起来. 设定密码为常量, 不可变更
do
a=inputbox("请输入密码")
if a=pass then
msgbox("密码校验成功")
exit do
end if
loop
这个程序会一直不停的问你密码, 知道你输入了正确的密码为止.(if可以嵌套在另一个if当中, 也可以嵌套在循环体当中
, 所以一定要用缩进, 来分清楚程序的各个部分). 这个程序是很经典的, 早期的程序都是这么做的. 但是我们是Hacker, 所以
我们了解系统的安全性, 这种无限次认证程序很容易被穷举破解, 我们要来限定认证的次数. 修改程序如下
dim a,ctr
ctr=0 '设置计数器
const pass="pas123_" '上面的那个是弱密码, 这次改的强一点
do
if ctr=3 then
msgbox("已经达到认证上限, 认证程序关闭")
exit do
else
a=inputbox("请输入密码")
if a=pass then
msgbox("认证成功")
msgbox("(你可以在这里加一段成功后得到的信息)")
exit do
else
ctr=ctr+1 '如果密码出错就增加一次错误认证计数
msgbox("认证出错, 请检查密码")
end if
end if
loop
运行这个程序试试看, 当你出了3此错误以后, 就会停止再次询问密码, 关闭程序. telnet认证用来限制次数的程序与此大
同小异. 要注意的是嵌套的if语句, 清仔细读一下这个程序, 可能比较难懂, 也请你试着自己设计一下类似的程序.
其实, 要在do...loop加上验证的功能, 并不一定要用if, 我们可以直接利用do. 我来介绍一下while关键字, while可以放
在do或者是loop后面, 然后再接一个表达式, 当表达式的值为true的时候(表达式成立),才运行循环体.我们来看一下修改后的
程序"
dim a,ctr
ctr=0
const pass="pas123_"
do while ctr3
a=inputbox("请输入密码")
if a=pass then
msgbox("认证成功")
msgbox("(你可以在这里加一段成功后得到的信息)")
exit do
else
ctr=ctr+1 '如果密码出错就增加一次错误认证计数
msgbox("认证出错, 请检查密码")
end if
loop
这样实现的功能和上一个例子完全一样, 我们再来看看把while放在loop后面:
dim a,ctr
ctr=0
const pass="pas123_"
do
a=inputbox("请输入密码")
if a=pass then
msgbox("认证成功")
msgbox("(你可以在这里加一段成功后得到的信息)")
exit do
else
ctr=ctr+1 '如果密码出错就增加一次错误认证计数
msgbox("认证出错, 请检查密码")
end if
loop while ctr3
功能是一样的, 为什么要放在loop后面呢? 你把ctr的值改成3就知道了, while在do后面的程序会直接退出, 而在loop后面
还会允许一次认证, 到了loop才结束.和while相反的是un
黑客防线电子书下载地址
http://forum.darkst.com/thread-42835-1-1.html
希望这个能让电脑黑客代码教材你满意~
电脑黑客都是程序员出身吗?
现在很多大学计算机专业电脑黑客代码教材的教授人员他们自身的水平都有限电脑黑客代码教材,如果他们有能力就不会在这里讲课了。在大学学习的大多都是一些计算机的基础知识!你所学习的教材和教你课程的人一样,全都是基础知识居多!真正大神级别人物都很忙,才没工夫理这些连入门都算不上的小菜鸟。
黑客基本上都是对计算机技术非常感兴趣的,他们比一般的程序员更加关注,他们把代码当成自己的兴趣爱好而不是一种工作。而且他们写的代码不用想科班出身那样想着具有可维护性,也不在意可不可升级,也不需要团队开发,也不需要考虑交互页面用户好看度,只要自己能看的懂就行了。