使用VB截获WIN98系列下的IP数据包

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论


  CopyMemory InBuff(0), OidData, cbIn
  cbRet = QueryPacket(hVxD, ioctl, cbIn, cbIn)
  SetOid = 0
  End Function
  Function GetPacket(ByVal hVxD As Long, ByVal ioctl As Long, ByVal cbIn As Long, ByVal cbOut As Long) As Long
  Dim hEvent As Long
  Dim cbRet As Long
  Dim ovlp As OVERLAPPED
  Dim result As Long
  hEvent = CreateEvent(0, 1, 0, vbNullString)
  If hEvent = 0 Then
  GetPacket = 0
  Exit Function
  End If
  ovlp.hEvent = hEvent
  result = DeviceIoControl(hVxD, ioctl, InBuff(0), cbIn, OutBuff(0), cbOut, cbRet, ovlp)
  If (result = 0) Then Call GetOverlappedResult(hVxD, ovlp, cbRet, True)
  GetPacket = cbRet
  End Function
  Function RecvPacket(ByVal hVxD As Long, ByVal pbuf As Variant) As Long
  Dim hEvent As Long
  Dim I As Long, J As Long, K As Long
  Dim len1 As Long
  If (bFirst) Then
  For I = 0 To RECV_MAX - 1
  hEvent = CreateEvent(0, 1, 0, vbNullString)
  If (hEvent = 0) Then
   MsgBox "ERROR"
  RecvPacket = SYSERR
  Exit Function
  End If
  RecvTab(I).hEvent = hEvent
  RecvTab(I).Size = BUFFER_SIZE
  RecvTab(I).Active = True
  RecvTab(I).Type = nREAD
  EventTab(I) = hEvent
  Call RecvStart(hVxD, RecvTab(I))
  Next
  bFirst = False
  End If
  I = WaitForMultipleObjectsEx(RECV_MAX, EventTab(0), 0, INFINITE, 0)
  If (I = WAIT_FAILED) Then
  MsgBox "error WaitForMultipleObjectsEx"
  RecvPacket = SYSERR
  Exit Function
  End If
  For J = 0 To RECV_MAX - 1
  If (EventTab(I) = RecvTab(J).hEvent) Then Exit For
  Next
  K = J
  If (RecvTab(K).Type = nREAD And RecvTab(K).Active = True) Then
  Call GetOverlappedResult(hVxD, RecvTab(K).Overlap, RecvTab(K).Length, 0)
  If (RecvTab(K).Length > BUFFER_SIZE) Then RecvTab(K).Length = BUFFER_SIZE
  Call CopyMemory(OutBuff(0), RecvTab(K).Buffer(0), RecvTab(K).Length)
  len1 = RecvTab(K).Length
  Call CloseHandle(RecvTab(K).hEvent)
  For J = I + 1 To RECV_MAX - 1
  EventTab(I) = EventTab(J)
  I = I + 1
  Next
  hEvent = CreateEvent(0, 1, 0, vbNullString)
  If (hEvent = 0) Then
  MsgBox "ERROR CREATEEVENT"
  RecvPacket = SYSERR
  Exit Function
  End If

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答