關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 網絡考試系統中防止U盤作弊方法研究

        網絡考試系統中防止U盤作弊方法研究

        作者: 時間:2011-05-10 來源:網絡 收藏

        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);
        4 系統自身保護及運行
        由于考生在過程中的現象時有發生,因此監考和考生是一對不可避免的矛盾,相互存在著一
        定斗智斗勇現象。系統在一定程度上也充當了監考的角色,因此它就需要具有一定的自身保護能力,而不被考生終止運行。系統采用如下幾種保護:
        (1)用戶終止保護
          系統被設計成一個后臺運行系統,運行后不顯示任何窗體,只在系統的托盤中顯示一個圖標,而且不提供右擊彈出菜單和雙擊顯示主程序窗體的功能。從而使考生不能直接終止本程序,實現終止保護。
          (2)進程保護
          采用了進程保護技術,使得在Windows的任務管理器中無法終止本進程。考生在使用U盤前先終止本進程。
        (3)卸載保護
          系統在第一次運行時會自動在添加/刪除程序列表中找到自己的列表項,并將其隱藏起來,這樣本系統就無法從Windows中卸載。
        系統目前已經運行在本校進行的“試點高校教育部分基礎課程統一”的客戶端上,取得了良好的效果。該系統不但能運行在客戶端上,也可以運行于各種無紙化考試系統的客戶端上。系統目前還有一些不足之處需要改進,如目前只是單機版,過程狀態數據沒有記錄,不利于監考老師的集中管理,還有待于升級成版。
        參考文獻
        [1] 李英偉.USB2.0原理與工程開發(第2版)[M].北京:國防工業出版社,2007
        [2] 陳啟美,丁傳鎖.計算機USB接口技術[M]. 南京:南京大學出版社,2003.
        [3] 薛園園. USB應用開發技術大全[M].北京: 人民郵電出版社,2007.
        [4] 肖踞雄,翁鐵成. USB技術及應用設計[M].北京:清華大學出版社,2003.

        本文引用地址:http://www.104case.com/article/162102.htm

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福海县| 南江县| 丹江口市| 遵化市| 太仆寺旗| 海晏县| 长阳| 阿克苏市| 临沧市| 司法| 青阳县| 自贡市| 新余市| 新津县| 贡觉县| 沅陵县| 古浪县| 织金县| 文昌市| 柘城县| 乌拉特中旗| 东明县| 仪征市| 壶关县| 什邡市| 通辽市| 台江县| 林甸县| 沙雅县| 南昌县| 武乡县| 连城县| 高陵县| 张家口市| 蓬溪县| 万全县| 乐业县| 米脂县| 漾濞| 利津县| 凤凰县|