Capture.vbs

This example demonstrates how to use PacketX to capture packets from VBScript.
See also:
PacketX , Packet , Adapter
00001 '
00002 '// File:         Capture.vbs
00003 '//
00004 '// Description:  This script demonstrates how to capture packets
00005 '//
00006 '// Notes:        Run the script from command line using the cscript.exe program
00007 '//
00008 '// Created:      May 10, 2004
00009 '//
00010 '// Copyright (c) 2000-2004 BeeSync Technologies.
00011 '
00012 
00013 '// Constants
00014 const PktXPacketTypePromiscuous   = &H0020
00015 const PktXLinkType802_3           = 1
00016 const PktXLinkType802_5           = 2
00017 const PktXLinkTypeFddi            = 3
00018 const PktXLinkTypeWan             = 4
00019 const PktXLinkTypeLocalTalk       = 5
00020 const PktXLinkTypeDix             = 6
00021 const PktXLinkTypeArcnetRaw       = 7
00022 const PktXLinkTypeArcnet878_2     = 8
00023 const PktXLinkTypeAtm             = 9
00024 const PktXLinkTypeWirelessWan     = 10
00025 const PktXModeCapture             = 1
00026 
00027 '// Create PackeX object
00028 Set oPktX = WScript.CreateObject("PktX.PacketX","PacketX_")
00029 
00030 '// Display network adapters
00031 For i = 1 To oPktX.Adapters.Count
00032   If oPktX.Adapters(i).IsGood Then
00033     WScript.Echo "(" & i & ") " & RTrim(LTrim(oPktX.Adapters(i).Description))
00034     'PrintAdapter(oPktX.Adapters(i))
00035   End If
00036 Next
00037 
00038 '// Select network adapter
00039 oPktX.Adapter = Nothing
00040 While oPktX.Adapter Is Nothing
00041   WScript.StdOut.Write "Choose adapter#"
00042   On Error Resume Next
00043     oPktX.Adapter = oPktX.Adapters(RTrim(LTrim(WScript.StdIn.ReadLine)))
00044   On Error Goto 0
00045 Wend
00046 
00047 '// Capture buffer parameters
00048 oPktX.Adapter.BuffSize=256*1024 '// 256 KB
00049 oPktX.Adapter.BuffMinToCopy=0
00050 
00051 '// Hardware filter and capture mode
00052 oPktX.Adapter.HWFilter=PktXPacketTypePromiscuous
00053 oPktX.Adapter.Mode=PktXModeCapture
00054 
00055 '// Start capture
00056 oPktX.Start
00057 WScript.Sleep(60000)
00058 oPktX.Stop
00059 
00060 PrintStats(oPktX.Adapter)  
00061 
00062 '// Packet event handler
00063 Public Sub PacketX_OnPacket(ByRef oPacket)
00064   PrintHead(oPacket)
00065   PrintData(oPacket)
00066 End Sub
00067 
00068 Public Sub PrintAdapter(ByRef oAdapter)  
00069   WScript.Echo "Device name is " & oAdapter.Device
00070   WScript.Stdout.Write "Link type is "
00071   Select Case oAdapter.LinkType
00072     Case PktXLinkType802_3       WScript.Echo "Ethernet (802.3)"
00073     Case PktXLinkType802_5       WScript.Echo "Token Ring (802.5)"
00074     Case PktXLinkTypeFddi        WScript.Echo "FDDI"
00075     Case PktXLinkTypeWan         WScript.Echo "WAN"
00076     Case PktXLinkTypeLocalTalk   WScript.Echo "LocalTalk"
00077     Case PktXLinkTypeDix         WScript.Echo "DIX"
00078     Case PktXLinkTypeArcnetRaw   WScript.Echo "ARCNET (raw)"
00079     Case PktXLinkTypeArcnet878_2 WScript.Echo "ARCNET (878.2)"
00080     Case PktXLinkTypeAtm         WScript.Echo "ATM"
00081     Case PktXLinkTypeWirelessWan WScript.Echo "NdisWirelessXxx media"
00082     Case Else                    WScript.Echo "Unknown!"
00083   End Select  
00084   WScript.Echo "Link speed is " & oAdapter.LinkSpeed & " bps"
00085   WScript.Echo "Network IP addres is " & oAdapter.NetIP
00086   WScript.Echo "Network mask is " & oAdapter.NetMask
00087   WScript.Echo "HW address is " & oAdapter.HWAddress
00088 End Sub
00089 
00090 Public Sub PrintHead(ByRef oPacket)  
00091   WScript.Echo "----------------------- Packet Header ---------------------"  
00092   WScript.Echo "Original size " & oPacket.OriginalSize & " bytes"
00093   WScript.Echo "Capture size " & oPacket.DataSize & " bytes"
00094   WScript.Echo "Capture time " & oPacket.TimeSec & " (number of seconds from 1/1/1970)"
00095   WScript.Echo "Capture microseconds " & oPacket.TimeUSec
00096   WScript.Echo "Capture date " & oPacket.Date & " (system date and time)" 
00097 End Sub
00098 
00099 Public Sub PrintData(ByRef oPacket)
00100   WScript.Echo "----------------------- Packet Data -----------------------"
00101   For Each bByte In oPacket.Data
00102     If Len(sLine) >= 48 Then 
00103       WScript.Echo sLine 
00104       sLine=""
00105     End If
00106     If bByte <= &H0F Then sLine=sLine & "0" End If
00107     sLine=sLine & Hex(bByte) & " "
00108   Next
00109   If Len(sLine) > 0 Then WScript.Echo sLine Else WScript.Echo "" End If
00110 End Sub
00111 
00112 Public Sub PrintStats(ByRef oAdapter)  
00113   WScript.Echo "------------------- Capture Statistics --------------------"
00114   WScript.Echo "Packets received " & oAdapter.PacketsRecv
00115   WScript.Echo "Packets lost " & oAdapter.PacketsLost
00116 End Sub

Copyright © 2000-2007 beeSync. All rights reserved.