按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
在凯文看来,像计算机早期那样,一两个人就能编写一个操作系统的时代早已过去,现在的操作系统逐渐发展成为了一个庞然大物,没有足够多的人和时间,根本无法胜任这一工作。哪一个黑客不想自己编写一个操作系统来用用?但这谈何容易?
不过,他根本不知道,林鸿和自己的以为朋友其实已经着手开始进行了。
林鸿并没有在这个话题上继续下去,他知道自己和LINUS现在所做的事情,正是很多人想做而又因为各种顾虑而迟迟没做或者说不敢做的项目。
管它呢,林鸿心想,反正他和LINUS进行那个项目也是为了兴趣和学习,不求LINUX的功能有多强,能够媲美MINIX就已经非常不错了。
趁着这个机会,林鸿把自己心中一直想问的一个问题提了出来:
【我想比较系统地学习一下网络入侵技术,我该从哪方面着手?】
对方是一个超级黑客,在他看来,入侵系统就跟进自己的家门一样简单。林鸿觉得咨询对方的意见,可以让自己走很多弯路。
他之所以想学入侵技术,并不是为了入侵,而是想了解如何更好的防守。
正所谓“知己知彼百战百胜”,林鸿觉得要想成为“白帽”黑客,首先必须去了解“黑帽”技术。
凯文似乎早就预料到林鸿会提出这个问题。
他很快就通过CQCQ传过来一个文本文档。
【你按照里面的IP地址顺序入侵,当你将这个列表里面的服务器都贡献之后,你就成为了入门了。这些服务器虽然相对来说比较安全,但是我还是建议你入侵的时候,做好足够的伪装,否则上了‘他们’的监控名单可就不是一件让人高兴的事了。】
林鸿打开一看,发现这个文档里面是一串长长的IP地址列表,大概数了一下,竟然多达三十来个!
林鸿并没有再继续追问,他立刻明白了对方的意思,凯文是让自己通过具体的实践和操作来学习入侵技术。
凯文再和林鸿聊了一会儿,最后,给林鸿稍微讲了一下他打电话的时候如何避免监听方式。
他最喜欢使用的方式就是通过中继线路转接拨号。
每当他想要给特殊的人打电话的时候,他就先接通一些对方无法监听到的线路,例如某些特殊的加密通道,然后在这些线路中不断跳来跳去,这样是经过多次跳转之后,对方已经无法追查他的来源和去向,最终以某条不知名的线路作为出口,和他想要进行通话的人接通。
聊完这个话题,凯文便下线了。
不知道一些事情的时候,林鸿还觉得没什么。可是听到凯文说起安全问题,他就觉得有种莫名的不安全感了,仿佛自己对外发送的每一句话,没一次对BBS的登录访问都有人在某处默默观察着自己。
有时候林鸿也会觉得凯文有些神经质,老是怀疑别人二十四小时都在监控着所有的渠道,包括电话和网络。
毕竟全美这么多人,FBI或者说CIA有那么多人手吗?
他们最多只能有针对性地对可疑目标进行监控。
不过话又说回来,林鸿可以确定,凯文并没有撒谎,SAS系统肯定是存在的,林鸿毕竟亲眼见到过。而FBI也确实在追捕凯文。
虽然林鸿觉得自己不会成为被监控的目标,但是这种事情谁说得准呢?
并且,林鸿编写CQCQ的初衷本来就是为了给朋友使用的,能够给他们提供一个不容易受到监控的沟通软件,也是一件比较有意义的事情。更何况,对网络上的信息进行监控的人,并不一定会是政府,还有可能是“黑帽”黑客。
还有一点,据凯文说,“他们”最新研制的那个AURORA网络监控系统,似乎要比SAS系统要先进得多,并不需要多少人手就可以对所有进出美国的数据流量进行监听和截留。
在凯文下线之后,林鸿想了很久,到底要不要真正将CQCQ软件设计为一款无法被监听的软件。
从目前的情况来看,如果要将这个特性加上,可能要牺牲一些软件的易用性和性能,并且开发的难度也要提升不少。
另外,对服务器的入侵总是要比对软件的入侵要难上许多,林鸿暂时又找不到比较好的托管服务器。他最终决定,还是做基于点对点的软件,消息不走服务器上中转,发送端消息加密之后,直接传递给接收端。
消息从计算机中发送出去,有点类似于走城门,计算机就是一座座城池,要想对外传送消息,就必须通过特定的端口如8000号(城门)。例如当在CQCQ里面输入一行字,软件就会按照IRC协议将这段文字进行打包,通过8000号城门(端口)发送出去,但是城池外面有时候会存在城墙(网关服务器)。
网络管理员就相当于是守门人,他有权限对控制“城门”的关闭和打开,也有权利对通过城门的包裹进行检查,如果他不想让你对外传递任何消息,则可以通过关掉8000号“城门”来封堵消息传递。他想监控消息,也可以将通过这个城门的包裹拆开来,看里面的内容。
有一种简单的方式可以避过“守门人”,那就是使用代理服务器,它相当于“中转城池”,数据包裹可以不走已经被封闭或监控的8000号出口,而可以选择8001号,出去之后,就进入“中转城池”,再由这个城池通向目标城池。
但是这种方式有时候并不可靠。有经验的守门人可不仅仅只监控一个城门,他会派遣哨兵将所有所有出口都监控,只要有包裹通过城门,他们都拆开,检查包裹里面的内容。
要想保证包裹足够安全,不被对方截留,最好是走一些并不常用的城门。当然,这还不够保险,因为守门人的能力很强大,所有城门都逃不出对方的监控。
更保险一点,就是给数据包裹加上一个加了锁的牢固箱子(加密),这样就算包裹被对方拦住了,他们也立刻看不到包裹里面的内容,必须要将箱子砸开。
能砸开箱子的守门人可不多,有些箱子足够坚硬,就算是花上十天十夜可能都砸不开,守门人没这么多时间花再上面。
但是这样还是不够保险,要是传递消息包裹的两方,任何一方被发现传递“违禁消息”,官府就可以顺藤摸瓜,顺着包裹的路线逆推而来,将另外一个抓获。
所以,不但要给包裹锁上箱子,还必须将消息传递的路线给彻底打乱,让对方无法有迹可循。
凯文给林鸿说起的那个逃避电话监听的方式启发了他的灵感。
只要将已经加锁的包裹在“秘密据点”进行多次中转,就可以成功混淆对方的视听,让他买最终摸不到包裹的流动轨迹,从而斩断线索。
对包裹加锁比较简单,这点林鸿之前就注意到过,但是建立“秘密据点”,林鸿却暂时还没有想清楚。
包裹要在这些“秘密据点”中进行传输,该如何确认对方的身份?否则,假设对方是守门人伪装的,那很有可能就会自投罗网了。
林鸿暂时还没有想清楚,他还缺乏相应的知识储备,他暂时将这个问题放在一边,继续开始阅读之前接收到的LINUX的V0。00版源代码。
第二百一十章 LINUX第一版
LINUS发过来的源码包,总共大概12000行代码,他编写这些代码总共花费了十天左右的时间,要是算上之前为此而准备的时间,则至少还要加上一个月。而林鸿将这些代码阅读完毕,却只花了大概三个小时就看完了。
林鸿发现,里面很多地方都借鉴了MINIX的写法,毕竟之前LINUS一直都在研究MINIX,从上面借鉴了不少特点和功能。例如,文件系统的结构。
MINIX的文件系统是模仿UNIX来写的,只有将文件系统实现了,才有可能对磁盘进行读写,可以说文件系统就是对磁盘的管理程序。虽然现在的LINUX并没有涉及到磁盘的读写功能,但是这个一部分LINUS还是将其实现了出来。
按照编程的惯例,通常第一个程序都是实现“HELLO;WOLRD”,LINUS也曾经在显示器上打印过这个语句,但是他发给林鸿的这个版本的功能,已经不仅仅是这么简单了。
他在这个版本中实现了两个重要的功能,即保护模式和多进程。
这两个特点是DOS系统所不具备的,被视为现代操作系统的重要功能。
“保护模式”是针对内存的一个说法。
INTEL公司在1978年发布了一个16位的CPU,即8086,这个CPU是INTEL历史上一个重要的里程碑,是奠定了INTEL在PC领域芯片的最重要的产品之一。
8086CPU总有20根地址线,可以最大寻址2的16次方,也就是1MB的地址空间。
这就是基于8086CPU的计算机所能支持的最大内存地址,这个模式被称为“实模式”。DOS系统就是工作在这个模式下。
实模式只支持最多1MB的内存,就林鸿想要升级自己正在使用的这台康柏计算机,在内存条上再加一条1MB的内存,DOS系统也识别不出来,根本无济于事,性能没有任何提升。
这是16位CPU的硬件结构所决定的,在当时1MB内存已经相当不错,所有应用程序都足够使用。
不过,在电子领域,存在着“摩尔定律”,集成电路不断迅速发展,很快8086CPU就无法满足要求了。
于是INTEL便在1985年推出了8086的升级版本80386。
这一次,寄存器的位数被翻了一倍,从16位升级到32位。
80386CPU增加了不少优点,不但寻址空间大大,而且还引入了多任务处理和保护模式的概念。
保护模式下,对内存的管理已经不再是以前的分段式结构,而是变成了分页机制,这种机制有非常大的优点,可以让内存管理性能得到极大的提升。
但是,在计算机领域,有一种“向前兼容”的规则,也就是说,80386必须兼容8086CPU的机制,以前在那个上面能运行的程序,在升级后的CPU上也能运行。
所以在默认情况下,这个“保护模式”是没有被打开来的,使用的还是“实模式”。
而要想打开“保护模式”,则需要用代码对第20号地址线进行操作,将其“唤醒”,它就是进入保护模式的守门人,必须通过它的同意才行。
说起来简单,但是整个过程具体实现起来却是相当复杂的。
这也是LINUS为什么花了这么长时间才最终将V0。00版编写完毕的原因。
他们想让LINUX跟上时代的发展,让LINUX未来的功能能够和现在的这些最新操作系统相媲美,进入保护模式是必不可少的,因为只有进入了保护模式才能最大程度地发挥出80386CPU的最大性能。
林鸿之前看《操作系统设计与实现》的时候,在这部分看得非常迷糊,专门还去查了不少资料,可是心中还是对这种机制有些想不通,为什么要这样设计。
但是,今天他看到了LINUS的实现代码之后,顿时有一种突然顿悟的感觉。
与平时编程的时候,不用去关心硬件底层结构不同,操作系统的底层代码却是和硬件紧密相连。最初的那BOOT和LOADER程序,都必须用汇编才能胜任,精确到CPU的某一个寄存器,也精确到磁盘的某一个扇区。
要想理解这些代码,必须对CPU和磁盘的硬件结构了解得非常清楚。例如CPU有多少引脚,里面有多少个寄存器,每一个寄存器的作用又是什么。
好在这些技术参数,INTEL有着非常详细地技术文档。这么小小的一块芯片,涉及到的技术资料却是几本厚厚的大部头书籍。
林鸿不得不感叹,这小小的芯片之中,承载的却是人类文明中最先进的知识结晶,将人类的智慧发挥到了极处,每一个引脚,没一个寄存器都是经过了千百次不断试验之后才最终定下来的。
林鸿按照LINUS在里面写的说明文档,将开发环境配置好,然后在MINIX平台下对这份代码进行了编译。
修复了几个细小的BUG之后,他最终将LINUX的镜像文件给编译出来了。
他只有一台计算机,所以最终只好将这个LINUX安装在了本机上。
当然,他使用的又是多系统安装方式,其他两个系统并没有受到影响。
重启之后,他选择了“LINUX V0。00”菜单,然后回车。
显示器上顿时闪现一连串的字符,不断向上刷动。
此刻,林鸿已经对计算机启动的详细过程有了非常深刻的认识,不再像以前那样,根本不知道计算机到底在做什么。
当电源开关被按下的时候,机器就开始通电,主板的控制芯片于是向CPU发送一个重置信号,将CPU恢复到最初始的状态,当芯片组检测到CPU上的供电稳定的时候,CPU就会开始工作。
它要做的第一件事就是从内存中的0XFFFF0地址处读取指令运行。
而这个地址中,通常会有一个跳转指令,跳转到BIOS的自检系统处,这个时候便开始了自检过程。BIOS是主板厂商早就刷在了固件里面的一个系统,目的就是对硬件进行管理。
自检的目的,是为了检测计算机各部分硬件是否正常,如果缺少或者有损坏的硬件,则启动就会立刻被挂起。
只有所有硬件检测都被通过之后,才会最终跳转到第一个扇区,读取MBR,开始执行安装在磁盘上的操作系统。
而LINUS完成的功能,就是在读取MBR之后,如何将操作系统加载到内存里面进行执行。
这个过程很快,字符不断向上刷新,硬件检测很快结束,接着显示屏一闪,顿时最顶部便出现了“AAAAAABBBB……”这样的字符。
看着显示器上不断出现的AB字符,林鸿知道,这一次启动过程已经完毕,他已经看到了LINUS所编写的功能。
要是其他不懂技术的人看到这种情况,必定会对此嗤笑一声,道:“这也叫操作系统?开玩笑吧!”
实际上,当初LINUS将这个版本编写出来之后,就兴奋地叫来他的妹妹萨拉来观看,这毕竟是他花费了极大的心思而编写出来的作品,努力了这么久,终于成功了,自然想和其他人分享一下自己的喜悦。
可是抱着泰迪熊的萨拉盯着显示屏看了大约五秒之后,说了一声“很好”,便面无表情地回到房间内和她的闺蜜煲电话粥去了。
LINUS为此愣了半天,良久才反应过来,自己和不懂技术的人是完全没有共同语言的。他竟然奢望自己的妹妹能够看懂自己所做的努力和成果,这简直太天真了。
在对方眼中,这就是简单的显示了几个字符,完全没有什么特别之处,也完全不知道做这么一个功能到底有什么意义。
不过,林鸿对此却是知道,显示屏上不断交替显示的AB字符,是由两个进程打印在屏幕上的,也就是说,LINUS在这个V0。00版中,不但实现了保护模式,也将多任务管理的原型给做出来了。
“厉害!”
“很棒!”
“NICE JOB!”
这些都是林鸿对LINUS的评价。
这部分内容,看起来虽然都能够理解,但是林鸿知道,如果让自己编写出来,要花费的时间和精力肯定比对方要多。并不是因为自己的技术不到家,而是自己在这方面的理解还不够深刻,或者说,这方面的资料太少了,仅仅凭借一本《操作系统设计与实现》根本写不出来,还涉及到其他很多知识的积累。
平时林鸿看待计算机,是从宏观的角度观察和使用的,可是当他看到这个最原始的操作系统的时候,顿时有了一种在显微镜下观察的感觉。
所有的黑匣子都没有了,他心中清楚地知道计算机下一步将要做什么,一切细节都一览无余。
此刻已经是凌晨两点多,林鸿本来很想和LINUS沟通一下,可是对方此刻并不在线。
于是,他心情激动之下,便开始正式开始投入到LINUX的开发之中。
他想要做的,就是将之前LINUS一直到MINIX中的BASH,也就是外壳程序,移植到LINUX中。
外壳程序非常重要,它可以说是所有程序之母,只有将它移植过来,才能够顺利地执行其他应用程序。
BASH本身就是一个开源的程序,可以从互联网上免费下载,但是林鸿手中有它的源代码,还是上次LINUS邮寄给他的。
编写这个,必须得实现一些操作系统的系统调用命令,例如显示目录“LS”命令,进入目录“CD”命令,这些都是最基本的。
系统调用有很多,林鸿暂时打算先将MINIX里面所支持的完成即可。其他的,以后再说。
为了避免LINUS进行重复开发,他首先给对方发了一封EMAIL,然后便埋头开发。
移植的过程比想象当中的要难一点,不过好在LINUX使用的文件系统和MINIX是一样的,在太阳在东方升起的时候,他已经将BASH程序移植得差不多了。
第二百一十一章 同意
林鸿首先移植的是BASH的框架,将整个框架移植完毕之后,以后的速度就可以极大加快,可以说,地基打好了,上面的建设速度也就快了。
框架移植好之后,林鸿立刻将显示命令LS的简单版本写出来了,可以显示出根目录下的目录结构,不过比较复杂的显示功能,例如加上参数可以排序或者按不同的列表方式显示等,暂时还没实现。
“将BASH移植过来之后,然后再将GCC移植过来,这样,就可以直接在LINUX下面编译系统,而不用专门跑到MINIX平台下了。”
林鸿满意地点点头,这个晚上的收获不小,他直到现在才对操作系统有一种心有成竹的感觉,以前一直觉得操作系统很神秘,因为无法探究里面的运行机制,现在彻底了解之后,发现也就那么回事,只要花费足够的时间和精力,总是会有完全搞懂的一天。
看看时间,已经六点多,林鸿退出系统,关闭计算机,来到了窗户旁边,打开窗户深深地呼吸了几口新鲜空气。
算算时间,自己来美国已经两个多月了,但是这两个月来,他觉得自己真的成长了不少。
现在的林鸿,已经不再是当初刚刚踏出国门时候的愣小子了,无论见识还是知识,都有了很大程度的增长。
“看来,决定来美国当交换生,的确是个明智的决定。”
林鸿想了下,拿起电话决定给中国那边的亲人分别打个电话。此刻中国那边正是晚上,基本都在家里。他首先打给是他的母亲冯婉。
虽然平时都有通话,但是冯婉还是对林鸿打来的电话感到非常高兴,她似乎总是有着问不完的问题,无论是生活上、还是学习上,她都想详细了解。
虽然现在他们距离这么遥远,但是他们母子两人的关系却更为熟悉和亲密了。已经很像是普通家庭里面的母子聊天对话。
聊了一会儿,林鸿思考再三,还是决定将自己将专利卖了的事情告