用VB6.0實現網絡實時監控系統

發表于:2007-05-25來源:作者:點擊數: 標簽:網絡VB6.0監控系統實時實現
計算機網絡技術的日益發展和普及,為信息共享提供了一條全球性的高速通道,但目前采用的TCP/IP協議族潛在著安全漏洞,其安全機制并不健全,如何保護企業內部網絡中的資源及信息不受外部攻擊者肆意破壞或盜竊,是企業 網絡安全 需要解決的重要問題。當我們擔
  計算機網絡技術的日益發展和普及,為信息共享提供了一條全球性的高速通道,但目前采用的TCP/IP協議族潛在著安全漏洞,其安全機制并不健全,如何保護企業內部網絡中的資源及信息不受外部攻擊者肆意破壞或盜竊,是企業網絡安全需要解決的重要問題。當我們擔心被黑客攻擊或懷疑電腦被植入木馬時,我們往往求助于防火墻,本系統即通過實時監控全部TCP連接的方法來實現防黑客攻擊。同時網絡管理人員在整個網絡運行期間,能否實時監控聯網計算機的運行狀態和操作對網絡安全具有極其重要的作用.下面就以Visual Basic 6.0作為開發工具講述兩個主要模塊的設計和實現。

  系統概述

  該系統由兩個子系統組成:服務器端系統和客戶端(工作站)系統。服務器端系統安裝在網絡管理人員的計算機上,用于實施各種對聯網計算機的監控操作;客戶端系統安裝在每臺聯網的計算機上,它運行后以圖標的方式出現在系統任務欄的提示區中,不影響工作站的其他操作,只用于響應服務器端的監控命令,并根據服務的需要,及時采樣工作站的相應數據返回給服務器端。該系統的運行環境可以運行于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函數,它定義如下:

clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
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
 2、屏幕監控

  當服務器系統發現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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97