摘 要:摘要:随着高校语音室规模的不断扩展,为了增强的对计算机使用状况的监控,确保学生上课期间不会使用语音室计算机进行与学习无关的活动,需要使用语音室监控系统对学生计算机使用状况进行监控,本文也主要对进程监控以及屏幕监控等语音室监控系统中的关键技术进行研究。
关键词:关键字:语音室;监控系统;进程监控;屏幕监控
中图分类号:TP302 文献标识码:A 文章编号:
随着我国高等教育的不断发展,高校的不断扩招,导致高校语音室规模也不断扩大,为了便于对学生使用语音室计算机进行监督,本文主要针对语音室监控系统的学生端计算机进程监控,以及学生端计算机屏幕监控等关键技术进行研究。
1. 语音室系统关键功能设计
1.1 进程监控管理设计
(1)进程黑名单设计
在语音室监控系统中,进程黑名单的设计可以极大的减轻管理员的工作量,有利于减轻管理员的工作负担,系统中进程黑名单的运作流程如下:
①收集学生用机上运行的所有运行的进程信息;
②循环判断每个进程是否在黑名单中,若当前检测的进程在进程黑名单中,则远程消息提醒学生停止正在运行的与学习无关的活动;
③若与黑名单的某个进程匹配度很高,那么系统提醒系统管理员,通过管理员的进行进一步的屏幕监控。
图1 系统进程黑名单模块设计时序图
(2)进程管理
进程管理的流程如下:
①监控端与被监控端进行Socket连接;
②监控端获取被监控端的进程列表;
③监控端发现被监控端有可疑进程,则将被监控端可疑的进程信息发送给被监控端;
④被监控端程序根据监控端发送的可以进程信息,关闭进程。
图2 进程管理时序图
1.2 屏幕监控管理设计
在高校语音室管理系统中,屏幕监控管理是非常重要的一个功能。通过屏幕监控,监控端可以完全控制被监控端的操作,因此,实质上对进程的管理也可以使用远程屏幕监控,然后操作被监控端本地关闭进程。远程屏幕监控功能的设计流程如下:
(1)监控端与被监控端建立Socket连接;
(2)当鼠标停留在管理软件工作区间时,将监控端的鼠标移动、鼠标左键点击、鼠标左键双击、鼠标右键点击、键盘按下、键盘弹起等操作都用Socket发送到被监控端;
(3)被监控端响应监控端发送过来的鼠标操作和键盘操作。
图3 屏幕监控功能设计时序图
2. 语音室监控系统关键技术实现
2.1 进程监控管理实现
在高校语音室管理系统中,与进程监控有关的Socket使用5555端口。在进程监控功能实现中:首先利用 VC 6.0类库中的GetWindowThreadProcessId函数获取创建窗口的进程ID,
(1)请求进程列表
当被监控端开机时,被监控端将自己的IP发送给监控端,让监控端知道被监控端已经做好了被监控的准备,当有至少有一个被监控端工作时,服务器设置一个定时器,定时向所有工作的被监控端发送一个请求进程列表的消息:被监控端在接收到这个消息之后,将自己的进程列表消息发送给监控端,具体实现如下:
①被监控端在将自己的IP地址发送给监控端之后,创建一个Socket等待监控端的进程列表请求Socket;
srvAdress.sin_port=htons(5555);
②监控端端发送进程列表请求;
send(clientSoc,”getPR”+STR_GET_PROCESSES, 23,0);
③被监控端获取自身进程列表,并通过Socket发送给监控端;
hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
BOOL bNext=::Process32First(hProcessSnap,&p32);
while(bNext){
....
bNext=::Process32Next(hProcSnap,&p32);
}
④与进程黑名单进行匹配
系统中的进程黑名单模块设计的主要目的在于降低管理员的工作量,提高管理员的工作效率,让传统的“人检”逐步转变成“机检”。其实现的主要代码如下:
监控端将可以进程句柄发送给被监控端;
CString str=”killP”+hKillProcess
send(clientSoc,str ,strlen(str)+1,0);
被监控端根据服务器端提供的进程句柄,关闭可疑进程。
CloseHandle (hProcSnap);
//请求学生端进程列表
private void queryProcesses(CArray* processes,CString ip)
{
CArray <CString,CString&> m_blacktable;
getBlackTable(m_blacktable);
for(int i=0;i<processes->GetSize();i++)
{
CString process=(CString)processes->GetAt(i);
for(int j=0;j<m_blacktable->GetSize();j++)
{
CString blackProcess=m_blacktable->GetAt(j);
if(blackProcess==process)
{
killProcess(process);
remoteWarning(ip,“请终止与学习无关的活动!”);
warning(ip,process);
warningManager()//发出蜂鸣声报警
}
}
}
}
如果通过进程黑名单的对比,可以确认学生端的某个进程与黑名单的某个进程匹配,那么在服务器端,会用醒目的红字提示管理员,并且用蜂鸣声来提醒管理员。
2.2 屏幕监控管理实现
当进程管理碰到可疑程序,进程管理不能确定该进程是否必须被关闭时,系统会用蜂鸣声提醒管理员用屏幕监控对该学生进行屏幕监控,管理员也可以利用屏幕监控对重点关注位置的计算机进行监控。
屏幕监控实现中首先由监控端向被监控端发出连接请求,连接之后,在被监控端设置一个定时器,每隔一段时间(比如:500ms)向被监控端发送截屏图片,而监控端将鼠标/键盘操作发送给被监控端响应。其中屏幕监控的流程如图4所示:
图4 屏幕监控时序图
屏幕监控的实现步骤如下:
①监控端向被监控端发送Socket连接请求,连接端口号为5556;
②连接建立后,监控端接收被监控端发送的图片并显示,将监控端的鼠标/键盘操作发送给被监控端;
CString str;
str.Format(“mouse%d;%d;%d;%d”, dwFlages,dx,dy,dwData);
③被监控端将Socket传输的字符串转换成dwFalges.dx,dy,dwData参数之后使用PostMessage函数抛出相应的鼠标消息。或者使用SetCursor函数模拟鼠标移动消息。
3. 结束语
使用语音室监控系统,不仅可以有效的对语音室内学生计算机的使用进行监控,同时还降低了由于语音室管理员对计算机监控的工作量,可以在语音室规模不断扩展的情况下,可以降低计算机检控官的质量而不增加语音室管理员的工作量。
参考文献:
.北京:清华大学出版社,2009.