维夫成立了一个名为Mirabils(拉丁文,意为“神奇”的意思)公司,不过这已经是在飞飞通讯软件在网络上大行其道之后的事情了。再加上ICQ现在的功能还很简单,并没有飞飞这么完善,很多细节方面也考虑得不周到,所以大家都将其当成一个蹩脚的模仿者而已,大部分的市场份额都被“飞飞”占领。
飞飞软件的源代码许毅早已经传给了周思筠,后续的开发许毅已经不再负责,只是在那些新招来的技术员们遇到实在解决不了的问题时才给予他们帮助。交出源代码的时候许毅也犹豫过,源代码一交出去,现在他甚至还没有出面签订任何股权分配协议,要是周思筠要想耍什么小动作,那自己拿她一点办法都没有。虽然说周思筠跟许毅说过,就算是获得风险资金之后,他那40%的股权仍然不变,但这也只是限于口头协议而已,没有任何合法的协议或者公证。不过,最终,许毅还是选择相信周思筠。
经过这段时间的接触,许毅知道周思筠的确是一个商业天才,其商业嗅觉异常敏感,见识非凡,再加上她那显赫的家世,许毅有理由相信她不是那样的人,所以许毅对她选择了完全信任。
许毅最近正在集中全部心思研究加密解密,在美国朋友米歇尔的帮助下,许毅开始了密码学的系统学习,各种密码协议,专业的密码技术,高深的密码算法……经过学习,许毅才发现自己的知识是多么的贫瘠,在多计算机的很多领域,自己就像婴儿一样无知。
密码学的各种算法都涉及到很高深的数学知识,所以在学习算法的同时,许毅还要继续学习数学,好在数学也是他喜欢的一个分支,颇有些乐此不疲。
计算机领域流传着这样一句话:玩计算机就是玩数学。所以,要想在计算机领域取得成就,数学是不可缺少的。
从算法的海洋中抽出身来,许毅习惯性地登上了“飞飞”,聊天是一种很好的放松方式,没当许毅觉得疲劳的时候,他上去瞎聊一会儿。不过聊天对象大多限于自己认识的几个人而已,其中还是和颜玉聊天较多。
上线后,许毅收到一条来自徒弟周松的信息,这条信息并没有内容,只是一个网址,这个网址是黑客学院的,只是指向一个名为“Level1。htm”的页面。
Level是“水平”,“关卡”的意思,许毅顺手点开了这个链接,笑了起来。只见网页中显示着“破解过关游戏――第一关,请自行从网页中找到密码,然后填入到下面的输入框中,密码正确则进入下一关……”
原来是一个解密类的过关游戏。看来是出自周松的手笔,网页做得并不怎么样,没有什么美化。把技术知识溶于游戏中,这确实是提高初学者学习兴趣的一个很好的方法,以前许毅就曾经迷恋过一阵这样的游戏,加密解密游戏,黑客入侵游戏等等。
虽然眼前的这个网页不是一般的丑陋,但许毅还是来了兴致,立刻着手动手破解起来,他想看看,周松出的这些题目难度怎么样。
========
广告:《抢钱警探》
正文 第68章
这类游戏一般都是从简单到复杂的,类似于单机游戏那种关卡闯荡,不过这里要用到的是计算机知识,其中涉及到的内容有很多,例如网络知识,破解知识,黑客知识等等。
第一关非常简单,许毅想都没想就点击右键,然后查看网页的源代码。果然,里面有这么一句“哈哈,被你发现了。不过下次可就没那么容易了。这一关的过关密码是BD。”许毅看到原来这几个字设定的字体颜色是和背景色一样。他用鼠标将网页中的内容反选,果然可以看到这几个字。
这一关的确非常简单,只要拿着鼠标随便选择就能碰巧看到了。看来是出题者为了调动闯关者的积极性而设的,当然,只是针对那些刚刚开始学习相关知识的菜鸟们。
顺利进入第二关。网页的内容和前面差不多,肯定不会像第一关那么简单了,许毅还是下意识地想查看源代码,毕竟从网页直接看不出什么,要想突破只能从源代码入手。点击右键之后,弹出一个对话框:“^_^加油,继续努力!”。
原来是将右键给屏蔽掉了。这种方法在早期有很多人使用,很多比较小气的站长不愿意来访者将网页中的内容复制保存下来,于是便用这种方法来为难那些不懂技术的来访者,通常情况下,大部分人都是抱着比较随意的态度,你不让复制就不复制了,不会非得把上面的内容抓下来不可。
这个关卡当然难不倒许毅,只能拦拦菜鸟而已,许毅有N种方法可以破解。这个效果主要是用一种名为JavaScript的动态脚本实现的(注意:此语言和传说中的Java语言没有任何亲戚关系,号称被误解最为严重的编程语言)。当访问者点击鼠标右键的时候,它就会第一时间得知(捕获),然后按照程序员编写的预定程序功能来响应这个“事件”,例如点击右键什么反应都没有、弹出对话框等功能。
那么,怎样才能破解呢?对了,就是让这个脚本语言失效,让它不起作用。
网页浏览器(如IE)内部集成了一个脚本语言的解释功能,只要将这个功能给禁用掉,那网页中的脚本程序就成了摆设,什么效果都不会有。而这个功能是很容易就可以禁用掉的,只要在简单的勾掉其中的一个功能选项而已。
不过对许毅来说,这个方法还是相对比较麻烦,等看完源代码之后又要把设置还原。因为如果禁用掉这个功能,以后网页中的一些动态效果都没有了。许毅用的方法是直接在地址栏中的网址前面敲入一个命令“view-sourse:”,这个命令也是浏览器本身认识的命令,意思就是“查看源文件”,执行“view…sourse:http://***”之后,里面的源代码就显示出来了。
还有一个比较简单的方法,那就是直接用浏览器工具栏上的查看“源文件”功能。除此之外,还可以用其他软件打开,例如windows系统中的记事本,写字板之类的,直接把网址填入要打开对话框的地址内,都可以。如果不怕麻烦,那就直接用下载软件将这个页面下载下来再看。
许毅很顺利地看到了第二关网页的源代码,大致浏览了一下,发现了一段比较可疑的编码,许毅推断过关密码应该隐藏在其中。
这段编码内容为:“%B9%A7%CF%B2%B9%FD%B9%D8%A3%A1%B1%BE%B9%D8%C3%DC%C2%EB%CA%C7%45%32”
第二关还有点难度,许毅呵呵一笑。看到这个段奇怪的编码他就知道怎么破解了。看这它们的形式,很显然是URL编码,也就是网址转换的时候的编码。在上网的时候,经常可以看到这样的编码,是浏览器用来打包表格输入的一种格式,这种情形在用搜索引擎搜东西的时候最常见,搜索的内容通常都会转换成这种形式呈现在浏览器的地址栏中(至于为什么要这样以后再解释)。
URL编码其实就是字符ASCII码(美国国家信息交换标准代码)的十六进制,不过稍微有些变动,需要在前面加上“%”。比如反斜杠“”,它的ASCII码是92,而92的十六进制是5C,所以它的URL编码就是%5C。汉字的编码也是同样的原理,如“胡”的ASCII码是17670,十六进制码是BAFA,则它的URL编码是“%BA%FA”,由于一个汉字占两个字节,所以中间多了个“%”。
平时通常用不上URL编码,因为IE会自动将输入到地址栏的非数字字母转换为URL编码,只有程序员在编写某些相关功能的程序的时候才需要用到其中的原理,当然,身为一个黑客,这个编码是需要掌握的,有些入侵行为就需要用到这个知识(如:SQL注入)。
这点小知识许毅早就掌握得滚瓜烂熟,他干脆调出编译器,当场编写了一个URL编码转换器,反正知道原理,编写起来不用花多少时间,而且,以后也用得上。
将那段编码复制到自己刚刚编写的小程序中,转换成了几个汉字:“恭喜过关!本关密码是E2”。
许毅微笑起来,虽然题目没什么难度,但这样过关的感觉还是不错,第二关的难度明显比第一关要大上很多,估计会难倒一片菜鸟。第三关的难度怎样呢?许毅还真有点期待了,希望能够让自己头痛一下,最近正在研究密码学呢。
填入第二关的密码,顺利进入第三关。步骤有些大同小异,还是得查看源代码,不过这次的源代码看上去比较混乱,不像前两关那样,一眼看去,就能发现密码大概在某个部位。第三关的页面里面有很多用来干扰的代码,主要是一些脚本代码。这就要求闯关者对网页编程比较熟悉,能够读懂这些代码,至少应该知道那些代码应该会完成哪些功能,哪些代码有用,而哪些代码只是起干扰作用。
许毅很快找到了目标,在验证的时候出现了一段密文,许毅一看,知道用的是JScript。Encode加密,只要用相应的解密功能就能搞定,这对别人来说也许是个难题,但许毅自然能够轻易搞定,他很顺利地进入第四关,他想看看到底有多少关,并且想早一点看到最后一关。
---
黑客网站一般都有类似的游戏,下章我放个地址出来,大家去试试。
正文 第69章
进入第四关,许毅找了老半天,实在是没找到哪个地方是突破口,源代码是检查了一遍又一遍,正怀疑线索可能并不在源代码中的时候,他终于发现了奇怪之处。
在源代码中有这么一句:
《SCRIPTSRC=”JavaScript”》《/SCRIPT》
疑点就在这里了,这段代码看上去好像没什么问题,可是却没什么具体的作用。通常情况下,脚本代码都是夹在《SCRIPT》和《/SCRIPT》之间的,但这个其中却没有任何代码。这还不是主要的,关键在于,如果网页脚本语言要使用JavaScript语言的话,正确格式应该为:
《SCRIPTLanguage=”JavaScript”》《/SCRIPT》
或者,将脚本独立出来,直接放到另外一个文件中,然后进行引用。则语法为:
《SCRIPTSRC=”文件名”》《/SCRIPT》
也就是说,上面那个是引用了一个文件了,而文件名正好是JavaScript,出题者这么出,正好是利用它们之间的相似之处,如果对这两个概念不清楚,还真不能发现其中的疑点,当然,这么一句无关紧要的代码隐藏在大量代码中,如果不细心也是发现不了的。
许毅按照上面的地址,将那个文件打开,果然里面有东西,准确的说里面是一句密文,许毅知道自己找对了。
就这么一句密文,不知道加密算法也是没有任何办法的。加密算法何其多,任许毅如何厉害,单凭一句密文也是不能破解的,这个不比软件破解,这只是一个过关密码,也不能根据上下文来推断,各种情况都是有可能的。
既然这是闯关游戏,那肯定还有其他什么线索,这点是可以肯定的。于是,许毅又回到网页源代码上,仔细阅读起来,在其中,发现了一小段和加密有关的代码,不过这段代码实际上是没有起作用的,并没有得到执行,唯一的作用那就是干扰了。其中用的加密方式是base64加密,许毅感觉到自己又一次抓住了过关的钥匙。
许毅再次查看了一下密文的特点,更加肯定这正是用base64加密算法加密的密文了。
Base64是互联网上用的比较多的一种算法,它是为了解决邮件传输中的加密和二进制数据(声音、图形图像等)传输问题而产生的。也就是说,这个算法和邮件联系紧密,几乎所有的电子邮件软件都把它作为默认的二进制编码,它已经成了现今电子邮件编码的代名词。
它的主要思想是将输入的字符串或数据编码成只含有{‘A‘…‘Z‘,‘a‘…‘z‘,‘0‘…‘9‘,‘+‘,‘/‘}这64个可打印字符的串,故称为“Base64”(基于64个字符)。它构造简单,速度快,但安全性就一般了,因为这是一种可逆的加密算法,也就是说只要知道密文,就可以将明文很轻易地恢复过来。
在PHP编程中,里面就内置了这样的加密函数,所以许毅很轻易地就将密文破解了,得到了进入第五关的密码。
来到第五关的页面,这次倒干脆,直接给出了一个16位的密文,另外还有一段提示,说密码是6位纯数字。16位的密文,许毅立刻就想到了MD5加密,再联系题目给出的提示,许毅大致猜测自己的推断应该是不错了,不然也不会给出这么一个提示。
看到这个,许毅有些无奈了,他估计这关卡也许就到顶了。因为MD5加密算法是不可逆的,许毅要想破解,就只能是暴力破解了,编写一个软件对6位数字进行