Capture.js

This example demonstrates how to use PacketX to capture packets from JScript.
See also:
PacketX , Packet , Adapter
// File:         Capture.js
//
// Description:  This script demonstrates how to capture packets
//
// Notes:        Run the script from command line using the cscript.exe program
//
// Created:      May 10, 2004
//
// Copyright (c) 2000-2004 BeeSync Technologies.

// Constants
var cPktXPacketTypePromiscuous   = 0x0020;
var cPktXLinkType802_3           = 1;
var cPktXLinkType802_5           = 2;
var cPktXLinkTypeFddi            = 3;
var cPktXLinkTypeWan             = 4;
var cPktXLinkTypeLocalTalk       = 5;
var cPktXLinkTypeDix             = 6;
var cPktXLinkTypeArcnetRaw       = 7;
var cPktXLinkTypeArcnet878_2     = 8;
var cPktXLinkTypeAtm             = 9;
var cPktXLinkTypeWirelessWan     = 10;
var cPktXModeCapture             = 1;

// Create PackeX object
var oPktX = WScript.CreateObject("PktX.PacketX", "PacketX_");

// Display network adapters
for (i = 0; i < oPktX.Adapters.Count ; i++) {
  if (oPktX.Adapters(i+1).IsGood == true) {
    WScript.Echo("(" + (i+1) + ") " + oPktX.Adapters(i+1).Description);
    //PrintAdapter(oPktX.Adapters(i+1));
  }
}

// Select network adapter
oNullAdapter = WScript.CreateObject("PktX.Adapter");
oPktX.Adapter = oNullAdapter;
while(oPktX.Adapter == oNullAdapter) 
{
  WScript.StdOut.Write("Choose adapter#")
  try { 
    oPktX.Adapter = oPktX.Adapters(WScript.StdIn.ReadLine());
  }
  catch(err){
    oPktX.Adapter = oNullAdapter;
  } 
}

// Capture buffer parameters
oPktX.Adapter.BuffSize=256*1024; // 256 KB
oPktX.Adapter.BuffMinToCopy=0;

// Hardware filter and capture mode
oPktX.Adapter.HWFilter=cPktXPacketTypePromiscuous;
oPktX.Adapter.Mode=cPktXModeCapture;

// Start capture
oPktX.Start();
WScript.Sleep(60000);
oPktX.Stop();

PrintStats(oPktX.Adapter);

// Packet event handler
function PacketX_OnPacket(oPacket) 
{
  PrintHead(oPacket);
  PrintData(oPacket);
}

function PrintAdapter(oAdapter) 
{
  WScript.Echo("Device name is " + oAdapter.Device);
  WScript.Stdout.Write("Link type is "); 
  switch(oAdapter.LinkType) {
    case cPktXLinkType802_3:
      WScript.Echo("Ethernet (802.3)");
      break;
    case cPktXLinkType802_5:
      WScript.Echo("Token Ring (802.5)");
      break;
    case cPktXLinkTypeFddi:
      WScript.Echo("FDDI");
      break;
    case cPktXLinkTypeWan:
      WScript.Echo("WAN");
      break;
    case cPktXLinkTypeLocalTalk:
      WScript.Echo("LocalTalk");
      break;
    case cPktXLinkTypeDix:
      WScript.Echo("DIX");
      break;
    case cPktXLinkTypeArcnetRaw:
      WScript.Echo("ARCNET (raw)");
      break;
    case cPktXLinkTypeArcnet878_2:
      WScript.Echo("ARCNET (878.2)");
      break;
    case cPktXLinkTypeAtm:
      WScript.Echo("ATM");
      break;
    case cPktXLinkTypeWirelessWan:
      WScript.Echo("NdisWirelessXxx media");
      break;
    default: 
      WScript.Echo("Unknown!");
  }
  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);
}

function PrintHead(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)" );
}

function PrintData(oPacket) 
{
  WScript.Echo ("----------------------- Packet Data -----------------------");
  var vbBytes = new VBArray(oPacket.Data);
  var jsBytes = vbBytes.toArray();   
  sLine="";
  for (i=0; i < jsBytes.length; i++) {
    bByte = jsBytes[i];
    if (String(sLine).length >= 48) {
      WScript.Echo(sLine);
      sLine = "";
    }
    if (bByte <= 0x0F) { 
      sLine = sLine + "0";
    }
    sLine = sLine + bByte.toString(16) + " ";
  }
  if (String(sLine).length > 0)
    WScript.Echo(sLine);
  else
    WScript.Echo(""); 
}

function PrintStats(oAdapter) 
{
  WScript.Echo ("------------------- Capture Statistics --------------------");
  WScript.Echo ("Packets received " + oAdapter.PacketsRecv);
  WScript.Echo ("Packets lost " + oAdapter.PacketsLost);
}

Copyright © 2000-2007 beeSync. All rights reserved.