□林 梅
( 山西廣播電視大學,山西 太原 030027)
計算機技術和網(wǎng)絡技術日新月異, 網(wǎng)絡已經(jīng)成為人們生活、工作中不可缺少的一部分,給人們帶來了很大的便利,人們可以通過網(wǎng)絡獲得自己所需要的信息,但網(wǎng)絡是一把雙刃劍,帶來方便的同時也帶來了不利的一面,在上課的過程中發(fā)現(xiàn)學生上網(wǎng)聊天和玩游戲,嚴重影響了上課質(zhì)量。所以需要一款監(jiān)控學生上網(wǎng)過程的軟件?;诰钟蚓W(wǎng)技術的遠程監(jiān)控系統(tǒng)憑借其實用的獨特優(yōu)勢,受到家庭自動化、辦公自動化、遠程教學以及生產(chǎn)過程自動化等各個領域的青睞,對其進行研究具有較大意義。
有了局域網(wǎng)監(jiān)控系統(tǒng),學校網(wǎng)絡管理員只需要打開本地計算機上的監(jiān)控端程序,就可以知道學生在上課時的情況,有效地約束了學生上課時的行為。監(jiān)控軟件不僅僅可以監(jiān)控學生的上課情況,也可以適當?shù)剡\用于學校的網(wǎng)管工作。作為一名網(wǎng)絡管理員,經(jīng)常需要處理一些網(wǎng)絡故障,這些故障有些是設備問題、線路問題或者是網(wǎng)通方面的問題,但有些時候是人們使用計算機不當所造成的。遇到過這樣的問題,一名老師說自己的計算機突然之間不能上網(wǎng)了,網(wǎng)絡管理員剛剛到達這位老師的辦公室,發(fā)現(xiàn)其他幾位同事的計算機也不能上網(wǎng)了,最后找到原因是最初不能上網(wǎng)的那位同事的計算機受到了ARP病毒的攻擊,以致影響到同一網(wǎng)段內(nèi)的計算機。這位老師的計算機感染的ARP病毒是因為其上網(wǎng)炒股。如果能對大家上班過程中使用計算機的過程進行監(jiān)控,限制一些特殊網(wǎng)站的登錄,約束大家的行為,就可以很好地避免受到各種各樣病毒的攻擊,避免一些網(wǎng)絡故障的出現(xiàn),如果發(fā)現(xiàn)問題,也可以及時地采取正確的措施,解決故障,給大家維護一個安全、健康、穩(wěn)定的上網(wǎng)工作環(huán)境。
網(wǎng)絡監(jiān)控的基本要求是實時、快速和高效,這要靠信息傳輸、監(jiān)控、管理和一體化的集成。不過這都是在監(jiān)控實現(xiàn)的前提下,網(wǎng)絡監(jiān)控實現(xiàn)要靠網(wǎng)絡技術、控制技術和圖像處理技術。下面我們首先看看局域網(wǎng)的特點,局域網(wǎng)是一種覆蓋一棟樓或者幾棟樓、一個校園或者一個單位等小范圍的計算機網(wǎng)絡。局域網(wǎng)結構簡單、數(shù)據(jù)傳輸率高、可行性高、實際投資少且技術更新發(fā)展迅速,具有對不同速率的適應能力,低速或高速設備均能接入;擁有較好的兼容性和互操作性,支持同軸電纜、雙絞線、光纖等多種傳輸介質(zhì)。
我國對于遠程監(jiān)控技術也進行了積極的研究。例如“網(wǎng)路崗”,它是目前國內(nèi)領先的上網(wǎng)監(jiān)管軟件,只需要通過一臺電腦即可監(jiān)控整個網(wǎng)絡內(nèi)計算機的活動,可以實現(xiàn)郵件監(jiān)控、聊天監(jiān)控、下載控制、傳輸文件監(jiān)控、屏幕監(jiān)控、系統(tǒng)信息監(jiān)控、進程監(jiān)控、上網(wǎng)流量監(jiān)控管理、報表統(tǒng)計等多項功能。還有“第三只眼”,也是一個非常優(yōu)秀的監(jiān)控軟件,可以實現(xiàn)瀏覽網(wǎng)站監(jiān)控、郵件監(jiān)控、聊天監(jiān)控、屏幕監(jiān)控、文件拷貝帶走報警、資料外泄報警以及軟硬件更動報警。
我們已經(jīng)擁有了這么多優(yōu)秀的監(jiān)控軟件 ,為什么還要進行研究呢,這些軟件功能豐富,對于我們校內(nèi)的應用來說有點浪費,所以我們需要一款適合網(wǎng)絡管理員工作的軟件。我們對學生的上課過程進行監(jiān)控,首先是要獲得學生上課時的電腦屏幕,如果發(fā)現(xiàn)學生上網(wǎng)或者玩游戲,則能夠遠程關閉其網(wǎng)頁或者游戲界面,這就需要能夠控制其鼠標或者鍵盤,如果無法關閉其界面,在必要的時候能夠實現(xiàn)關閉學生計算機,然后重啟。通過這些操作督促學生認真上課。與此同時,此軟件要具備不被學生發(fā)現(xiàn)的功能,不然會影響學生的上課積極性,這就需要系統(tǒng)自動運行與進程隱藏功能。
監(jiān)控系統(tǒng)要求監(jiān)控端能有效的監(jiān)視被控端,并且接口簡單,便于操作,能夠適應不同的被控端,模塊功能清晰明確,系統(tǒng)結構層次化。想要實現(xiàn)以上功能與特性的局域網(wǎng)監(jiān)控系統(tǒng),需要研究系統(tǒng)的架構模式、所采用的通訊協(xié)議以及編程技術這些問題。首先要研究此系統(tǒng)的整體構架模式,此系統(tǒng)預計采用客戶機/服務器(C/S)模式。
C/S模式經(jīng)過與其它模式的比較和分析,發(fā)現(xiàn)此模式有一些比較突出的優(yōu)點:交互性好;能夠提供數(shù)據(jù)和服務的無縫集成;適應日益擴展的應用需求;非對等相互作用;速度快;良好的開放性和易擴充性;可以利用服務器對局域網(wǎng)的客戶機進行全面監(jiān)控。
開發(fā)的過程需要一個功能強大的開發(fā)工具,Visual C++無疑是最好的選擇,它已經(jīng)成為專業(yè)程序員進行軟件開發(fā)的首選工具。這是因為它不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境。Visual C++ 6.0是一個全面的應用程序開發(fā)環(huán)境。自Visual C++1.0出現(xiàn)后,其新版本不斷出現(xiàn),現(xiàn)在使用最多的是Visual C++ 6.0,實現(xiàn)的過程中還需要用到MFC(Microsoft Foundation Classes),它是一個類庫,它以C++類的形式封裝了 Windows的API(接口函數(shù)),并且包含一個應用程序框架,同時也包含很多Windows句柄封裝類和大量Windows的內(nèi)建控件和組件的封裝類。這大大減少了開發(fā)人員的工作量。
系統(tǒng)中數(shù)據(jù)的傳輸運用的傳輸協(xié)議是TCP/IP,TCP/IP協(xié)議是一個協(xié)議族,這個協(xié)議是網(wǎng)絡中最基本,也是最主要的協(xié)議。TCP/IP 規(guī)定了計算機以何種方式連入因特網(wǎng),以及數(shù)據(jù)以何種方式在它們之間進行傳輸。它是分層體系結構。高層為傳輸控制協(xié)議,可以實現(xiàn)聚集信息或把文件拆分成更小的數(shù)據(jù)包。低層是網(wǎng)際協(xié)議,負責處理每個數(shù)據(jù)包的地址部分,使這些數(shù)據(jù)包正確地到達目的地。
還有一個關鍵技術,那就是Winsocket網(wǎng)絡編程技術,所謂socket也被稱為“套接字”,套接字實現(xiàn)了應用程序向網(wǎng)絡發(fā)出請求,應答網(wǎng)絡請求的功能。套接字有個很大的優(yōu)點那就是不會因為在服務器端還是在客戶端而產(chǎn)生不同級別,對于網(wǎng)絡連接來說,套接字是平等的,不管是Socket還是ServerSocket都是通過Socketimpl類及其子類完成的。
目前使用的socket提供三種套接字,最主要的是流式套接字,在數(shù)據(jù)傳輸?shù)倪^程中無差錯、無重復地發(fā)送。在使用socket的過程中從建立連接到關閉,使用了以下幾個函數(shù):
a)創(chuàng)建套接字socket( ),系統(tǒng)向應用程序提供套接字;b)指定本地地址bind( ),將套接字地址與所創(chuàng)建的套接字聯(lián)系起來;c)建立套接字連接 connect( )與 accept( );d)監(jiān)聽連接listen( );e)數(shù)據(jù)傳輸send( )與recv( );f)關閉套接字closesocket( ),釋放分配給套接字的資源。
如果想要實現(xiàn)關機與重啟操作可以利用socket,當控制端和被控端的socket連接起來后也就形成了一個通信通路,控制端發(fā)送一個命令,被控端通過socket的receivetext函數(shù)將命令從連接中接收出來放到字符串變量S中,再由S中不同的字符串來判斷響應哪個事件,然后通過調(diào)用不同的API函數(shù)來實現(xiàn)以下控制功能:(1)關機:當被控端接收到S中的字符串為‘closewindow’時,則關機,(2)重啟:當客戶端接收到S中的字符串為‘reswindows’時,則重啟。有了關鍵技術,那么結構應該怎么安排呢,希望能夠考慮到兩方面,一方面是減輕被控端的負荷,另一方面是安全。拓撲結構如圖1。由圖可以看出監(jiān)控系統(tǒng)有被控端和監(jiān)控端兩部分。模塊獨立,便于開發(fā),功能易于實現(xiàn),監(jiān)控端和被控端任意一臺計算機之間的通信相互獨立。
圖1局域網(wǎng)監(jiān)控系統(tǒng)結構圖
根據(jù)我們系統(tǒng)功能的需求分析,設計出各個功能模塊,系統(tǒng)整體模塊劃分圖如圖2。首先分為服務端設計與客戶端設計,然后再對客戶端與服務端功能模塊進行細化,單獨開發(fā)每一個模塊并分別進行調(diào)試,縮短了開發(fā)周期。
監(jiān)控端功能模塊包括:界面模塊、數(shù)據(jù)通訊模塊、屏幕處理模塊。主要監(jiān)視被控端的屏幕情況,根據(jù)屏幕的顯示內(nèi)容進行合理的管理。被控端功能模塊包括:抓屏處理模塊、服務端鎖定模塊、鼠標監(jiān)視、鍵盤監(jiān)視、進程隱藏。主要進行遠程抓取客戶端直接查看屏幕,若發(fā)現(xiàn)非法使用,鎖定被控端或者遠程關閉被控端。
客戶端實現(xiàn)的原理是客戶端可以通過掃描或者直接輸入獲得被控端IP地址。這樣一來,管理者就可以知道,學生和工作人員正在利用計算機做什么,特殊的情況下可以遠程關閉他們的計算機。
為了更真實地符合管理中的實際情況,就需要被控端的屏幕同時顯示在監(jiān)控端,同步顯示可以在監(jiān)控端準確真實地反映出被控端的計算機屏幕。如果想要在監(jiān)控端顯示被控端的屏幕,需要一個顯示被控端傳回的屏幕圖像的子窗口, Createwindow函數(shù)可以幫我們實現(xiàn)這個功能。
被控端的設計目標與監(jiān)控端是相對應的,接收客戶端的命令,然后返回處理結果。為了不影響學生上課的積極性,運用windows系統(tǒng)啟動時自動運行服務端程序的方法。
自動運行之后,服務端程序運行在被控端的計算機上,需隱藏起來,為了能夠實現(xiàn)監(jiān)控探針所在主機的非法外聯(lián)行為,在任務管理器不會被用戶隨意的殺死。為了實現(xiàn)這個功能,需要兩個進程。最主要的是守候進程,實現(xiàn)的原理如下:
守候進程是一個系統(tǒng)服務。它有一個特性是系統(tǒng)級的服務在任務管理器里不會被用戶隨意殺死,并且可以創(chuàng)建一個隨系統(tǒng)一起啟動的守候進程。僅僅這樣是不夠的,因為任務管理器中有一項功能是殺死進程組,如果直接在這個進程里啟動工作進程,那么通過殺死進程組的功能就可以將兩個進程一起殺死,就起不到保護的作用??梢酝ㄟ^System這個接口函數(shù)來啟動工作進程,這個被函數(shù)啟動的進程被認為是屬于系統(tǒng)的進程,這樣一來,二者就不屬于同一個進程組,就可以不被殺死進程組。而且作為系統(tǒng)的進程還可以防止被用戶直接殺死。
我們還需要看看學生在上課的時候都對鍵盤進行了哪些操作,這就需要監(jiān)視鍵盤。鉤子機制是以往的鍵盤監(jiān)控程序中普遍的,來捕獲系統(tǒng)的擊鍵情況。這里將不使用鉤子機制進行鍵盤記錄,因為系統(tǒng)中一旦安裝了鉤子機制,系統(tǒng)會頻繁的使用鉤子函數(shù),這樣大大降低了系統(tǒng)效率。 因此,采用接口函數(shù)GetAsyncKeyState。該函數(shù)實質(zhì)上是直接偵測鍵盤的硬件中斷,這種方法比較高效。進行鍵盤記錄的原理是設置一個TextBox控件,用來緩存數(shù)據(jù),還需一個Timer控件。按鍵記錄結果是根據(jù)前臺窗口的變化而變化的,設置Timer控件的Interval屬性為1,每l毫秒接口函數(shù)GetAsyncKeyState對鍵盤進行一次徹底地檢查,被按下的鍵及時的放入緩存中,若被控端改變當前工作窗口,就把緩存中的數(shù)據(jù)送到監(jiān)控端。
函數(shù)原型如下:SHORT GetAyncKeystate(Int vKey) 。其中參數(shù)vKey用來定義虛擬鍵碼。此接口函數(shù)實質(zhì)上是直接偵測鍵盤的硬件中斷,所以它是在整個系統(tǒng)內(nèi)工作的,也就是無論當前工作前臺是什么,不影響記錄。這樣我們通過GetAsyncKeyState等API函數(shù)完成了對全部鍵盤按鍵的記錄,實現(xiàn)了沒有使用鉤子的想法。
想要監(jiān)視鼠標在屏幕上的位置,也就是得到鼠標在X方向和Y方向上的絕對坐標,mouse_event( )函數(shù)可以實現(xiàn)。函數(shù)monse_event()的原型如下:VOID mouse_event (DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,ULONG_PTR dwExtralnfo)。作用分別如下:dwFlags用來定義鼠標的移動和按鍵標志變量;dx用來定義鼠標沿屏幕X坐標軸的移動情況;dy用來定義鼠標沿屏幕Y坐標軸的移動情況;參數(shù)dwData,用來定義鼠標滾輪的運動的數(shù)量;參數(shù)dwExtralnfo表示應用程序定義的32位信息。
屏幕監(jiān)控的基本原理是對被控端主機的屏幕進行捕獲,經(jīng)過壓縮處理再傳遞到控制端。其中主要涉及到壓縮技術和圖像傳輸技術。屏幕監(jiān)控的關鍵在于如何將圖像質(zhì)量和傳輸效率結合起來,既能在監(jiān)控端有比較流暢的屏幕監(jiān)控,又能滿足監(jiān)控環(huán)境的網(wǎng)絡要求。
參考文獻:
[1]任建基.局域網(wǎng)資產(chǎn)管理系統(tǒng)的研究與實現(xiàn)[Z].大連理工大學碩士論文,2005.
[2]翟文學.基于C/S模式的局域網(wǎng)監(jiān)控系統(tǒng)的設計[J].硅谷,2009,(11).
[3]厲穎.基于企業(yè)局域網(wǎng)的計算機管理系統(tǒng)的研究[J].科技風,2009,(8).