基于OpenDayLight的恶意扫描防护技术

2018-03-20 00:43吴若豪
计算机应用 2018年1期
关键词:攻击者端口控制器

吴若豪,董 平,郑 涛

(北京交通大学 电子信息工程学院,北京 100044)(*通信作者电子邮箱15120159@bjtu.edu.cn)

0 引言

网络安全问题一直是影响网络技术发展的重要因素之一,随着信息化的不断加快,其重要性也不断增加。传统的网络层安全防护技术普遍集成在防火墙设备当中,这些设备随着近年来各种网络技术的兴起已经逐渐暴露出一些弊端,例如设备的二次部署和集中管理问题[1]。为了解决这类问题,研究人员提出了一体化防火墙、下一代防火墙[2]等概念,目前正处于深入研究阶段。

相比之下,软件定义网络(Software Defined Network, SDN)采用集中式架构,能够在控制器端感知网络整体的信息,并且控制器具有操作网络转发行为的能力[3],这使得利用软件定义网络技术实现新型网络层安全防护技术成为可能[4]。与传统同类网络安全技术相比,基于软件定义网络的网络层安全防护技术最重要的优势在于其便于统一管理、灵活调用,因此具有较大的研究和应用价值[5]。

且众所周知,分布式拒绝服务(Distributed Denial of Service, DDoS)攻击对当前的网络安全有着巨大的危害性。2015年12月31日,英国广播公司(British Broadcasting Corporation, BBC)和Iplayer服务器由于遭到了分布式拒绝服务攻击,网站瘫痪数个小时;2016年1月6日,知名互联网金融门户网贷天下发布公告,称其遭到了DDoS攻击,造成了严重的经济损失。类似的事情数数不胜数,可见分布式拒绝服务攻击已经成为了网络安全的头号公敌。而该攻击过程大体可以分为以下几步[6]:1)恶意的探测扫描大量主机以寻找可入侵的主机目标;2)入侵有安全漏洞的主机并获取控制权;3)在每一台被入侵的主机当中安装控制程序;4)利用已经被安装控制程序的傀儡机继续重复步骤1)~3)去扩张傀儡机群的规模;5)利用已掌握的傀儡机群对目标进行具有严重破坏性的分布式拒绝服务攻击。

以往传统的防护手段,大多仅能在攻击者已经形成一定规模的傀儡机,并且对攻击对象产生了一定破坏程度的攻击危害之后,才能发现DDoS攻击并且对其进行检测和防御,而不能在攻击还没开始之前就很好地预防[7]。而要想在攻击还没有产生破坏效果之前就预防DDoS攻击,需要在攻击者对网络进行恶意扫描发展傀儡机群的阶段,就阻止傀儡机群规模的扩张,攻击者在没有控制大量傀儡机的情况下,就无法对目标发动有效的DDoS攻击。但以往对于攻击者在通过恶意扫描去发展傀儡机群数量的阶段就可进行反制的手段很少,即使有,大多也仅能从单机层面来进行防御,即通过对每台主机设置防火墙、为每一台主机打上安全漏洞补丁、定期扫描每台主机当中是否存在恶意进程来进行,由于是从单机的层面,并且操作很复杂繁琐,效果并不好,并不能从根本上阻止攻击者扩张傀儡机群;并且由于传统网络防护技术难以集中获取整个网络的状态和对各节点进行控制,所以对于攻击者对网络的恶意扫描的预防就十分困难,即使通过硬件防火墙对整体网络进行隔离,也需要提供额外的硬件成本,代价很高。

而基于软件定义网络(SDN)的网络层防护技术具有能方便地对网络统一管理、调用灵活的特性,打破了难以对网络恶意扫描预防的现状,使得对恶意扫描攻击的预防简便了许多[8]。利用SDN可对网络通过控制器进行统一管理的这一特性,不再从单机层面,而是从网络层面,对攻击者对网络的恶意扫描进行有效的检测和防御[9],从根本上阻止了攻击者所掌控的傀儡机规模的扩张,从而进一步预防了如同分布式拒绝服务攻击等破坏性极强的攻击行为[10]。

基于软件定义网络对网络便于统一管理和调用灵活的特性,本文提出了一种新的预防DDoS攻击的防护手段,面向恶意扫描的控制层实时防护机制(Control Real-time Defense Mechanism, CRDM)。该方法具有如下特性:1)所创新设计的基于OpenDayLight(ODL)[11]实现的CRDM,不需要任何额外的硬件支持,仅通过ODL控制器即可达到对恶意扫描攻击的检测和防护的目的,节约了大量的硬件成本。2)基于表述性状态传递(REpresentational State Transfer, REST) 应用程序编程接口(Application Programming Interface, API),不会对网络造成负载,免去了大量的网络开销,并且可以简便快捷地实现网络层状态的获取和管理,且易拓展开发,具有很强的拓展性。3)利用SDN的特性,相比传统的防护手段,创新性地提出了在网络控制层面,利用控制器对攻击者的恶意扫描网络的行为进行有效的反制,从网络的层面而不是传统的单机层面上阻止了攻击者的恶意扫描攻击网络并发展傀儡机群的行为。4)运用数据库进行数据的存储和CRDM相应参数的设置,更易对网络状态数据进行分析、处理和判断,以及对本身系统的调整和设置。该方案不仅解决了传统网络关于恶意扫描攻击难以防护或防护代价过高的问题,基于软件定义网络的集中式架构以及REST API的特点,无须额外的硬件支持和额外的网络开销,仅需要软件编程开发即可,使得程序的设计思路变得十分清晰,方便了开发人员的开发和测试。

1 CRDM方案设计

本文将实现一个在软件定义网络架构下,基于OpenDayLight控制器的面向恶意扫描的控制层实时防护机制。而一个完整的攻击防护过程的设计工作应当分为两个部分进行:1)检测部分的设计。在这一部分当中,设计者首先要分析所需要防护的攻击具有的特征和特性,针对这些特征和特性提出一系列的检测方案。本文当中需要防护的攻击为恶意扫描,而恶意扫描攻击的特性即为扫描速度快、范围广,且具有的一大特征便是其发动攻击的端口会在攻击时间内于控制器当中产生大量的冗余流表。针对这一特征,需要对控制器当中的所有流表都进行实时的检测,检测这些流表当中是否符合上述特征,以检测是否存在端口正在进行恶意扫描攻击[12]。2)防护部分的设计。在完成了检测部分的设计之后,程序对所防护的攻击具有了检测能力,则需要对程序检测出来的目标采取必要的防护措施。在本文当中,当程序检测出某一端口正在进行恶意扫描的行为时,程序会根据检测部分检测到的正在攻击端口的具体参数,自动通过控制器生成一条对该端口进行禁用的流表规则,禁用该攻击端口,以达到对整体网络的防护效果[13]。

其实现思路如下:首先,通过OpenDayLight所提供的部分北向的REST API[14],读取控制器里的功能数据,如流表数据等。其次将这些流表数据存入MySQL数据库后,再对这些流表数据进行实时监测,其中还需制定监测机制,判定是否存在正在进行恶意扫描的端口以及确定恶意端口号。如存在端口正在进行恶意扫描,则通过对控制器编程的方式,自动进行一些流表的操作,如添加一些流表,用以禁用恶意扫描端口。CRDM设计思路流程如图1所示。

图1 CRDM设计思路流程

基于CRDM的设计思路,可设计如图2所示的程序结构编程实现该方案。首先,实现连接控制器的信息初始化以及相应API调用的模块,该模块向控制器和网络发送相应请求,控制器收到请求后,反馈相应请求所需信息,如发送对流的统计请求,则控制器反馈所有流表。接收到控制器反馈的所有流表信息后,由于它是以可扩展标记语言(eXtensible Markup Language, XML)形式传输,需要编写代码在本地生成相应的XML文件为之后流的关键信息的读取提供基础。在本地生成相应的XML后,对该XML文件进行解析,获取关键的流数据后,存入数据库中,方便之后的数据库数据的检测。之后制定相应的恶意端口判别标准,对数据库内的各个流信息进行检测,一旦发现符合判定规则的恶意端口,将该端口的参数传输到流表控制规则的生成模块,其中参数包括:恶意端口号、恶意端口所在的节点ID以及对该恶意节点的处理方法等。生成含流处理操作的参数的XML后,回传到连接控制器与相应API的调用模块,发送下发流表请求,如下发流表成功,则控制器将反馈“success”信息,程序结构如图2。

图2 程序结构

2 CRDM方案实现

2.1 连接控制器与REST API的调用

连接控制器与REST API的调用模块用于与控制器连接,首先定义一个特定的统一资源定位符(Uniform Resource Locator, URL)字符串用于记录所需要访问的URL接口地址:

String baseURL="http://localhost:8080/controller/nb/v2/statistics"

再将其以所需调用的API所要求特定的形式,实例化一个java.net.URL:

url=new java.net.URL(baseURL+"/"+containerName+"/flow");

之后将登录信息利用Base64.encodeBase64解码成比特流,再调用Connection对象的实例化方法和其他的配置属性方法,如设置文件的类型、请求的类型等参数:

URLConnection connection=url.openConnection();

//ODL的Web的ID验证

connection.setRequestProperty("Content-Type",

"application/xml");

//设置文件类型

connection.setRequestProperty("Accept","application/xml");

connection.connect();

即可向控制器发送请求,请求其反馈当前网络当中的所有流表信息。

2.2 XML解析

当利用Connection成功连接上指定的URL接口之后,利用文件流的操作将Connection对象返回的数据存入本地的指定路径XML文件中,重构含有控制器所有流表信息的XML文档:

DataInputStream in=new DataInputStream(connection.

getInputStream());

//实例化数据输入流获取connection返回的输入流

DataOutputStream out=

new DataOutputStream(new FileOutputStream(fileName));

//实例化数据输出流,将其输出地址设置到工程根目录下的

//fileName的文档当中

byte[] buffer=new byte[4096];

//缓冲区

int count=0;

//计数

while ((count=in.read(buffer))>0){

out.write(buffer,0,count);

//写入

}

out.close();

in.close();

System.out.println("XMl本地文档重构成功");

对于在本地缓存下来的XML文件,利用多层循环不停地挖掘其每一子层的内容,对每一层的子层的节点数进行判定,一旦发现其不为零,则继续往里一层挖掘,如判定该层的子节点数为零,则打印该层节点名以及该节点的内容,其判断流程如图3所示。

解析出XML中所有数据后,针对需要的一些特定的数据进行挑选,如输入节点端口、流目的地址、流处理方式、流字节数、流包数、流持续时间、流优先级。普通格式的数据通过节点名匹配的方式读取。一些特定格式的内容,则采用标示符与及节点名称进行联合判定的方法读取。

图3 读取XML流程

2.3 MySQL数据库存储模块设计

由恶意扫描的特性可知,其一大特征就是特定流表的数量会大幅增长,后期的恶意端口判定工作一定程度上是基于流表数量上的判定,所以在编写设计存入MySQL数据库相关模块时,必须考虑以下几个问题:1)如何向数据库内插入固定格式的流数据;2)如何防止同一时刻产生的同一流表信息重复存入数据库;3)如何防止不同时刻的同一流表信息重复存入数据库;4)如何在数据库中读取指定数据为后期判别提供基础。

前3个问题都会导致存入数据库内的各个端口的流表数量与实际控制器内的各个端口的流表数量不符,如果不妥善解决,将会导致后期的判定无法进行。为解决这几个问题,本文的思路为:每次更新数据库前,都会将数据库指定表内的所有数据清空,然后再对ODL控制器反馈的XML文件解析出来的内容进行全扫描,完整地获取一次ODL的所有流表,不仅可以防止同一时刻流表信息以及不同时刻同一流表信息的重复存储,且还能更新同一流表不同时刻下的一些参数变化,如传输比特数、传输包数、流存在持续时间等。用于流表记录的表格结构设计如表1所示。

表1 实验中使用的记录流表数据的表格结构

2.4 恶意扫描端口判别

由前文描述可知,恶意扫描的一大特征便是同一输入端口(恶意端口)的流表会突然大幅增长,并且为了达到攻击效果,要求其流表增长必须十分迅速,所以这些流表中传输的比特数和包数一般都十分少,持续时间也很短。利用恶意扫描的这些特征,可以制定相应的恶意端口判别标准:当某一端口存在的流表数量在控制器中最多,每条流表的传输比特数都小于一个预设的门限,并且为了防止误判,要求当这些流表中的传输比特数小于判决门限的数量且大于这些流表数量的1/2时,则会判定该端口正在进行恶意扫描。当然,使用这套判决标准必须有一个大前提,那就是比较的对象端口必须只能是底层节点连接主机的端口,不能有中间节点的端口,因为特定形式的拓扑,如以一个节点作为中心点的放射型拓扑,则流表数最多的必须是越靠近中心节点的端口,这样就会使上述判定标准失效。

首先编写一个类(结构体)用以记录所需要比较的节点号和相应的节点端口:

class JudgeObj

{

String PortName=null;

int Number=0;

JudgeObj(String InPort){PortName=InPort;}

}

通过一个类数组的形式,将该数组当中的各个节点号和节点端口作为参数,调用前文中提到的数据库中的查询类,该类将返还所查询的节点的端口在数据库中所含的流表数,再利用一个比较算法,比较出当中最多流表的端口号。记录该端口号和该端口号的流表数量,再次调用数据库,查询该端口号的流表中,传输比特数小于门限阈值的流表数量,一旦该数量大于该端口号的总流表数量的1/2,再判定该端口正在进行恶意扫描。

通过恶意扫描端口判别模块,程序即可检测当前网络当中,是否存在恶意扫描端口,如存在恶意扫描端口,则可以将其节点信息存到指定的字符串当中,为之后的防护工作提供了数据基础。以下是恶意扫描端口判别模块的部分核心功能代码:

for(l=0;l<8;l++){

obj[l].Number=test1.MySQLSearchTest(obj[l].PortName,1,DLDst,Action,ByteCount,PacketCount,DurationSeconds,Priority);

//双功能——1表示返回其流表条数

//双功能——2表示匹配查询这些流表当中小于所定阈值的

//流表数

}

MaxNumber=obj[0].Number;

NameofMax=obj[0].PortName;

//if(obj[0].Number>obj[1].Number)System.out.println("test");

for(l=0;l<8;l++){

//比较算法,取最大值

if(MaxNumber<=obj[l].Number){

MaxNumber=obj[l].Number;

NameofMax=obj[l].PortName;

RecordNum=l;

}

}

System.out.println("");

System.out.print("流表条数最多的是"+NameofMax);

System.out.println("条数为"+MaxNumber);

System.out.println("");

if(MaxNumber==0){}

else{

TestResult=test1.MySQLSearchTest(obj[RecordNum].

PortName,2,DLDst,Action,ByteCount,PacketCount,

DurationSeconds,Priority);

//调用功能2,扫描查找恶意流表

if(TestResult>=MaxNumber/2)System.out.println("经检测"+

NameofMax+"为恶意扫描端口");

}

2.5 含流表控制规则XML文档的生成

通过2.4节所描述的模块,程序通过相应的检测机制以及判别标准,已经检测并获取了当前正在进行恶意扫描的端口号和端口ID,仅需要代码生成一份与控制器要求的格式相同,并且含有本文所需的指定数据,即恶意端口号和对该端口号的处理方式的XML即可,通过这份XML可以向控制器提供恶意扫描端口信息和对其处理的规则。

2.6 控制器再连接

控制器再连接模块的主要作用大体与2.1节的连接控制器的模块相似,但其不同的地方在于:在该模块中不再是简单地使用HTTP的Get请求来向控制器请求流表信息,而是必须以HttpURLConnection作为操作对象,通过HTTP当中的Post请求,结合文件流的读取操作,将2.5节当中生成的本地含有恶意扫描端口信息和对其处理规则的XML回传到控制器的指定URL后,控制器生成相应的处理流表,对XML提供恶意扫描端口进行指定方式的处理。

3 CRDM系统测试

依据第2章的程序结构设计和实现思路,搭建好开发所需的平台和环境之后,在Windows 7平台下进行测试。通过Mininet虚拟网络连入控制器[15],并且在Mininet端利用某一端口ping其他的各个端口模拟在该网络中恶意扫描其他主机,通过已设计好的判决机制对数据库当中的所有端口(已产生流量的端口)的流表进行判决,测试该算法是否能够正确地判定出模拟恶意扫描的端口,并且当正确判定出恶意扫描端口后,测试程序是否能够自动地对该端口进行处理,以达到防护作用。虚拟网络拓扑如图4所示。

图4 虚拟网络拓扑

在图4所示网络拓扑当中,将HOST8用于模拟恶意扫描的端口主机,用它去ping其他的相应主机模拟恶意扫描,验证文中所述的程序是否能够达到防护该网络的作用,效果如图5所示。

从图5中可以看到,当HOST8再次ping其他的主机时,显示的都为100% packet loss,说明HOST8端口已经被成功禁用,程序成功将恶意扫描的端口主机在网络当中进行了隔离,达到了对网络的防护作用。

图5 CRDM系统测试效果

CRDM系统功能测试完成之后,对CRDM系统在不同大小规模的网络下进行了测试,针对其误报率和漏报率进行了统计。网络规模主要体现于网络当中的主机数量,而网络当中模拟恶意扫描攻击的主机数量设定为当前网络当中总主机数量的20%,在这样的条件下对CRDM系统进行测试,其误报率变化和漏报率变化如图6所示。

图6 CRDM系统误报率和漏报率

从图6当中可以看出,随着网络规模的增大,其误报率和漏报率都呈现上升趋势,因为当网络规模变得较为庞大时,网络当中的主机之间的数据交互就会变得更为复杂,这给本文的系统带来了挑战,让系统更容易出现误报和漏报的情况。从图中可以看到,虽其趋势是上升的,但是并未出现在某一个规模之后,系统的性能急速恶化的现象,而是维持在一个相对缓慢的速度曲折上升,说明CRDM系统性能具有一定稳定性。

除了对CRDM系统进行了不同网络规模的性能测试,本文还将CRDM系统与以往常用的网络的入侵检测系统Snort、Watcher、PortSentry三套系统在同一网络和模拟攻击的环境,即主机台数70台、模拟攻击数为14的网络规模当中进行了性能的测试比较,结果如表2。

从表2中可以看出:在相同的模拟攻击和网络环境中,Snort、PortSentry和CRDM的漏报率都大体相同,在14%左右,而Watcher则表现较差,为21.4%;但在误报率的比较上,CRDM的性能远比其他3种系统的性能要好得多,CRDM的误报率为3.6%,而Snort的误报率为19.2%,Watcher的误报率为20.1%,PortSentry的误报率为15.4%,Snort、Watcher、PortSentry的误报率分别比CRDM的误报率高出了15.6、16.5、11.8个百分点。

表2 CRDM与Snort、Watcher、PortSentry准确度比较 %

4 结语

本文在分析基于软件定义网络的网络层的防护技术的基础上,结合了软件定义网络的集中式架构以及OpenDayLight控制器提供的REST API的开发特点,提出了一种可在DDoS攻击具有破坏性的行为还未开始前,就可预防该攻击的思路,即在攻击者恶意扫描网络的时候就对其进行阻止;并且根据该思路,设计和实现了一整套可用于实时监测网络底层节点端口的防御机制(CRDM)。为了验证CRDM的性能,利用Mininet搭建了虚拟网络,并且通过模拟对网络的恶意扫描攻击,在不同规模的网络集群当中进行了大量的模拟攻击实验。实验结果表明:当网络规模较小,并且模拟攻击数较少时,CRDM一旦检测到网络当中有端口正在进行恶意扫描攻击,可及时地禁用该端口,阻止攻击者对网络的恶意扫描攻击以及发展傀儡机规模的行为,使得攻击者无法对目标进行有效的DDoS攻击,从而防止了损害的产生。而随着网络规模的扩大以及攻击数量的增加,CRDM的误报率和漏报率也会相应增加,但性能还是趋于稳定,不会急速恶化,具有一定的稳定性。除此之外,还将CRDM与传统的入侵检测系统Snort、Watcher、PortSentry进行了性能比较,虽然在漏报率方面与其他三套系统大体持平,但在误报率方面CRDM远低于它们,可见CRDM性能优于其他三套系统。

虽然基于软件定义网络的集中式框架有诸多优点,对开发网络防护技术十分便利,但也有其不足之处:软件定义网络的集中式控制框架,使得控制器占据十分重要的地位,攻击者会想尽一切攻击手段去获取控制器的控制权。一旦处于网络顶层的中央控制器的漏洞被攻击者掌握,并且利用该漏洞对控制器进行攻击,掌握了网络当中控制器的控制权,则会使得所有基于软件定义网络的网络防护手段崩溃瓦解,导致网络沦陷,其损失将远远超出传统的网络防护技术。所以在使用软件定义网络架构进行网络防护手段的研究和开发时,控制器安全的保护就显得尤为重要,也将是今后的一个研究重点。

References)

[1] 左青云,陈鸣,赵广松,等.基于OpenFlow的SDN技术研究[J].软件学报,2013,24(5):1078-1097.(ZUO Q Y, CHEN M, ZHAO G S, et al. Research on OpenFlow-based SDN technologies [J]. Journal of Software, 2013, 24(5): 1078-1097.)

[2] 姜红德.新IT时代:下一代防火墙崛起[J].中国信息化,2016(12):84-86.(JIANG H D. The new IT era: the rise of the NGFW [J]. Information China, 2016(12): 84-86.)

[3] SCOTT-HAYWARD S, O’CALLAGHAN G, SEZER S. SDN security: a survey [C]// SDN4FNS’13: Proceedings of 2013 IEEE Software Defined Networks for Future Networks and Services. Piscataway, NJ: IEEE, 2013: 1-7.

[4] ALI S T, SIVARAMAN V, RADFORD A, et al. A survey of securing networks using software defined networking [J]. IEEE Transactions on Reliability, 2015, 64(3): 1086-1097.

[5] 郁峰.软件定义网络架构下的安全问题综述[J].现代计算机(专业版),2014(16):13-20.(YU F. Overview of security issues in SDN architecture [J]. Modern Computer, 2014(16): 13-20.)

[6] MATTA V, MAURO M D, LONGO M. DDoS attacks with randomized traffic innovation botnet identification challenges and strategies [J]. IEEE Transactions on Information Forensics & Security, 2017, 12(8): 1844-1859.

[7] SOMANI G, GAUR M S, SANGHI D, et al. Combating DDoS attacks in the cloud: requirements, trends, and future directions [J]. IEEE Cloud Computing, 2017, 4(1): 22-32.

[8] YAN Q, GONG Q, YU F R. Effective software-defined networking controller scheduling method to mitigate DDoS attacks [J]. Electronics Letters, 2017, 53(7): 469-471.

[9] AMBROSIN M, CONTI M, GASPARI F D, et al. LineSwitch: tackling control plane saturation attacks in software-defined networking [J]. IEEE/ACM Transactions on Networking, 2017, 25(2): 1206-1219.

[10] BURAGOHAIN C, MEDHI N. FlowTrApp: an SDN based architecture for DDoS attack detection and mitigation in data centers [C]// Proceedings of the 2016 International Conference on Signal Processing and Integrated Networks. Piscataway, NJ: IEEE, 2016: 519-524.

[11] 许名广,刘亚萍,邓文平.网络控制器OpenDaylight的研究与分析[J].计算机科学,2015,42(z1):249-252.(XU M G, LIU Y P, DENG W P. Research and analysis of OpenDaylight controller [J]. Computer Science, 2015, 42(z1): 249-252.)

[12] KHATTAK Z K, AWAIS M, IQBAL A. Performance evaluation of OpenDaylight SDN controller [C]// Proceedings of the 2014 IEEE International Conference on Parallel and Distributed Systems. Piscataway, NJ: IEEE, 2014: 671-676.

[13] YUAN B, ZOU D, YU S, et al. Defending against flow table overloading attack in software-defined networks [J]. IEEE Transactions on Services Computing, 1939, PP(99): 1-1.

[14] 闫鲁生.OpenDayLight北向接口技术及其应用[J].指挥信息系统与技术,2015,6(5):74-78.(YAN L S. Implementation of northbound interface technology on OpenDayLight platform [J]. Command Information System and Technology, 2015, 6(5): 74-78.)

[15] 张俊.基于Mininet和OpenDayLight的SDN构建[J].无线互联科技,2015(18):5-7.(ZHANG J. Construction of software defined network based on the Mininet and OpenDayLight [J]. Wireless Internet Technology, 2015(18): 5-7.)

This work is partially supported by the National Basic Research Program (973 Program) of China (2013CB329100), the National High Technology Research and Development Program (863 Program) of China (2015AA016103).

WURuohao, born in 1993, M. S. candidate. His research interests include next generation Internet, software defined networking, network security.

DONGPing, born in 1979, Ph. D., associate professor. His research interests include next generation Internet, information network, network security.

ZHENGTao, born in 1983, Ph. D., lecturer. His research interests include next generation Internet, information network, network security.

猜你喜欢
攻击者端口控制器
基于贝叶斯博弈的防御资源调配模型研究
工商业IC卡控制器改造为物联网控制器实践
一种有源二端口网络参数计算方法
一种端口故障的解决方案
PLC可编程控制器相关外置的选择计算研究
多按键情况下,单片机端口不足的解决方法
现有网络架构及迁移方案
正面迎接批判
正面迎接批判
模糊PID控制器设计及MATLAB仿真