历史上有名的病毒

html-css012

历史上有名的病毒,第1张

病毒历史

电脑病毒的起源(节录自牛顿杂志)

电脑病毒的历史:磁蕊大战

电脑病毒并非是最近才出现的新产物, 事实上, 早在一九四九年, 距离第一部商用电脑的出现仍有好几年时, 电脑的先驱者约翰.范纽曼(John Von Neumann)在他所提出的一篇论文 [复杂自动装置的理论及组织的进行] , 即已把病毒程式的蓝图勾勒出来, 当时, 绝大部份的电脑专家都无法想像这种会自我繁植的程式是可能的, 可是少数几个科学家默默的研究范纽曼的所提出的概念, 直到十年之后, 在美国电话电报公司(AT&T) 的贝尔(Bell)实验室中, 这些概念在一种很奇怪的电子游戏中成形了, 这种电子游戏叫做 [磁蕊大战] (core war)。

磁蕊大战是当时贝尔实验室中三个年轻程式人员在工馀想出来的, 他们是道格拉斯麦耀莱(H.Douglas McIlroy), 维特.维索斯基(Victor Vysottsky)以及罗伯.莫里斯(Robert T. Morris), 当时三人年纪都只有二十多岁.

附注: Robert T. Morris 就是后来写了一个 Worm, 把 Internet 搞的天翻地覆的那个 Robert T. Morris Jr. 的爸爸, 当时大 Morris 刚好是负责 Arpanet网路安全 .

电脑病毒的老祖宗:

磁蕊大战的玩法如下:两方各写一套程式, 输入同一部电脑中, 这两套程式在电脑?记忆系统内互相追杀,有时它们会放下一些关卡,有时会停下来修理(重新写)被对方破坏的几行指令 当它被困时,也可以把自己复制一次,逃离险境,因为它们都在电脑的记忆磁蕊中游走,因此得到了磁蕊大战之名.

这个游戏的特点,在於双方的程式进入电脑之后,玩游戏的人只能看著萤幕上显示的战况,而不能做任何更改,一直到某一方的程式被另一方的程式完全 [吃掉] 为止.

磁蕊大战是个笼统的名称,事实上还可细分成好几种,麦耀莱所写的程式叫 [达尔文]这包含了 [物竞天择,适者生存] 的意思 . 它的游戏规则跟以上所描述的最接近,双方以组合语言(Assembly Language)各写一套程式,叫有机体(organism),这两个有机体在电脑里争斗不休,直到一方把另一方杀掉而取代之,便算分出胜负. 在比赛时 Morris 经常匠心独具,击败对手.

另外有个叫爬行者程式(Creeper)的,每一次把它读出时,它便自己复制一个副本.此外,它也会从一部电脑[爬]到另一部有连线的电脑.很快地电脑中原有资料便被这些爬行者挤掉了.爬行者的微一生存目地是繁殖.为了对付[爬行者],有人便写出了[收割者](Reaper).它的唯一生存目的便是找到爬行者,把它们毁灭掉.当所有爬行者都被收割掉之后,收割者便执行程式中最后一项指令:毁灭自己,从电脑中消失.[侏儒](Dwarf)并没有达尔文等程式聪明.却可是个极端危险人物.它在记忆系统中迈进,每到第五个[地址](address)便把那里所储存的东西变为零,这会使的原本的程式停摆.

最奇特的就是一个叫[印普](Imp)的战争程式了,它只有一行指令,那就是

MOV 01

MOV是[MOVE]的代表,即移动的意思 .它把身处的地址中所载的[0]写(移)到下一个地址中,当印普展开行动之后,电脑中原有的每一行指令都被改为[MOV 01].换句话说,萤光幕上留下一大堆[MOV 01].[双子星](Germini)也是个有趣的家伙.它的作用只有一个:把自己复制,送到下一百个地址后,便抛弃掉[正本].从双子星衍生出一系列的程式.[牺牲者](Juggeraut)把自己复制后送到下十个地址之后而[大雪人](Bigfoot)则把正本和复制品之间的地址定为某一个大质数.想抓到大雪人可是非常困难的.此外,还有全录(Xerox)柏路阿图研究中心的约翰.索殊(John F.Shoch)所写的[蠕虫](Worm),它的目的是要控制侵入的电脑.

电脑病毒的出现

在那些日子里,电脑都没有连线,而是互相独立的,因此并不会出现小莫礼士所引起的病毒瘟疫.如果有某部电脑受到[感染],失去控制,工作人员只需把它关掉便可.但是当电脑连线逐渐成为社会结构的一部份之后,一个或自我复制的病毒程式便很可能带来?穷的祸害了.因此长久一来,懂的玩[磁蕊大战]游戏的电脑工作者都严守一项不成文的规定: 不对普罗大众公开这些战争程式的内容.

一九八三年,这项规定被打破了.科恩.汤普逊(Ken Thompson)是当年一项杰出电脑讲得奖人.在颁奖典礼上,他作了一个演讲,不但公开地证实了电脑病毒的存在,而且还告诉所有听众怎样去写自己的病毒程式.他的同行全都吓坏了,然而这个秘密已经流传出去了.一九八四年,情况愈复杂了.这一年,[科学美国人]月刊(Scientific American)的专栏作家杜特尼(A. K. Dewdney)在五月号写了第一篇讨论[磁蕊大战]的文章,并且只要寄上两块美金,任何读者都可以收到它所写得有关写程式的纲领,在自己家中的电脑中开辟战场.

[病毒]一词的正式出现

在一九八五年三月份的[科学美国人]里,杜特尼再次讨论[磁蕊大战]-----和病毒.在文章的开头他便说:[当去年五月有关[磁蕊大战]的文章印出来时,我并没有想过我所谈论的是那么严重的题目]文中并第一次提到[病毒]这个名称.他提到说,义大利的罗勃吐.些鲁帝(Roberto Cerruti)和马高.么鲁顾帝(Marco Morocutti)发明了一种破坏软体的方法.他们想用病毒,而不是蠕虫,来使得苹果二号电脑受感染.

些鲁弟写了一封信给杜特尼,信内说:[马高想写一个像[病毒]一样的程式,可以从一部苹果电脑传染到另一部苹果电脑,使其受到感染.可是我们没法这样做,直到我想到,这病毒要先使磁碟受到感染,而电脑只是媒介.这样,病毒就可以从一片磁碟传染到另一片磁碟了.]

病毒历史事例:

1975 年,美国科普作家约翰·布鲁勒尔 (John Brunner) 写了一本名为《震荡波骑士》(Shock Wave Rider) 的书,该书第一次描写了在信息社会中,计 算机作为正义和邪恶双方斗争的工具的故事,成为当年最佳畅销书之一。

1977 年夏天,托马斯·捷·瑞安 (Thomas.J.Ryan) 的科幻小说《P-1的春 天》(The Adolescence of P-1) 成为美国的畅销书,作者在这本书中描写了一 种可以在计算机中互相传染的病毒,病毒最后控制了 7,000 台计算机,造成了 一场灾难。

1983 年 11 月 3 日,弗雷德·科恩 (Fred Cohen) 博士研制出一种在运行过程中可以复制自身的破坏性程序,伦·艾德勒曼 (Len Adleman) 将它命名为计算机病毒 (computer viruses),并在每周一次的计算机安全讨论会上正式提出,8 小时后专家们在 VAX11/750 计算机系统上运行,第一个病毒实验成功,一周后又获准进行 5个实验的演示,从而在实验上验证了计算机病毒的存在。

1986 年初,在巴基斯坦的拉合尔 (Lahore),巴锡特 (Basit) 和阿姆杰德(Amjad) 两兄弟经营着一家 IBM-PC 机及其兼容机的小商店。他们编写了Pakistan 病毒,即 Brain。在一年内流传到了世界各地。

1988 年 3 月 2 日,一种苹果机的病毒发作,这天受感染的苹果机停止工作,只显示“向所有苹果电脑的使用者宣布和平的信息”。以庆祝苹果机生日。

1988 年 11 月 2 日,美国六千多台计算机被病毒感染,造成 Internet 不能正常运行。这是一次非常典型的计算机病毒入侵计算机网络的事件,迫使美国政府立即作出反应,国防部成立了计算机应急行动小组。这次事件中遭受攻击的包括 5 个计算机中心和 12 个地区结点,连接着政府、大学、研究所和拥有政府合同的50,000 台计算机。这次病毒事件,计算机系统直接经济损失达 9600 万美元。这个病毒程序设计者是罗伯特·莫里斯 (Robert T.Morris),当年 23 岁,是在康乃尔 (Cornell) 大学攻读学位的研究生。

罗伯特·莫里斯设计的病毒程序利用了系统存在的弱点。由于罗伯特·莫里斯成了入侵 ARPANET 网的最大的电子入侵者,而获准参加康乃尔大学的毕业设计,并获得哈佛大学 Aiken 中心超级用户的特权。他也因此被判3 年缓刑,罚款1 万美元,他还被命令进行 400 小时的新区服务。

注:在此文中,把蠕虫、我们常提的病毒定为病毒不同种类。

1988 年底,在我国的国家统计部门发现小球病毒。

--------------------------------------------------------------------------------

在病毒的发展史上,病毒的出现是有规律的,一般情况下一种新的病毒技术出现后,病毒迅速发展,接着反病毒技术的发展会抑制其流传。操作系统进行升级时,病毒也会调整为新的方式,产生新的病毒技术。它可划分为:

DOS引导阶段

1987年,计算机病毒主要是引导型病毒,具有代表性的是“小球”和“石头”病毒。

当时得计算机硬件较少,功能简单,一般需要通过软盘启动后使用。引导型病毒利用软盘得启动原理工作,它们修改系统启动扇区,在计算机启动时首先取得控制权,减少系统内存,修改磁盘读写中断,影响系统工作效率,在系统存取磁盘时进行传播。1989年,引导型病毒发展为可以感染硬盘,典型的代表有”石头2”。

DOS可执行阶段

1989年,可执行文件型病毒出现,它们利用DOS系统加载执行文件的机制工作,代表为”耶路撒冷”,”星期天”病毒,病毒代码在系统执行文件时取得控制权,修改DOS中断,在系统调用时进行传染,并将自己附加在可执行文件中,使文件长度增加。1990年,发展为复合型病毒,可感染COM和EXE文件。

伴随,批次型阶段

1992年,伴随型病毒出现,它们利用DOS加载文件的优先顺序进行工作。具有代表性的是”金蝉”病毒,它感染EXE文件时生成一个和EXE同名的扩展名为COM伴随体它感染COM文件时,改为原来的COM文件为同名的EXE文件,在产生一个原名的伴随体,文件扩展名为COM。这样,在DOS加载文件时,病毒就取得控制权。这类病毒的特点是不改变原来的文件内容,日期及属性,解除病毒时只要将其伴随体删除即可。在非DOS操作系统中,一些伴随型病毒利用操作系统的描述语言进行工作,具有典型代表的是”海盗旗”病毒,它在得到执行时,询问用户名称和口令,然后返回一个出错信息,将自身删除。批次型病毒是工作在DOS下的和”海盗旗”病毒类似的一类病毒。

幽灵,多形阶段

1994年,随着汇编语言的发展,实现同一功能可以用不同的方式进行完成,这些方式的组合使一段看似随机的代码产生相同的运算结果。幽灵病毒就是利用这个特点,每感染一次就产生不同的代码。例如”一半”病毒就是产生一段有上亿种可能的解码运算程序,病毒体被隐藏在解码前的数据中,查解这类病毒就必须能对这段数据进行解码,加大了查毒的难度。多形型病毒是一种综合性病毒,它既能感染引导区又能感染程序区,多数具有解码算法,一种病毒往往要两段以上的子程序方能解除。

生成器,变体机阶段

1995年,在汇编语言中,一些数据的运算放在不同的通用寄存器中,可运算出同样的结果,随机的插入一些空操作和无关指令,也不影响运算的结果,这样,一段解码算法就可以由生成器生成。当生成的是病毒时,这种复杂的称之为病毒生成器和变体机就产生了。具有典型代表的是”病毒制造机”VCL,它可以在瞬间制造出成千上万种不同的病毒,查解时就不能使用传统的特征识别法,需要在宏观上分析指令,解码后查解病毒。变体机就是增加解码复杂程度的指令生成机制。

网络,蠕虫阶段 第一篇 第二篇

1995年,随着网络的普及,病毒开始利用网络进行传播,它们只是以上几代病毒的改进。在非DOS操作系统中,”蠕虫”是典型的代表,它不占用除内存以外的任何资源,不修改磁盘文件,利用网络功能搜索网络地址,将自身向下一地址进行传播,有时也在网络服务器和启动文件中存在。

视窗阶段

1996年,随着Windows和Windows95的日益普及,利用Windows进行工作的病毒开始发展,它们修改(NE,PE)文件,典型的代表是DS。3873,这类病毒的急智更为复杂,它们利用保护模式和API调用接口工作,解除方法也比较复杂。

宏病毒阶段

1996年,随着Windows Word功能的增强,使用Word宏语言也可以编制病毒,这种病毒使用类Basic语言,编写容易,感染Word文档文件。在Excel和AmiPro出现的相同工作机制的病毒也归为此类。由于Word文档格式没有公开,这类病毒查解比较困难。

互连网阶段

1997年,随着因特网的发展,各种病毒也开始利用因特网进行传播,一些携带病毒的数据包和邮件越来越多,如果不小心打开了这些邮件,机器就有可能中毒。

爪哇,邮件炸弹阶段

1997年,随着万维网上Java的普及,利用Java语言进行传播和资料获取的病毒开始出现,典型的代表是JavaSnake病毒。还有一些利用邮件服务器进行传播和破坏的病毒,例如Mail-Bomb病毒,它就严重影响因特网的效率。

JS图形、图标库推荐:

1. JS Charts

JS Charts 是个基于JavaScript的图表生成器,不需要任何编码。JS Charts 非常容易使用,只要用户使用客户端脚本(比如,在 web 浏览器中执行)。它不需要多余的插件和服务器模块,只需要下载 JS Charts 的脚本,准备好 XML,JSON 或者 JavaScript 数组数据。

2. Canvasjs

CanvasJS 是个易用的 HTML5 &JavaScript 图表库,基于 Canvas 元素。Graphs 可以通过设备渲染,包括 iPhone,iPad,Android,Windows Phone,Microsoft Surface,Desktops 等等。它允许用户创建适用于所有设备,不影响 web 应用程序的功能和可维护性的富仪表盘。CanvcasJS 有着非常漂亮的主题和超过传统的 Flash 和 SVG 图表 10x 倍以上的速度——生成轻量级,漂亮和响应式的仪表图。

3. Chart.js

Chart.js 是个简单的,面向对象的客户端图形库,用户可以用 6 中不同的方式来可视化数据。每个方式都是动画效果的,完全自定义,而且看起来非常好看,即使在 retina 显示。它使用 HTML5 canvas 元素,支持所有现代浏览器,并且支持 IE7/8。

4. Aristochart

Aristochart 是个高度自定义,灵活的折线 Canvas 图表库,允许用户集中精力在图表的审美方面,后台工作做得非常好。Aristochart 有个持续进步的社区,提供许多不断增长的主题给用户选择。

5. xCharts

xCharts 是一个使用 D3.js 来构建漂亮的可定制的数据驱动的 JavaScript图表库,他使用HTML,CSS,SVG实现图表,xCharts 被设计为一个动态的、流畅的、开放的和可定制化的库。

6. BonsaiJS

BonsaiJS 是个轻量级的 JavaScript图形库,提供直观的图形 API 和 SVG 渲染器。主要特性包括:架构分离的运行器和渲染器;iFrame,Worker 和 Node 运行上下文;形状,路径,Assets(音频,图像,字体,subMovies),Keyframe 和常规动画,等等。支持现代化浏览器: Safari, Chrome 和 Firefox。

7. Sigma.js

Sigma.js 是个免费开源的 JavaScript图形库,使用 HTML5 canvas 元素。它的设计是特别为了在 web 界面分享交互式网络 Map 和动态展示网络数据库。

8. Morris.js

Morris.js 是个轻量级的 JavaScript库,使用 jQuery 和 Rapha&enuml 来绘制时序图。 Morris.js 生命周期是从代码驱动 howmanyleft.co.uk 图表开始的。它支持的浏览器有: IE6+, Safari/Chrome/Firefox, iOS 3+ 和 Android 3+。它的公共 API 非常的小,只有一个函数: Morris.Line(选项),包括了许多配置选项。

9. Paper.js

Paper.js 是一个开源的向量图形脚本框架,基于 HTML5Canvas 开发。提供清晰的场景图、DOM和大量强大的功能用来创建各种向量图和贝塞尔曲线。

10. AmCharts

AmCharts 是个高级图表库,适用于所有数据的可视化。AmCharts 包括: Column, Bar, Line, Area, Step, Step without risers, Smoothed line, Candlestick, OHLC, Pie/Donut, Radar/ Polar, XY/Scatter/Bubble, Bullet, Funnel/Pyramid 等等。

11. Smoothie Charts

Smoothie Charts是个极小的图表库,专为实时流媒体数据设计的。Joe Walnes 想展示 WebSocket推动的实时的流数据。虽然很多图表库允许用户动态更新数据,但是没有一个是可以优化源源不断的流数据。

12. Dygraphs

Dygraphs 是个快速,灵活,开源的 JavaScript 图表库。它允许用户展示和解析密集的数据集。可以高亮需要强调的数据集。可以使用鼠标点击或者用鼠标拖动来缩放图表;可以修改数值或者点击条目来调整平均周期。

13. Grafico

Grafico 是 Grafico 是一个基于 Raphaël 和 Prototype.js 构建的 JavaScript 图表库,提供了各种图表类型。这些漂亮的图表,有利于传递他们的信息。

14. Highchart JS

Highcharts JS 是一个制作图表的纯 Javascript类库,主要特性如下:兼容性:兼容当今所有的浏览器,包括 iPhone、IE 和火狐等等;对个人用户完全免 费;纯JS,无BS;支持大部分的图表类型:直线图,曲线图、区域图、区域曲线图、柱状图、饼装图、散布图;跨语言:不管是 PHP、Asp.net 还是 Java 都可以使用。

15. Flotr

Flotr 是一个基于 Prototype 开发的 JavaScript绘图工具。支持图例,鼠标跟踪,图片区域选择,图片缩放,添加事件钩子(event hook),通过CSS设置样式等。

16. Flot

Flot 是受 Plotr 和 PlotKit 的 启发,Ole Laursen 基于 jquery 开发了一个图表绘制(WEB Chart)插件并命名为 flot。 flot 是个纯 JavaSript 库,专注于简单的使用方式,迷人的外观和交互式特性。支持的浏览器有: Internet Explorer 6+, Chrome, Firefox 2+, Safari 3+ and Opera 9.5+。

17. jFreeChart

JFreeChart 主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。JFreeChart 项目历史悠久,而且有大量的开发者在维护。

18. Plotkit

PlotKit 是一个纯 JavaScript 绘图工具包。它支持 HTML Canvas 和 Adobe SVG。有着很完整的文档,方便用户使用。

19. Planetary.js

Planetary.js 是个令人称奇的创建交互式 web 地球仪的 JavaScript库。它使用 D3 和 TopoJSON 来解析和渲染地理信息。Planetary.js 使用基于插件的架构,甚至默认自身就是个插件!这使得 Planetary.js 非常灵活,而且它是允许用户完全自定义,包括颜色,大小,rotation 等等。更重要的是,用户可以在任意位置使用自定义的颜色和大小来显示动画“pings”;它还支持鼠标拖动和缩放,100% 免费和开源。

20. Ember Charts

Ember Charts 是个图表库,使用 Ember.js 和 d3.js 框架构建的。它包括时间线,条形图,饼图和散点图,非常容易扩展和修改。这些图表组件都是开箱即用的,在图表交互和演示方面应用的很好。

21. Sparky

Sparky 是个免费的 JavaScript 波形图库,依赖于 Raphaël ,非常容易使用。支持多个图表类型(折线,条形,area),折线和区域图可以有多个颜色选择。

22. Envision.js

Envision.js 是个 JavaScript 库,用来简化,快速创建交互式的 HTML5 可视化图表。它包括两个图表类型:时序图和 Finance ,提供 API 给开发者,用户可以直接自定义创建图表。这个库氏基于 Flotr2 和 HTML5 Canvas 的。它与框架无关,依赖于几个小的 JavaScript 库。

23. Dc.js

dc.js 是个 JavaScript 图表库,有着原生的 crossfilter, 支持和允许高效展示大型多维数据集(基于 crossfilter 的示例);图表使用 dc.js 渲染,是使用原生数据驱动,所以能得到用户的实时反馈;dc.js 最大的亮点在于能提供一个简单而强大的 JavaScript 库,能进行数据可视化和分析;不仅支持桌面浏览器还支持移动端。

24. ElyCharts

Elycharts 是一个易于使用的,可定制的 JavaScript图表绘制组件。这个组件可用于绘制大部分常用的图表类型包括:line, column, are, bar, pie, sparklines and combinations。它支持多种交互式功能包括:鼠标跟踪、事件处理、利用各种动画高亮显示选择中的区域,Tooltip,HTML锚点等。可以动 态修改数据,并以漂亮的动画效果展示图表中的变化。图表利用SVG/VML技术生成,基于jQuery + Raphaël开发。

25. AwesomeChartJS

AwesomeChartJS Awesome Chart JS 是一个 JavaScript生成图表的类库,它利用了 HTML5 的 canvas 标签来创建统计图表。此类库就是为了减轻开发者的工作量,使用它只需书写几行代码便能生成漂亮的图表。

26. Arbor.js

Arbor.js 是一个利用 Web Works 和 jQuery创建的可视化图形库,它为图形组织和屏幕刷新处理提供了一个高效的、力导向的布局算法。

27. CanvasXpress

canvasXpress 是一个基于HTML5 canvas标签实现的 JavaScript图表类库,它能够支持线性图、柱形图、饼图和热点图等多种常见的图表类型。它所生成的图表交互性很强,鼠标放 上去时会动态显示值。除此之外,它也具有相当高的可定制性,可设置图表的文字、颜色和要显示/隐藏的元素等。当然更重要的一点是,虽然它使用了 HTML5,但是依然支持IE6浏览器。

28. JSXGraph

JSXGraph 是一个支持各种浏览器的交互式几何图库绘制。JSXGraph 使用 SVG 和 VML。

29. Rickshaw

Rickshaw 是一个用于绘制时序图的简单 jS 库,基于 Mike Bostock’s delightful D3 库构建。

30. rGraph

RGraph 是基于HTML5 canvas标签的HTML5 canvas图形库,支持 20 种不同的可视化类型。使用 canvas 标签,RGraph 创建“HTML5 图表”,意味着更快的 web 页面加载和更少的 web 服务器加载。这能帮助减小 web 页面的大小,低能耗和更快的浏览速度。

31. Fusion Chart

FusionCharts Suite XT 是个专业的 JavaScript图表库,能创建任何类型的图表。它创建的图表都是可以进行完全自定义的,标签,字体,边界等等,都可以进行修改。它有很强的交互功能,有许多信息提示,可 点击的 legend 关键字,还有 dril-down,缩放/滚动 和单击打印图表功能。

32. Graph Dracula

Dracula 是用一系列的工具来显示和布局互动图表,包括各种相关的算法。它只是纯 JavaScript 和 SVG ,并无 Flash,Java,其他插件。它非常容易使用,用户可以很简单的自定义任意的元素。

33. Bluff

Bluff 是个 JavaScript 的 Ruby 的 Gruff graphing library端口。它支持所有 Gruff 的特性,但是有着最小的依赖。用户只需要运行一个第三方脚本: JS.Class 副本(压缩后只有 2.6kB ) 和 Google 的 ExCanvas 副本,用来支持 IE 中的 canvas。这两个脚本在 Bluff 中都有下载。Bluff 自身压缩后大小大概有 11KB 。

34. Pizza Pie Chart

Pizza Pie Charts 是个响应式饼图图表,基于 Adobe Snap SVG 框架,通过 HTML 标记和 CSS 来替代 JavaScript 对象,更容易集成各种先进的技术。

35. jGraph

HTML5 图表组件,完全支持l IE 6-8 和触屏设备。 JGraph 自2001年来就一直提供最先进的图表软件组件,是第一个流行的 JGraph Swing 库。然后在 2005 年走在时代的前沿开发 mxGraph。

单纯用CSS也是做不出来的。

需要搭配JS才可以。 起码CSS里面没有点击这个效果。

鼠标经过倒是可以。

<style type="text/css">

<!--

a {

text-decoration: none

}

span {

float:left

display:none

}

a:hover span{

display:inline

}

-->

</style>

</head>

<body>

<a href="#">这是标题<span>这是标题提示</span></a>

类似这样的效果。多设计个SPAN就可以。

不过CSS做出来的毕竟有局限性,IE6.0以下的版本对它的支持不是很好。