文章來源:http://www.autooo.net/autooo/elec/tech/2011-05-06/70020.html | 回到首頁
網絡考試系統中防止U盤作弊方法研究
作者: 發布時間:2011-05-06 09:41:10 來源: 繁體版 訪問數: 5
摘 要: 目前越來越多的高校、教學培訓機構和各種社會考試,采用了網絡考試、網絡在線考試等網絡考試形式的無紙化考試。然而許多考試系統自身尚不具備
無紙化考試系統的模式通常有單機版模式、C/S模式和B/S模式三種,無認哪種模式均要有客戶端,而考生必須在客戶端上完成其考試內容。目前USB存儲設備特別是U盤的存儲容量大、存取速度快、體積小、價格低廉,普及程度也越來越高,在考試中使用U盤作弊現象時有發生。由于考生在考試過程中使用U盤的隱蔽性極高,監考老師很難發現。目前大多數考試系統的客戶端并沒有對USB端口進行管理的功能。“網絡考試客戶端USB端口監視系統”(后文簡稱系統)就是實現在考試過程對考試客戶端的USB端口進行全程監視,一旦客戶端有USB設備接入,系統即刻鎖屏、封鎖鍵盤,發出使用USB設備的提示警告。本系統經過我校進行的“試點高校網絡教育部分基礎課程統一考試”多次使用實驗表明,該系統在考試過程中能有效地監控USB端口,杜絕了考生使用U盤的現象,從而保證考試的公正、公平和權威性。 2.2 USB端口實時監視系統組成結構 2.3 密碼維護系統組成結構 密碼修改提供給管理員修改維護解鎖密碼。遺忘解鎖密碼時,先使用初始密碼功能將解鎖密碼設置為初始密碼,然后再修改成指定密碼。 系統運行后,模塊即進入工作狀態,為了盡量少占用系統資源,模塊以中斷方式獲取機器USB端口狀態變化,一旦發現端口接入USB移動存儲設備隨即進行處理。 3.2 鎖屏設計 模塊被調用后,首先隱藏任務欄,關閉開始菜單,然后以白色、無邊框、無標題欄、無關窗體控制按鈕的窗體形式顯示在所有窗體的最前面,遮蓋住Windows的任務欄,并在窗體中央顯示“正在使用USB設備... 系統自鎖。請與監考老師聯系”字樣,提示考生由于插入了U盤從而系統自鎖了。 4 系統自身保護及運行
關鍵詞: 網絡考試; 客戶端; U盤作弊; USB端口監視
1 系統功能要求
(1)系統要能識別從計算機任何一個USB端口接入的移動存儲設備,如U盤等設備。對于非存儲類的USB設備,如:USB接口的打印機、掃描儀等,不能誤判作移動存儲設備。
(2)鎖屏。一旦有U盤接入,系統能立即響應,并做出相應的處理。用一個無標題、無邊框、無關閉按鈕、最大化顯示的窗體覆蓋在所有窗體和任務欄的前面實現鎖屏。
(3)封鎖鍵盤。封鎖鍵盤就是使用戶鍵盤上的鍵失效,尤其是一些特殊功能組合鍵,如:Ctrl-Alt-Delete、Alt-Tab、Alt-Esc、Alt-F4、Windows-Key。
(4)關閉任務欄和開始菜單。
(5)封鎖狀態解鎖。系統有提供給系統管理員或監考人員解鎖的功能,解鎖時要輸入特定的解鎖密碼。
(6)解鎖密碼管理功能。系統提供由系統管理員使用的密碼維護、修改、重置和忘記密碼的處理功能。
2 系統總體設計
2.1 系統組成
系統主要由USB端口監視系統和密碼維護系統兩部分組成。其組成結構如圖1所示。
USB端口實時監視系統由核心模塊、USB端口監視模塊、屏幕、鍵盤加鎖模塊、鍵盤解鎖模塊、記錄/讀取系統USB使用狀態模塊、密碼解鎖處理模塊和重啟處理模塊組成。其組織結構如圖2所示。
密碼維護系統由密碼修改和使用初始密碼兩部分組成。如圖3所示。
該系統為一個相對獨立的子系統,由系統管理員掌管使用。
3 USB端口監視系統設計
為了不和考試系統爭搶資源,系統被設計成后臺運行方式,以中斷方式獲取機器USB端口狀態變化。采用進程保護技術進行系統自我保護,使系統在運行時不被考生強行終止,提高了系統的安全性。當考生在考試過程中插入U盤時,系統自動彈出鎖屏窗體,并在窗體中顯示考生已使用U盤的提示信息。鎖住鍵盤,記錄U盤的狀態信息,即使考生撥掉U盤,系統自鎖也不撤消。若考生用RESET開關強行重啟機器或強行關機后再開機,當Windows系統啟動完成后,系統仍然處于自鎖狀態。只有當監考老師用解鎖命令和解鎖密碼解鎖后,系統才恢復到正常狀態。
3.1 USB端口監視模塊設計
USB端口監視模塊是系統的核心模塊之一,也是系統的重要模塊。設計流程如圖4所示。
當發現端口有USB設備接入后,隨即讀取此設備的設備類型特征碼。根據其設備類型特征碼判斷此設備是否是USB移動存儲設備。如果是移動存儲設備,則調用其后續模塊。否則,不做處理。
鎖屏模塊是使系統呈現在考生面前的模塊。設計流程如圖5所示。
3.3 鎖鍵盤設計
鎖鍵盤模塊的執行結果呈現在考生面前的是鍵盤處于失效。本模塊被調用后,將封鎖鍵盤上的所有字母鍵、功能鍵和組合鍵,唯一開放的鍵是F12鍵,是輸入解鎖密碼的入口鍵。
其功能是:
(1)封鎖鍵盤上的所有單鍵,只留F12鍵。
(2)封鎖Ctrl-Alt-Delete組合鍵,禁止打開Windows任務管理器。
(3)封鎖Windows-Key(微軟鍵),禁止打開開始菜單。
(4)封鎖Alt-F4組合鍵,禁止用此鍵關閉本程序。
(5)封鎖Alt-Tab、Alt-Esc組合鍵,禁止切換任務窗體。
在封鎖鍵盤模塊設計中使用到了鉤子(Hook)技術。系統使用鍵盤鉤子截獲鍵盤消息,在鉤子函數中判斷鍵盤消息中的鍵是否需要屏蔽鍵,如果需要屏蔽鍵,則不將此消息發送到窗體,從而達到屏蔽鍵盤的目的。由于系統需要屏蔽的鍵中有Windows-Key,而使用普通的鍵盤鉤子不能捕捉到Windows-Key鍵。所以系統使用了底層鍵盤鉤子,即全局鍵盤鉤子。
安裝鍵盤鉤子:
[DllImport("user32", EntryPoint =
"SetWindowsHookExA", CharSet = CharSet.Ansi, SetLastError = true,
ExactSpelling = true)]
public static extern int SetWindowsHookEx(int
idHook, // 鉤子的類型,即其處理的消息類型。
GlobalKeyboardProcDelegate lpfn, // 如果dwThreadId參數為0
或是一個由別的進程創建的線程的標識,lpfn必須指向DLL中的鉤子子程。
int hMod, // 應用程序實例的句柄。標識包含lpfn所指的子程的DLL。
int dwThreadId);
其中:GlobalKeyboardProcDelegate是處理鍵盤鉤子截獲的鍵盤消息的代理函數。設計如下:
public int GlobalKeyboardProc(int nCode, int wParam, ref
KBDLLHOOKSTRUCT lParam)
{
bool keyEven = false;
switch (wParam)
{
case WM_KEYDOWN:
case WM_KEYUP:
case
WM_SYSKEYDOWN:
case
WM_SYSKEYUP:
keyEven =
(((lParam.vkCode == 0x09) && (lParam.
flags == 0x20)) | // Alt+Tab
((lParam.vkCode
== 0x1B) && (lParam.flags ==
0x20)) | //
Alt+Esc
((lParam.vkCode
== 0x1B) && (lParam.flags ==
0x00)) | //
Ctrl+Esc
((lParam.vkCode
== 0x5B) && (lParam.flags ==
0x01)) | // Left
Windows Key
((lParam.vkCode
== 0x5C) && (lParam.flags ==
0x01)) | //
Right Windows Key
((lParam.vkCode
== 0x73) && (lParam.flags ==
0x20)) | //
Alt+F4
);
break;
}
if (keyEven == true)
{
return 1;
}
else
{
return CallNextHookEx(0, nCode,
wParam, ref lParam);
}
}
卸載鍵盤鉤子:
[DllImport("user32",
EntryPoint = "UnhookWindowsHookEx", CharSet = CharSet.Ansi,
SetLastError = true, ExactSpelling = true)]
public static extern int UnhookWindowsHookEx(int
hHook);
轉到下一個鉤子:
[DllImport("user32",EntryPoint="CallNextHookEx",
CharSet=
CharSet.Ansi, SetLastError=true,ExactSpelling= true)]
public static extern int CallNextHookEx(int hHook, int
nCode, int wParam, ref KBDLLHOOKSTRUCT lParam);
由于考生在考試過程中的作弊現象時有發生,因此監考和作弊考生是一對不可避免的矛盾,相互存在著一
定斗智斗勇現象。系統在一定程度上也充當了監考的角色,因此它就需要具有一定的自身保護能力,而不被考生終止運行。系統采用如下幾種保護:
(1)用戶終止保護
系統被設計成一個后臺運行系統,運行后不顯示任何窗體,只在系統的托盤中顯示一個圖標,而且不提供右擊彈出菜單和雙擊顯示主程序窗體的功能。從而使考生不能直接終止本程序,實現終止保護。
(2)進程保護
采用了進程保護技術,使得在Windows的任務管理器中無法終止本進程。防止考生在使用U盤前先終止本進程。
(3)卸載保護
系統在第一次運行時會自動在添加/刪除程序列表中找到自己的列表項,并將其隱藏起來,這樣本系統就無法從Windows中卸載。
系統目前已經運行在本校進行的“試點高校網絡教育部分基礎課程統一考試”的客戶端上,取得了良好的效果。該系統不但能運行在網絡考試客戶端上,也可以運行于各種無紙化考試系統的客戶端上。系統目前還有一些不足之處需要改進,如目前只是單機版,過程狀態數據沒有記錄,不利于監考老師的集中管理,還有待于升級成網絡版。
參考文獻
[1] 李英偉.USB2.0原理與工程開發(第2版)[M].北京:國防工業出版社,2007
[2] 陳啟美,丁傳鎖.計算機USB接口技術[M]. 南京:南京大學出版社,2003.
[3] 薛園園. USB應用開發技術大全[M].北京: 人民郵電出版社,2007.
[4] 肖踞雄,翁鐵成. USB技術及應用設計[M].北京:清華大學出版社,2003.
(收稿日期:2010-10-21)