作为一种安全控制的认证方式,“有线等效保密协议”是一个很好的学习机会,它会教会我们在一套加密系统中,什么东西不能做。不过,我们经常可以看到在一些“SOHO场所”(即“小型办公室”或“家庭作坊”,small office/home office)中,基于“有线等效保密协议”的认证还在使用中,所以说,虽然“有线等效保密协议”认证方式已经过时,但是如果这本书没有涵盖基于“有线等效保密协议”的攻击,那书的内容就是不全面的。但是本书也不会投入大量的页面进行介绍“有线等效保密协议”攻击,而是将这些页面让给那些更新、更令人兴奋的无线攻击方式。鉴于此,我们决定只提供少量的基于“有线等效保密协议”攻击的页面介绍,并且主要介绍理解这一技术你所需要知道的那一部分,然后通过实践来使用其中的弱点。
“有线等效保密协议”密钥有两种长度:40位(5字节)和104位(13字节)。最初,供应商只支持40位密钥。其实,原本供应商提供的密钥长度分别是64位和128位,之所以“缩水”减到这个长度,是因为在这64位和128位中,有24位来表示“初始向量”(Initialization Vector,IV),代表“共享密钥”(shared key)。这24位的“初始向量”在传达的时候是以明文方式发送的,这个形同虚设的值,对于正常用户和黑客,都可以轻易地获得,因此说密钥位的“实际有效长度”是40或104位。
对于一个黑客来说,有很多机会可以监听网络,并还原出网络加密的密钥。而一旦黑客拿到还原出来的“有线等效保密协议”密钥,他就可以随意访问这个网络了。他可以看到每个人收发的数据,他也可以向任何一个客户端或AP接入点注入他自己的数据包。有许多独特的方式可以实施“有线等效保密协议”密钥还原,具体流程详见图3-4。该图中都是每种还原“有线等效保密协议”密钥方法的最简路径。
图3-4 “有线等效保密协议”攻击流程图
基于FiOS上的SSID WEP密钥还原
正如在图3-4的流程图中所看到的,破解“有线等效保密协议”密钥最简单的方法是与FiOS路由器合作,一起攻击。FiOS [1] 是Verizon公司“光纤到户”(fiber-to-the-home)的互联网服务。尽管最近的FiOS路由器,在部署上市的时候,都默认使用了“Wi-Fi保护访问”认证,但很多老的设备都是使用很容易受到攻击的“有线等效保密协议”认证。“有线等效保密协议”认证下密钥算法将在后面介绍。
如果你碰巧生活在Verizon公司提供的FiOS服务区域,你可能已经看过很多带有下列字样的AP接入点的名称。遵循这种模式:C7WAO、3RA18,或BJ220(注意:全都由五个字母或数字组成,并且字母都是大写 [2] )。正如你可能已猜到的那样,这些AP接入点的“服务集标识”,都是路由器通过一个很简单的函数功能调用生成的,这些值也都是从“基本服务集标识”(就是网卡的MAC地址)衍生出来的。到目前为止,这还不算是问题,真正的问题在于它的“有线等效保密协议”认证所使用的“默认密钥”(default WEP key)也是由一个函数调用完成的,也就是说“默认密钥”也是从“基本服务集标识”上衍生出来的。因此,如果你有AP接入点的“服务集标识”SSID(这个值AP接入点会定时广播)和“基本服务集标识”(这个值AP接入点也会定时广播),那么你就相当于有了“计算”“有线等效保密协议”密钥的所有条件了。并且这里的计算即不需要使用暴力破解方式(brute-force),也没有密码(crypto)的参与!
第一个记录这种破解方式的是Kyle Anderson,他只用一个基于Linux系统的简单的在线Bash脚本(script)就能生成“有线等效保密协议”密钥。该网址为http://wiki.xkyle.com/Fioscalc.html 。
Bash脚本已经将密钥缩小到了两个可能的值。现在所要做的就是验证两者哪一个是正确的,排查的方法只是两个都试一下就行了。还记得吗?前面提到FiOS中的“服务集标识”值都是由五个数字或大写的字母组成,如“2C6W1”或“3A65B”。
提示
上面由JavaScript脚本语言实现的这种攻击方式,其在线程序可以从http://fwc.dylanmtaylor.com 上找到。
对FiOS WEP还原技术的防御措施
如果你安装了FiOS服务,并且没有重新配置你的无线网络,那么你可能很容易受到黑客的这种攻击。要避免这种情况发生,首先登录到“FiOS服务的Wi-Fi路由器”(即我们前面经常提到的“AP接入点”,更通俗一点,如你家里的无线路由器)的管理界面,将认证方式由原来的“有线等效保密协议”模式切换到“Wi-Fi保护访问”模式,然后选择一个强口令。需要注意的是,这样修改之后,FiOS服务的Wi-Fi路由器会因为WPA/WPA2加密算法产生的额外开销而使整个网络的性能有所降低。
针对WEP的两种密钥破解(FMS方式和PTW方式)
前面“默认密钥”是基于“基本服务集标识”生成的,所以这么草率的处理,是算法失败的一个重要原因。如果说针对这种“有线等效保密协议”认证的攻击是基于一个错误的密钥生成机制的前提下,那么本节所介绍的攻击方式,则是即使所使用的“有线等效保密协议”密钥是完全随机的情况下仍然可以实现的攻击方式。这种攻击方式是基于长时间的加密研究而获得的,并且这种密码学研究的起始时间可以追溯到2001年。
2001年,Fluhrer、Mantin和Shamir(首字母合称为“FMS”)发表了一篇论文,文中描述了在RC4(Ron加密算法代码的第4版)的“密钥调度算法”(Key Scheduling Algorithm,KSA)中有一个漏洞(vulnerability)。“有线等效保密协议”认证中所使用的RC4算法是一种“流密码”(stream cipher)算法。事实证明,正是因为“有线等效保密协议”认证采用RC4作为其加密算法,最终让使用“有线等效保密协议”认证机制的服务器变成了针对这一漏洞的完美攻击目标。
导致这一问题的关键在于,“有线等效保密协议”认证是如何在每个数据包使用“初始向量IV”的。在“有线等效保密协议”认证时,会使用RC4算法加密一个数据包,它在给RC4发送密钥之前,会先将“初始向量IV”转化成了加密的值,而这个加密的值又会填在数据包中。这意味着入侵者在每个数据包中,都可以获得一个据说“保密”的密钥的前三字节。一些等待之后,在基于RC4的输入上又有了一个好的机会,这个机会可比直接猜完全随机的剩下40位密钥的胜算要大得多。这一步完成后,剩下的仅仅是收集足够的数据,以便让密钥自己浮现出来。
2005年,Andreas Klei提出关于RC4的另一个问题。Darmstadt大学的研究者Pyshkin、Tews和Weinmann(首字母合称为“PTW”),将这项研究应用到针对“有线等效保密协议”认证的攻击上,并设计了攻击软件,名字叫aircrack-ptw。并且不久之后,该程序的增强版就被合并到aircrack-ng攻击工具包中,并且很快成为其默认的配置。
“PTW攻击方式”解决了“FMS攻击方式”中的主要缺点。首先,“PTW攻击方式”在还原密钥的时候,并不需要考虑任何弱的“初始向量IV”作为前提,而是只需要先拿到几个值得关注的数据包,然后就可以对其密钥进行还原。所以当运行“PTW攻击方式”还原密钥的时候,整个工作量与CPU关系不大。而在“FMS攻击方式”中,需要尽可能多地收集弱的“初始向量IV”,然后自始至终,一直通过暴力破解(brute-force),以便更早地得到密钥。通过对比,不难发现,“PTW攻击方式”只需要几秒钟的CPU运行时间,就可以还原出“有线等效保密协议”的密钥,在这种情况下,再去考虑如何节省时间,节省CPU的计算能力,本身就意义不大了,而“FMS攻击方式”的破解时间只很大程度上取决于CPU的运算能力。
有客户参与下用aircrack-ng破解WEP
虽然aircrack-ng可以用在Linux、OS X和Windows这三种操作系统上,但最合适的系统平台是Linux平台。因为对于“数据包注入”的操作,在Linux上要比任何其他操作系统上容易得多。同时,“数据包注入”技术又是无线网络入侵中最重要的技术之一,方便地实施这种攻击,可以大大加快对整个无线网络的攻击速度。
下面的例子带你参观一个入侵“有线等效保密协议”WEP无线网络的完整的步骤,不过,整个入侵过程中,有一个重要的特征,那就是这种入侵方式中至少有一个无线网络的某个“被占领客户端” [3] (victim client)已连在了这个无线网络上。在这个例子中,我们假设有一个名为linksys的网络,运行在信道1上,其“基本服务集标识”为10:FE:ED:40:95:B5。首先,设置无线网络适配器,使其进入“监测模式”:
接下来,我们开始运行airodump-ng程序,并设定我们感兴趣的信道和“基本服务集标识”:
这时,airodump-ng也将所有捕获到的数据包写入到文件Linksyschl-01.pcap中。
在上面的操作实例中,我们已经看到当前有一个客户端在线,它的MAC地址是02:BA:DC:OD:ED:01。我们将使用该MAC地址,并“从” [4] 这个客户端发送“重新注入”(reinject)的ARP地址解析数据包。这样做的目的是创造更多的数据包,这样我们就可以更快地破解密钥:
在上面的操作实例中,aireplay-ng成功地将ARP地址解析协议数据包以注入的方式发送到了网络中。由于数据包是以当前这个客户端的名义发送的,所以这个客户端很快就会收到AP接入点和其他客户端回复给它的数据包。aireplay-ng发送的动作是不停地连发(还记得一轮向各设备分别64个数据包吧),因此,网络中各相关的设备为各自的发送和回复而开始发送数据包。回过头来,看看airodump-ng,我们会发现大量的数据包正在快速地暴涨。
看到捕获的数据包个数正在稳定增长,这时,就可以运行aircrack-ng程序了。
最初,我们高兴地看到,在一个屏幕上显示的是分配到每一个密钥字节的权重(weight),以及“初始向量IV”的个数等值。如果aircrack-ng不能推导出最初的密钥,它会等待更多的数据写入到文件中,然后再试一次。一个成功的破解结果如图3-5显示的效果 [5] 。
图3-5 成功的破解结果
1.无客户参与下用aircrack-ng破解WEP
前面的例子是一个非常简单的事例。该事例的重要特点,同时也是不足的地方,就是这种攻击方式需要有一个或多个客户端连接到要攻击的网络上。该破解方式依赖有一个“被占领主机”最终发出一个ARP地址解析数据包,然后,我们可以在随后重复地产生数据包收发过程,并最终破解密钥。下面的例子将带你参观的是一个更复杂的事例,即在没有客户端连接到网络的前提下进行入侵攻击。整个完整过程如图3-6所示。
第1步:启动airodump-ng 在这个例子中,作为攻击目标的无线网络上,信道是11,“服务集标识”是“quiet_type”,目前无用户连接到网络上。首先,运行airodump-ng,以便开始捕获网络上的活动,以备随后的入侵。
第2步:假认证AP接入点 下一步,使用aireplay-ng伪造一个和AP接入点之间的关联。这就像是一个常规的客户端会去做的连接一样,你只需要使用aireplay-ng在不知道“有线等效保密协议”密钥的前提下,去和AP接入点建立连接关系。
图3-6 破解一个寂静无人的网络
使用无线网卡的MAC地址作为源地址,并通过aireplay-ng命令的“-h”参数使用这个地址。
第一个参数告诉aireplay-ng执行假的认证,并且认证的时候,命令要带上1秒的延迟。“-o 1”参数是告诉aireplay-ng一次只发一组数据包,在实施攻击的时候,这样做可以减少对AP接入点的冲击。再后面的“-e”参数是设置“服务集标识”SSID,“-b”参数设置“基本服务集标识”BSSID,“-h”参数设置源MAC(这应该是当前分配给你的无线接口的MAC地址)。
如果一切顺利,你应该得到类似以下的信息:
如果你看到一个消息:“得到了一个解除认证的数据包!”,那么假关联已经失败。最可能的原因是AP接入点实现“MAC地址过滤”(MAC address filter)。这时,你只能等,等待一个正常用户上线,借助于他的MAC地址,静等他下线,或是发起攻击将他“踢”下网,或者与他一起用同一个MAC地址共用网络。总之,拿到他的MAC地址后,你就可以修改自己的MAC地址为该MAC地址,然后再连上网络,继续后面的攻击。
再回到airomon-ng上,你会看到你的假客户端名单也名列客户端名单中。下一步尝试一下“碎片攻击”方式(fragmentation attack)。
提示
如果完成后面的“碎片攻击”(和随后的ChopChop攻击),可以留下这个假认证(fake-auth)的程序运行在后台上。这样一来,如果高级攻击中的某一个导致了AP接入点解除与我们的认证,我们将在1秒延迟以后自动重新认证(re-authenticate)。
第3步:启动碎片攻击 “碎片攻击”是一种先进的“有线等效保密协议”破解技术,该技术可以用于使用AP接入点作为一个解密工具,一次解密一个单一的数据包。除非这次指定的就是“碎片攻击”方式,否则只要用之前aireplay-ng中“假认证攻击”(fake-auth attack)进行攻击就可以了。
如果你看到这段关于保存密钥流(keystream)的信息,这说明现在程序正在执行一个数据包中,明文(plaintext)和密文(ciphertext)的“异或”(xor)操作。如果“碎片攻击”进入工作状态,你可以直接跳转到第5步。如果“碎片攻击”无法进入工作状态,那么可以试试ChopChop攻击。
第4步:启动ChopChop攻击 除了“碎片攻击”之外的,另一种常用的攻击方式就是“ChopChop攻击”。“ChopChop攻击”需要比“碎片攻击”花更长的一点时间(最多几分钟)才能完成。详情请参见在本节后面讨论,至于现在,你可以运行如下所示代码。
提示
如果要实施攻击,你可以尽可能只使用尺寸较小的数据包,以便加快“ChopChop攻击”的攻击速度。如果要实施“数据包注入”,则可以使用较大的包,大于68字节的数据包都应该能够满足以后在一次“ARP注入攻击”(ARP injecton attack)中使用。
提示
数据包越大,“ChopChop攻击”所用的时间就越长。如果实施攻击的数据包大于300字节,你可能就会考虑扔掉这个软件,等待有能发小数据包的合适攻击软件了。
这种攻击将需要几分钟。如果你觉得在攻击的中途接收到了解除认证的信息,那就先确认一下在最初很早运行的“假认证”攻击是否仍在运行。
一旦攻击完成,你会在“.cap”文件中得到解密数据包的一份拷贝,在“.xor”文件中得到密钥流的一份拷贝。一个比较好的主意,是理智地查找攻击程序所留下的输出内容。这主要是在上面保存的“.cap”文件中。这里,会包含有某种“有效的IP地址”的数据包。例如,刚解密的数据包,经过解码,发现是“简单服务发现协议(Simple Service Discovery Protocol,SSDP)” [6] 的数据包,该数据包位于一个192.168.O.X的子网中:
任何时候,数据包的应用层(application layer)信息能够被解出来,这都是一个好的迹象。毕竟,看到应用层的数据,意味着所有与应用层以下各层(对于TCP/IP协议来说物理层、网络层、传输层)上的问题已解决。
第5步:手工制作ARP数据包 成功地进行了“碎片攻击”或“ChopChop攻击”之后,你现在可以通过注入你自己的数据包,实现“还原的密钥流”(recovered keystream)。但应该注入什么样的数据包呢?你需要的是AP接入点直接向广播地址发送的内容。从这样的一个加密的数据包中,通过使用“ChopChop攻击”进行解密,你就可以知道AP接入点所管理的网络位于192.168.0.x子网中。跳过802.11的头部和加密的部分,如果随后的ARP“who-has”请求数据包 [7] 在网络上被生成,那么这个AP接入点将会向所有的客户端重新广播一遍。并且在随后的处理中,使用新的“初始向量IV”。
请注意,我们实际上并没有手工制作那些AP接入点已经回复了的ARP包(比如对于无线路由器常用的“192.168.0.1”IP地址)。我们只需要那些AP接入点将要重新发送的ARP数据包,才需要手工制作。测试表明,针对AP接主点的手工制作的数据包,更像是告诉AP接入点“解除对我的认证吧”这样的自杀行为,所以我们还是别冒那个险了。
在aircrack-ng套件中,有一个叫packetforge-ng的工具,这个工具就是用于手工制作数据包。首先,运行packetforge-ng,并带上“--arp”参数,这是告诉程序你想手工制作的数据包类型。下一点,你需要指定网络TCP/IP协议的第二层,也就是数据链路层的参数(“基本服务集标识”、目的MAC地址、源MAC地址),这个命令是同前面一样,格式是“-a BSSID”参数和“-h发送源MAC地址”参数。接下来,通过“-k”参数指定目的IP地址,和通过“-l”(这是一个“L”的小写字母,而不是数字“1”)参数指定源IP地址,这两个参数共同创建ARP的数据包。最后,使用参数“y”,将前面由“ChopChop攻击”所生成的“密钥流”加密一个新的数据包。这个命令如下所示。
提示
如果你创意十足,你可以通过packetforge-ng软件生成其他协议的数据包,并使其在网上发来收去。一个广播方式下的“Internet控制报文协议回送请求”(ICMP echo request)数据包在生成后,可以产生积极的结果 [8] 。
做完这些事,你应该有了一个手工制作的ARP数据包,该数据包使用针对该网络作了正确的加密,你可以请其“注入”到网络中,然后观察在airodump-ng中所捕获的数据包总数是不是增加了。
第6步:注入手工制作的ARP数据包 随着繁杂的内容被一一处理掉,看看按照前面的方式手工制作的加密ARP请求数据包,终于到了使用这些数据包的时候了。一个简单的命令行如下所示:
运行aireplay-ng后,你应该切换到终端上再运行airodump-ng。如果你没有看到“#Data”的计数在增加,就说明某个环节发生了错误。最有可能的是命令中的几个MAC地址,你在键入时存在输入错误,或者你需要重新运行aireplay-ng上的“假认证攻击”(fake-auth attack)。如果你看到“#Data”计数的增加,那就继续向前,开始运行aircrack-ng来分析处理由airodump-ng生成的“.pcap”文件。
第7步:启动aircrack-ng 运行aircrack-ng,先让程序运行几分钟,以便捕获到足够的网络通信的数据包。然后运行aircrack-ng以便对所捕获的文件进行分析处理。由于生成的数据包文件太大,所以下面我们在命令行中,通过使用通配符(wildcard)在当前目录下,从所有airodump-ng所捕获数据包文件中,查找那些文件名中,带有前缀“quiet_type”类型的文件(这是本次入侵时,作为攻击目标的无线网络的假设网络名)。
最终aircrack-ng命令将成功返回密钥,或者因为所捕获的数据包还不足以还原密钥,那么程序会继续等待更多的捕获数据包,然后再次尝试还原操作。你可以将它放在那里运行,直到拿到还原后的密钥,然后再回到另一个终端上,停止aireplay-ng命令的运行。
2.在OS X上攻击WEP
要想在OS X操作系统上破解“有线等效保密协议”认证系统,你要有协同使用KisMAC和aircrack-ng这两个软件的能力。KisMAC可以通过重新注入数据包(reinject packet)来产生数据通信,但是,相比于aircrack-ng,它又缺乏后者所具有的先进加密功能,比如可以实现“PTW攻击”。反过来,aircrack-ng没有KisMAC的这项功能。这意味着你需要配置KisMAC,以便让KisMAC捕获所有通信数据包,并将其保存到到一个“.pcap”文件中,实现这一功能,需要使用KisMAC的“KisMAC(Kismac)|偏爱(Preferences)|驱动程序(Driver)|保存所有数据(Keep Everything)”菜单。完成这一操作后,将生成的pcap传送到aircrack-ng中实施“PTW攻击”的破解。在下面的例子中,我们将所有的数据包保存到“Dumplogs/cumpcap”文件中。
在OS X上运行aircrack-ng程序,最简单的办法就是使用“Brew程序包管理系统”(Brew package management system)。对于这套系统的安装和配置手册,可以从http://brew.sh网站上找到。假设你已安装了Brew系统,那么安装aircrack-ng就是轻而易举的事了。
一旦你已经安装好aircrack-ng,就可以在Kismet中开始扫描。当扫描到一个可以作为攻击目的的网络后,选择“网络(Necwork)|重新注入数据包(Re-inject Packets)”菜单启动KissMAC中重新注入(re-inject)ARP数据包的功能。一旦KisMAC看到一个可以用于重新播放(replay)的ARP数据包,你应该就会看到如图3-7所示的类似界面。
图3-7 重新注入数据包
这时,我们可以关注数据包的计数值。如果注入操作正在进行,你应该能够看到数字在迅速攀升。那么,你就可以从命令行中止aircrack-ng的命令:
3.在Windows上通过PTW攻击WEP
当前流行的Windows破解工具“Cain&Abel”最近增加了对“PTW攻击”的支持,也增加了“ARP重播攻击”的数据包能力。该功能的提供,需要使用带有“数据包注入”功能的AirPcap设备。这个设备可以让你在不使用命令行工具的前提下,能像aircrack-ng软件一样快速地破解“有线等效保密协议”认证方式。唯一的缺点是你必须使用专业版的AirPcap网卡适配器,详见http://www.airpcap.nl/airpcap.htm 。并且目前没有实现先进的“ChopChop攻击”和“碎片攻击”这两种攻击方式。
假设你已经安装AirPcap网卡适配器,并且正在使用中,运行“Cain&Abel”软件,单击“无线”(Wireless)选项卡。随后从下拉列表中选择你的AirPcap网卡适配器的名称,然后单击“以被动方式扫描”(Passive Scan)按钮。一旦你所感兴趣的网络出现在列表中,单击“停止”按钮,然后锁定在相应的信道。确认ARP请求数据包注入选项显示在底部列表中,然后再次单击“被动扫描”按钮。这种配置的一个例子如图3-8所示。
图3-8 配置示例
主要关注数据包的计数值,正常情况下,如果“ARP重播攻击”正在工作,那么该计数器应该一直处于增加状态。如果你遇到了麻烦,你可以用鼠标右击客户端,然后解除认证。这将导致客户端重新关联,并希望发出一个ARP请求。一旦数据包的数量增至40000左右,单击“分析”(Analyze)按钮。选择你有兴趣的“基本服务集标识”BSSID,然后单击“PTW攻击”按钮。如果一切顺利,你应该看到一个“发现有线等效保密协议密钥!”(WEP Key Found!)的消息,如图3-9所示。
图3-9 发现有线等效保密协议密钥
虽然“有线等效保密协议”是目前无线网络中最容易攻破的一种协议,但要成功地攻破一个基于“有线等效保密协议”认证的无线网络,却要多个步骤才能成功,失败的原因千奇百怪,有因工具破解失败而受挫,有因工具的配置和使用时的输入手误。作为一种替代手动攻击的方法,有一款集上述各攻击技术为一侧面的“傻瓜式”简单界面的集成工具。
[1] FiOS,Fiber Optic Service(光纤服务)是Verizon公司提供的采用光纤电缆传输数据的数据通信服务。由于它可以实现直接将光纤连接到用户家里,所以又称为“光纤到户”(FTTH,Fiber To The Home)。——译者注
[2] 要注意到更重要的一点,这五个字节正好就是40位,和密钥的长度是一致的。——译者注
[3] 所谓“被占领”理论上来说,应该是之前已被入侵,黑客可以在上面任意操作,但本例中,指的只是一个旁观者,但在入侵行动中,并不需要黑客事先入侵,只是为了统一方便,所以也称之为“被占领主机”。——译者注
[4] 注意这里的“从”只是表示数据包是由入侵者自己的电脑发出的,但要以客户端的名义发送,后面的“重新注入”是因为之前的这个客户端在入网的时候就发送过ARP数据包,只是之前的数据包不是以“注入”的方式发送的。——译者注
[5] 根据图中显示的结果不难看出,破解的结果是成功的(图下方正中的“KEY FOUND!”表示“密钥找到了!”),破解的密钥是104位(图中“KEY FOUND!”后面13个字节,每个字节是8位)。——译者注
[6] 一个应用层的协议,即用于在“网络上查找指定类设备”和“设备通知网络自己的存在”而设计的一套协议。其实客观地讲,本书第2章的所有内容,也都是SSDP协议的“网络上查找指定类设备”的意思。——译者注
[7] ARP(Address Resolution Protocol)本来就是根据IP地址获取MAC地址的一个TCP/IP协议。其中的“who-has”就是其标准的请求数据包类型之一,通常都是以广播的方式发送,其意义很像生活中,有人在人群中大喊“谁是某IP的主机,请把你的MAC地址告诉我”。——译者注
[8] 对ICMP(Internet Control Message Protocol,Internet控制报文协议)的介绍会引出大量复杂的术语,通俗地讲,你ping别人的时候,就会向对方发送一个“回送请求”数据包,相当于“请你回答我你的情况”。由于这是主动请求式,所以属于“主动式扫描”中的一种,所以这里“积极的结果”有两层含义,一层是方式是“主动式”的,二层是结果比较理想。——译者注