Capture.vbs
This example demonstrates how to use PacketX to capture packets from VBScript.
- See also:
- PacketX , Packet , Adapter
'
'
'//
'
'//
'
'//
'
'//
'
'
'
const PktXPacketTypePromiscuous = &H0020
const PktXLinkType802_3 = 1
const PktXLinkType802_5 = 2
const PktXLinkTypeFddi = 3
const PktXLinkTypeWan = 4
const PktXLinkTypeLocalTalk = 5
const PktXLinkTypeDix = 6
const PktXLinkTypeArcnetRaw = 7
const PktXLinkTypeArcnet878_2 = 8
const PktXLinkTypeAtm = 9
const PktXLinkTypeWirelessWan = 10
const PktXModeCapture = 1
'// Create PackeX object
Set oPktX = WScript.CreateObject("PktX.PacketX","PacketX_")
'
For i = 1 To oPktX.Adapters.Count
If oPktX.Adapters(i).IsGood Then
WScript.Echo "(" & i & ") " & RTrim(LTrim(oPktX.Adapters(i).Description))
'PrintAdapter(oPktX.Adapters(i))
End If
Next
'
oPktX.Adapter = Nothing
While oPktX.Adapter Is Nothing
WScript.StdOut.Write "Choose adapter#"
On Error Resume Next
oPktX.Adapter = oPktX.Adapters(RTrim(LTrim(WScript.StdIn.ReadLine)))
On Error Goto 0
Wend
'// Capture buffer parameters
oPktX.Adapter.BuffSize=256*1024 '
oPktX.Adapter.BuffMinToCopy=0
'// Hardware filter and capture mode
oPktX.Adapter.HWFilter=PktXPacketTypePromiscuous
oPktX.Adapter.Mode=PktXModeCapture
'
oPktX.Start
WScript.Sleep(60000)
oPktX.Stop
PrintStats(oPktX.Adapter)
'// Packet event handler
Public Sub PacketX_OnPacket(ByRef oPacket)
PrintHead(oPacket)
PrintData(oPacket)
End Sub
Public Sub PrintAdapter(ByRef oAdapter)
WScript.Echo "Device name is " & oAdapter.Device
WScript.Stdout.Write "Link type is "
Select Case oAdapter.LinkType
Case PktXLinkType802_3 WScript.Echo "Ethernet (802.3)"
Case PktXLinkType802_5 WScript.Echo "Token Ring (802.5)"
Case PktXLinkTypeFddi WScript.Echo "FDDI"
Case PktXLinkTypeWan WScript.Echo "WAN"
Case PktXLinkTypeLocalTalk WScript.Echo "LocalTalk"
Case PktXLinkTypeDix WScript.Echo "DIX"
Case PktXLinkTypeArcnetRaw WScript.Echo "ARCNET (raw)"
Case PktXLinkTypeArcnet878_2 WScript.Echo "ARCNET (878.2)"
Case PktXLinkTypeAtm WScript.Echo "ATM"
Case PktXLinkTypeWirelessWan WScript.Echo "NdisWirelessXxx media"
Case Else WScript.Echo "Unknown!"
End Select
WScript.Echo "Link speed is " & oAdapter.LinkSpeed & " bps"
WScript.Echo "Network IP addres is " & oAdapter.NetIP
WScript.Echo "Network mask is " & oAdapter.NetMask
WScript.Echo "HW address is " & oAdapter.HWAddress
End Sub
Public Sub PrintHead(ByRef oPacket)
WScript.Echo "----------------------- Packet Header ---------------------"
WScript.Echo "Original size " & oPacket.OriginalSize & " bytes"
WScript.Echo "Capture size " & oPacket.DataSize & " bytes"
WScript.Echo "Capture time " & oPacket.TimeSec & " (number of seconds from 1/1/1970)"
WScript.Echo "Capture microseconds " & oPacket.TimeUSec
WScript.Echo "Capture date " & oPacket.Date & " (system date and time)"
End Sub
Public Sub PrintData(ByRef oPacket)
WScript.Echo "----------------------- Packet Data -----------------------"
For Each bByte In oPacket.Data
If Len(sLine) >= 48 Then
WScript.Echo sLine
sLine=""
End If
If bByte <= &H0F Then sLine=sLine & "0" End If
sLine=sLine & Hex(bByte) & " "
Next
If Len(sLine) > 0 Then WScript.Echo sLine Else WScript.Echo "" End If
End Sub
Public Sub PrintStats(ByRef oAdapter)
WScript.Echo "------------------- Capture Statistics --------------------"
WScript.Echo "Packets received " & oAdapter.PacketsRecv
WScript.Echo "Packets lost " & oAdapter.PacketsLost
End Sub