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

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


  Const RECV_MAX = 32
  Dim RecvTab(RECV_MAX) As PacketTable
  Dim EventTab(RECV_MAX) As Long
  Dim InBuff(1514) As Byte
  Dim OutBuff(1514) As Byte
  Function Bind(hVxD As Long, inBuffer As String) As Boolean
  Dim hEvent As Long
  Dim cbRet As Long
  Dim ovlp As OVERLAPPED
  Dim result As Long
  Dim cbIn As Long
  cbIn = 5
  hEvent = CreateEvent(0, 1, 0, vbNullString)
  If hEvent = 0 Then
  Bind = False
  MsgBox "err bind"
  Exit Function
  End If
  ovlp.hEvent = hEvent
  '((0x8000) << 16) | ((0) << 14) | ((7) << 2) | (0))
  Const IOCTL_PROTOCOL_BIND = &H8000001C
  result = DeviceIoControlAsString(hVxD, _
  IOCTL_PROTOCOL_BIND, _
  ByVal inBuffer, _
  cbIn, _
  ByVal inBuffer, _
  cbIn, _
  cbRet, _
  ovlp)
  If (result = 0) Then
  Call GetOverlappedResult(hVxD, ovlp, cbRet, True)
  End If
  Call CloseHandle(hEvent)
  Bind = True
  End Function
  Function QueryPacket(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
  QueryPacket = False
  MsgBox "err bind"
  Exit Function
  End If
  ovlp.Internal = 0
  ovlp.InternalHigh = 0
  ovlp.offset = 0
  ovlp.OffsetHigh = 0
  ovlp.hEvent = hEvent
  ' ioc = &H80000018
  result = DeviceIoControl(hVxD, ioctl, InBuff(0), cbIn, InBuff(0), cbOut, cbRet, ovlp)
  If result = 0 Then
  If (GetLastError() = ERROR_IO_PENDING) Then
  MsgBox "Ok0"
  Else
  Call CloseHandle(hEvent)
  Exit Function

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答