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

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


  RecvTab(K).hEvent = hEvent
  'memset(RecvTab[k].Buffer,0,BUFFER_SIZE);
  RecvTab(K).Size = BUFFER_SIZE
  RecvTab(K).Active = True
  RecvTab(K).Type = nREAD
  EventTab(RECV_MAX - 1) = hEvent
  Call RecvStart(hVxD, RecvTab(K))
  RecvPacket = len1
  Exit Function
  Else
  RecvPacket = SYSERR
  End If
  End Function
  Function RecvStart(ByVal hVxD As Long, packtab As PacketTable) As Long
  Dim result As Long
  packtab.Overlap.Internal = 0
  packtab.Overlap.InternalHigh = 0
  packtab.Overlap.offset = 0
  packtab.Overlap.OffsetHigh = 0
  packtab.Overlap.hEvent = packtab.hEvent
  result = DeviceIoControl(hVxD, _
  IOCTL_PROTOCOL_READ, _
  packtab.Buffer(0), _
  packtab.Size, _
  packtab.Buffer(0), _
  packtab.Size, _
  packtab.Length, _
  packtab.Overlap)
  If (result <> 0) Then
  RecvStart = SYSERR
  Else
  RecvStart = 0
  End If
  End Function
  Sub Main()
  bFirst = True
  Dim hVxD As Long
  Dim m_EtherPacketHead As EtherPacketHead
  Dim m_IPPacketHead As IPPacketHead
  Dim m_EtherAddr As EtherAddr
  hVxD = CreateFile("//./VPACKET.VXD", _
  GENERIC_READ Or GENERIC_WRITE, _
  0, _
  0, _
  OPEN_EXISTING, _
  FILE_ATTRIBUTE_NORMAL Or _
  FILE_FLAG_OVERLAPPED Or _
  FILE_FLAG_DELETE_ON_CLOSE, _
  0)
  Bind hVxD, "0001"
  Call GetHardEtherAddr(hVxD, m_EtherAddr)
  SetOid hVxD, OID_GEN_CURRENT_PACKET_FILTER, 4, NDIS_PACKET_TYPE_DIRECTED
  Do Until False
  DoEvents
  'result = GetPacket(hVxD, IOCTL_PROTOCOL_READ, 1514, 1514)
  result = RecvPacket(hVxD, OutBuff)
  If result = 0 Then Exit Do
  If result <> SYSERR Then
  Call CopyMemory(m_EtherPacketHead, OutBuff(0), ETHER_HEAD_LEN)
  If m_EtherPacketHead.ServType = ETHER_PROTO_IP Then
  Call CopyMemory(m_IPPacketHead, OutBuff(ETHER_HEAD_LEN), IP_HEAD_BYTE_LEN)
  If m_IPPacketHead.Proto = IP_PROTO_TCP Then
  Debug.Print "SourIP:", m_IPPacketHead.SourIP.AddrByte(0) & "." & m_IPPacketHead.SourIP.AddrByte(1) & "." & m_IPPacketHead.SourIP.AddrByte(2) & "." & m_IPPacketHead.SourIP.AddrByte(3)
  Debug.Print "DestIP:", m_IPPacketHead.DestIP.AddrByte(0) & "." & m_IPPacketHead.DestIP.AddrByte(1) & "." & m_IPPacketHead.DestIP.AddrByte(2) & "." & m_IPPacketHead.DestIP.AddrByte(3)
  End If
  End If
  End If
  Loop
  Call CloseHandle(hVxD)
  End Sub
  '----------------------源代码结束-----------------

上一页345下一页

视频学习

我考网版权与免责声明

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

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

最近更新

社区交流

考试问答