系統概述
該系統由兩個子系統組成:服務器端系統和客戶端(工作站)系統。服務器端系統安裝在網絡管理人員的計算機上,用于實施各種對聯網計算機的監控操作;客戶端系統安裝在每臺聯網的計算機上,它運行后以圖標的方式出現在系統任務欄的提示區中,不影響工作站的其他操作,只用于響應服務器端的監控命令,并根據服務的需要,及時采樣工作站的相應數據返回給服務器端。該系統的運行環境可以運行于Win98、Win95或WinNT、Win2000下。在系統的開發中,引入了WINSOCK通訊控件,除此之外,為較好地實現各項監控操作,還用到了幾個API函數。
系統功能
1、監控全部TCP連接:實時監控所有服務器端口的連接情況、及時對異常連接發出警告并提示用戶刪除異常連接;
2、屏幕監控:該功能允許服務器隨時把被監控工作站的屏幕畫面抓取到服務器中,網絡管理人員對相應工作站所進行的操作一目了然,若發現有非法操作即可采取發送警告或強制措施,強迫其停止相應操作;
3、對工作站進行鎖機、關機、限制鼠標活動等;
4、服務器和工作站之間的信息互送。
功能的實現
1、監控全部TCP連接
TCP/IP(Transmission Control Protocol/Internet Protocol:傳輸控制協議/互聯網協議)是一個包括TCP、IP、 UDP、ARP、RARP和ICMP等在內的網絡協議集。TCP/IP經常被稱為“將Internet綁定在一起的粘合劑”,它允許在空間上分離的多個信息網絡連接在一起形成一個巨大的虛擬網絡。TCP和UDP(用戶數據報協議)是兩個最常用的數據傳輸協議,它們都使用設置監聽端口的方法來完成數據傳輸。
在本文中討論TCP連接。通過使用TCP, Internet客戶機可以打開到另一個Internet客戶機的虛擬連接并傳送數據流。與UDP不同,TCP協議通過重傳丟失的數據報保證傳輸的可靠性。它也保證在接收端的應用程序按發送的順序將接收到的位和字節重新組裝起來以獲取完整的數據。
要獲得與服務器系統中全部有效的TCP連接,用到GetTcpTable這個API函數,它定義如下:
Private Declare Function GetTcpTable Lib "iphlpapi. dll" (ByRef pTcpTable As MIB_TCPTABLE, ByRef pdwSize As Long, ByVal bOrder As Long) As Long |
其中參數pPcpTable是已生成的 TCP連接表緩沖區的指針,參數pdwsize是緩沖區大。ó斁彌_區不夠大時,該參數返回實際需要的大。,參數bOrder指示連接表是否需要按“Local IP”、“Localport”、“Remote IP”、“Remote port”依次進行排序,1為按此順序。
通過一個TIMEER控件的TIMER的事件來比較前后兩個TCP連接表,我們可以立即發現異常并發出警告。本系統用聲音和報警標志提醒用戶注意可能的外界入侵。收到警告信號后,我們應首先將可疑連接刪除掉,SetTcpEntry函數可以幫助我們刪除可疑連接。其定義為:
Private Declare Function SetTcpEntry Lib "iphlpapi. dll" (ByRef pTcpTable As MIB_TCPROW) As Long |
其中參數pTcptable為指向tcp表行的指針。然后將欲刪連接的狀態置為MIB_TCP_STATE_DELETE_TCB(值為12)即可刪除該連接。
TIMER事件源代碼:
Private Sub Timer1_Timer() Dim Return1 As Long, i As Long Dim Tmp1 As Long, Tmp2 As Long Dim Ip_Buf(1 To 4) As Byte Dim Win_Path As String, Tmp3 As String Return1 = GetTcpTable(TCP1, Len(TCP1), 1) If Last_Num_Of_Entries <> 0 And _ Last_Num_Of_Entries <> TCP1.dwNum_Of_Entries Then '異常時發出警告 Picture1.Visible = True '警告標志 On Error Resume Next Win_Path = String(145, 0) '利用API函數GetWindowsDirectory獲得當前系統目錄 i = GetWindowsDirectory(Win_Path, 145) Win_Path = Left(Win_Path, i) '利用API函數sndPlaySound發出報警聲音 i = sndPlaySound(Win_Path + "\Media\Ding.wav", &H1) On Error GoTo 0 Else If Picture1.Visible = True Then Picture1.Visible = False End If End If Last_Num_Of_Entries = TCP1.dwNum_Of_Entries Select Case Return1 Case 0&: Text1 = "": Combo1.Clear For i = 0 To TCP1.dwNum_Of_Entries - 1 Tmp3 = Str(i + 1) + " " Select Case TCP1.TCP_Table(i).dwState ' 顯示連接狀態 Case 1: Tmp3 = Tmp3 + "CLOSED" Case 2: Tmp3 = Tmp3 + "LISTENING" Case 3: Tmp3 = Tmp3 + "SYN_SENT" Case 4: Tmp3 = Tmp3 + "SYN_RCVD" Case 5: Tmp3 = Tmp3 + "ESTABLISHED" Case 6: Tmp3 = Tmp3 + "FIN_WAIT1" Case 7: Tmp3 = Tmp3 + "FIN_WAIT2" Case 8: Tmp3 = Tmp3 + "CLOSE_WAIT" Case 9: Tmp3 = Tmp3 + "CLOSING" Case 10: Tmp3 = Tmp3 + "LAST_ACK" Case 11: Tmp3 = Tmp3 + "TIME_WAIT" Case 12: Tmp3 = Tmp3 + "DELETE_TCB" End Select Combo1.AddItem Tmp3 ' 填充列表以供用戶刪除 ' 本地IP Tmp3 = Tmp3 + ":" + vbCrLf + vbTab + "Local: " 'CopyMemory為API函數 CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwLocalAddr, 4 Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + "." + _ CStr(Ip_Buf(2)) + "."+ CStr(Ip_Buf(3)) _ +"." + CStr(Ip_Buf(4)) Tmp1 = TCP1.TCP_Table(i).dwLocalPort ' 本地端口 Tmp2 = Tmp1 / 256 + (Tmp1 Mod 256) * 256 ' 遠程IP Tmp3 = Tmp3 + ":" + Str(Tmp2) + vbTab + "Remote: " CopyMemory Ip_Buf(1), TCP1.TCP_Table(i).dwRemoteAddr, 4 Tmp3 = Tmp3 + CStr(Ip_Buf(1)) + "." + CStr(Ip_Buf(2)) _ + "."+ CStr(Ip_Buf(3)) + "." + CStr(Ip_Buf(4)) ' 遠程端口 Tmp1 = TCP1.TCP_Table(i).dwRemotePort Tmp2 = Tmp1 / 256 + (Tmp1 Mod 256) * 256 Tmp3 = Tmp3 + ":" + Str(Tmp2) + vbCrLf Text1 = Text1 + Tmp3 Next i Case 50&: MsgBox "系統不支持該API函數": End Case 87: MsgBox "無效的參數": End Case 111&: MsgBox "緩沖區溢出": End Case 232&: MsgBox "無數據": End End Select End Sub |
用于刪除連接的CLICK事件源代碼:
Private Sub delete_Click() Dim Return1 As Long If Combo1.ListIndex < 0 Then Exit Sub ' 將欲刪連接的狀態置為值為12 TCP1.TCP_Table(Combo1.ListIndex).dwState = 12 ' 執行刪除 Return1 = SetTcpEntry(TCP1.TCP_Table(Combo1.ListIndex)) If Return1 = 0 Then MsgBox "刪除成功" Else MsgBox "刪除失敗" End If Timer1_Timer End Sub |
當服務器系統發現TCP異常連接時,可通過屏幕監控功能將局域網中被監控工作站的屏幕畫面抓取到服務器中并實施相應措施,如對工作站鎖機或關機等。此處用到WINSOCK控件,其通訊原理請參閱相關資料,屏幕監控功能用到TCP協議,為了達到更好的效果,可在窗體中加入TIMER控件,設定TIMER事件。
(1) 工作站端
偵聽并響應服務器端發出的連接請求和屏幕抓取。其中屏幕抓取功能可通過API函數實現:
Dim a As String Winsock1.GetData a, vbString Select Case a Case "zp" Picture1.AutoRedraw = True Picture1.ScaleMode = 1 lDesktop = GetDesktopWindow() lDC = GetDC(lDesktop) BitBlt Picture1.hdc, 0, 0, Screen.Width, _ Screen.Height, lDC,0, 0, vbSrcCopy '獲取圖像數組 SavePicture Picture1.Image, filename Winsock1.SendData "okm" Dim myfile() As Byte Case "fir" '傳第一塊圖 Open filename For Binary As #1 filelen = LOF(1) ReDim myfile(1 To blocksize) As Byte '(const blocksize=3072) Get #1, , myfile Winsock1.SendData myfile curpos = blocksize Case "next" ‘傳其它塊 If curpos = filelen Then Winsock1.SendData "end" Close #1 Exit Sub End If j = curpos + blocksize If j > filelen Then j = filelen - curpos Else j = blocksize End If ReDim myfile(1 To j) As Byte Get #1, , myfile Winsock1.SendData myfile curpos = curpos + j End Select |
注意:以上功能在WINSOCK的DataArrival事件中實現。抓取的圖象數據量較大,所以需要分塊傳輸。
(2) 服務器端
DataArrival 事件代碼: Dim receivefile() As Byte ReDim receivefile(bytesTotal) As Byte Winsock1.GetData receivefile, vbArray + vbByte '告訴Winsock控件收到的是字節數組類型的數據 If Chr(receivefile(0)) = "o" And _ Chr(receivefile(1)) = "k" And _ Chr(receivefile(2)) = "m" Then If Dir$(filename) <> "" Then Kill filename ' 打開文件,準備存儲圖像 Open filename For Binary As #1 filelen = 0 Winsock1.SendData "fir" Exit Sub End If If Chr(receivefile(0)) = "e" And _ Chr(receivefile(1)) = "n" And _ Chr(receivefile(2)) = "d" Then Label1.Caption = "end" Close #1 Picture1.Picture = LoadPicture(filename) '顯示圖象 Exit Sub End If Put #1, , receivefile Winsock1.SendData "next" |
3、其它功能
主要用到一些API函數,如實現屏幕鎖定和解鎖操作可使用Enable Window,實現關機功能用ExitWindowsEx, 服務器和工作站之間的信息互送用到WINSOCK控件的UDP協議,具體用法請參閱有關資料。
結束語
通過在基本的網絡監控系統增加入侵檢測,就能夠極大提高網絡的整體安全性,使之更靈敏、更智能,大大降低入侵的成功率。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/
領測軟件測試網最新更新
關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月