USB接口监控系统的研究与实现

2011-04-23 12:11陈贤敏浙江工贸职业技术学院信息传媒学院浙江温州325003
长江大学学报(自科版) 2011年7期
关键词:服务端局域网端口

陈贤敏 (浙江工贸职业技术学院信息传媒学院,浙江温州325003)

通用串行总线接口 (Universal Serial BUS,USB)是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。USB接口支持设备的即插即用及热插拔功能,特别在PC个人机上的广泛使用,给用户带来方便的同时,也带来诸多的不安全因素。对于学校机房来说,学生U盘的使用是计算机病毒传播的主要原因,特别是网络病毒会导致整个机房都卡死[1-4]。因此关于USB的端口的使用,成为管理员的首要解决的问题。但解决起来总不是特别顺手,总有些问题存在。目前,人们解决USB端口问题的常用方法主要有以下几种:①在BIOS设置中禁用USB端口[5-6],现在主机可以分别禁止前端口和后端口,但是现在很多品牌机为了省料,只提供USB端口,有的连键盘和鼠标都不能用了。②使用注册表设置隐藏盘[7],但这种方法只对最一般的学生有用。③用USB驱动程序进行限制[8]。

为此,笔者综合各种用户的需求,开发设计了一套USB接口监控基于C(客户端)/S(服务端)模式系统。

1 局域网拓扑图

图1给出了学校一般机房典型局域网框架。

1)学生组端 即局域网中的计算机,也就是被监控端。驻留后台监控程序检测到USB端口变化时,会做出判断是不是存储类设备,若是,立即发送消息给服务端,请求做出处理。被监控端除了发送消息外,还要接教师端的指令,以满足实时环境要求。

2)教师端 也称监控端,他除了接收被监控端的消息外,还可以向被监控端发送命令,如使被监控端允许使用USB端口等。

图1 系统局域网拓扑图

3)服务器 (服务监控端) 主要作用是存储数据和转发数据。当学生机处于开机状态时,被监控端将学生当前的信息传送给服务端,服务端又把信息传给教师端的监控平台上。当学生组端向教师端发出命令请求,也同时给服务监控端发送。教师端做出响应,把指令发送给学生组端,同时也给服务监控端发送数据。服务端还要向系统管理员提供某机房学生端的状况,以及学生端跟教室端互相交流的数据流命令。因此,在系统管理员和服务监控端采用B(浏览器)/S(服务器)架构,方便系统管理员在整个局域网中随时查看状态信息,了解实时情况。

2 系统模块设计

1)学生组端USB监控端模块 学生组端USB监控模块结构从2方面来设计:①隐藏驻留程序。②接收模块和发送模块。接收教师端指令,发送本机的机房号、IP地址和USB使用状况给教师端和服务监控端。

2)教师端监控程序模块 教师端监控程序模块结构从以下2个方面设计:①主界面设计。从界面上直观显示每个学生组端USB状况,主要按钮命令明显。当学生组端向教师端请求时,应该有明显的提示方式 (包括声音)。②接收模块和发送模块。接收学生组端请求指令,向学生组端发送指令并向服务监控端更新数据。

3)USB服务监控端模块结构 服务监控端既要存储数据,又要提供WEB服务,供系统管理员查询。因此服务监控端要从3个方面设计程序:①数据库的设计。数据库设计,一是要考虑日志功能,主要记录学生组端和教师组端的通信指令及状态;二是要记录每个机房每个上课时间段的当前使用状况。②网站的编程。③服务端接收模块和发送模块的编程,接收学生组端和教师端的数据更新。

3 系统实现

1)学生组端的程序设计的关键代码——捕获USB设备 学生组端的USB监控程序对USB端口事件的捕获主是通过WM_DEVICECHANGE消息得到的,当设备被插入WINDOWS会向每个窗体发送WM_DEVICECHANGE消息,当消息的wParam值等于DBT_DEVICEARRIVAL时,表示Media设备被插入并且已经可用。以下是重写函数的框架:

这个结构体仅仅是一个 “头”(HDR),其后还有附加数据,dbch_size表示结构体实例的字节数,当其中的dbch_devicetype字段值等于DBT_DEVTYP_VOLUME时,表示当前设备是逻辑驱动器,且lParam实际上指向的应该是DEV_BROADCAST_VOLUME结构体实例,DEV_BROADCAST_VOLUME结构体原形如下:

所以,只需要在程序中捕捉WM_DEVICECHANGE消息,然后根据具体情况去处理即可。

2)Windows Sockets网络代码 对于使用windows Sockets来说,System.net以及System.net.sockets是2个重要的命名空间。通常引用system.net空间命名 (编程偏向于高程,例如上载或下载)以及http和其他协议进行Web的请示。System.net.sockets空间命名主要包含的类通常与较低程的通信操作有关,特别适用于Sockets和TCP/IP之类的协议。

在.net框架中,System.net.sockets空间命名为实现需要开发控制网络访问的编程人员提供了windows Sockets接口的托管,如TCP和UDP的编程连接。而networkstream类则提供了用于网络访问基础数据流,如常见的Telnet、Email、Http等,虽然其通讯协议定义不同,但最基本的通信方式都采用Socket方式。

在建立服务器和客服务机之前,通常先要创建Scoket对象实例,这样就可以使用Socket类的构造方法来实现的Scoket的编程:

在上述构造类函数中,addressFamily参数指定了Socket所使用的寻址方式,socketType参数指定Socket所使用的类型,protocolType参数指定Socket所使用的哪种协议。使用该构造函数为开发人员提供便利的接口。下面给出该程序的主要代码:

3)使用UDP消息传递机制 为了提高网络通信效率,程序系统内部之间的通信采用UPD消息传递机制。内部消息传递过程流程如图2所示。当用户插入USB设备时,学生组端的监控程序马上指向判断允许位标志,如不允许,立即向教师端请求,并向服务监控端更新数据。教师端接收到请求,会做出判断,是和否,并同时向服务端更新数据。当学生组端收到教师端发送的指令,进行判别,如允许就启用,反之屏蔽USB端口,同时向服务监控端发送当前状态,更新数据。

图2 系统内部UDP传信息传递流程图

4 结 语

分析了实际工作中所遇到的问题,并提出了以C/S模式设计 USB接口监控系统的方案。目前,USB接口监控系统已试用于学校机房局域网内,效果良好。

[1]李欣,侯松霞.内网安全防御系统的研究 [J].计算机应用,2007,27:245-249.

[2]罗砚希,高艳军,张权.内部网络移动存储介质安全管理系统设计 [J].凯里学院学报,2007,25(6):61-63.

[4]何黎明,方风波.企业内网安全系统的构建 [J].长江大学学报 (自然科学版),2008,5(3):N213-214.

[5]胡红云,胡静,黄晨,等.内网信息监控系统的设计与实现[J].计算机工程与应用,2006,34(1):147-149.

[6]胡甜,杨莎.局域网环境下USB接口监控系统的设计与实现[J].软件导刊,2009,8(4):126-127.

[7]邱启荣,陈羽中,郭文忠,等.基于USB安全锁的内网安全监控系统设计 [J].福州大学学报 (自然科学版),2010,38(3):383-386.

[8]罗韬.USB存储设备访问控制的设计与实现 [J].信息化研究,2009,35(5):23-25.

猜你喜欢
服务端局域网端口
一种端口故障的解决方案
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
新时期《移动Web服务端开发》课程教学改革的研究
基于802.1Q协议的虚拟局域网技术研究与实现
端口阻塞与优先级
在Windows Server 2008上创建应用
局域网性能的优化
8端口IO-Link参考设计套件加快开发速度
卫星三端口DC-DC变换器技术综述