Capture.js

This example demonstrates how to use PacketX to capture packets from JScript.
See also:
PacketX , Packet , Adapter
00001 
00002 // File:         Capture.js
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.
00012 
00013 // Constants
00014 var cPktXPacketTypePromiscuous   = 0x0020;
00015 var cPktXLinkType802_3           = 1;
00016 var cPktXLinkType802_5           = 2;
00017 var cPktXLinkTypeFddi            = 3;
00018 var cPktXLinkTypeWan             = 4;
00019 var cPktXLinkTypeLocalTalk       = 5;
00020 var cPktXLinkTypeDix             = 6;
00021 var cPktXLinkTypeArcnetRaw       = 7;
00022 var cPktXLinkTypeArcnet878_2     = 8;
00023 var cPktXLinkTypeAtm             = 9;
00024 var cPktXLinkTypeWirelessWan     = 10;
00025 var cPktXModeCapture             = 1;
00026 
00027 // Create PackeX object
00028 var oPktX = WScript.CreateObject("PktX.PacketX", "PacketX_");
00029 
00030 // Display network adapters
00031 for (i = 0; i < oPktX.Adapters.Count ; i++) {
00032   if (oPktX.Adapters(i+1).IsGood == true) {
00033     WScript.Echo("(" + (i+1) + ") " + oPktX.Adapters(i+1).Description);
00034     //PrintAdapter(oPktX.Adapters(i+1));
00035   }
00036 }
00037 
00038 // Select network adapter
00039 oNullAdapter = WScript.CreateObject("PktX.Adapter");
00040 oPktX.Adapter = oNullAdapter;
00041 while(oPktX.Adapter == oNullAdapter) 
00042 {
00043   WScript.StdOut.Write("Choose adapter#")
00044   try { 
00045     oPktX.Adapter = oPktX.Adapters(WScript.StdIn.ReadLine());
00046   }
00047   catch(err){
00048     oPktX.Adapter = oNullAdapter;
00049   } 
00050 }
00051 
00052 // Capture buffer parameters
00053 oPktX.Adapter.BuffSize=256*1024; // 256 KB
00054 oPktX.Adapter.BuffMinToCopy=0;
00055 
00056 // Hardware filter and capture mode
00057 oPktX.Adapter.HWFilter=cPktXPacketTypePromiscuous;
00058 oPktX.Adapter.Mode=cPktXModeCapture;
00059 
00060 // Start capture
00061 oPktX.Start();
00062 WScript.Sleep(60000);
00063 oPktX.Stop();
00064 
00065 PrintStats(oPktX.Adapter);
00066 
00067 // Packet event handler
00068 function PacketX_OnPacket(oPacket) 
00069 {
00070   PrintHead(oPacket);
00071   PrintData(oPacket);
00072 }
00073 
00074 function PrintAdapter(oAdapter) 
00075 {
00076   WScript.Echo("Device name is " + oAdapter.Device);
00077   WScript.Stdout.Write("Link type is "); 
00078   switch(oAdapter.LinkType) {
00079     case cPktXLinkType802_3:
00080       WScript.Echo("Ethernet (802.3)");
00081       break;
00082     case cPktXLinkType802_5:
00083       WScript.Echo("Token Ring (802.5)");
00084       break;
00085     case cPktXLinkTypeFddi:
00086       WScript.Echo("FDDI");
00087       break;
00088     case cPktXLinkTypeWan:
00089       WScript.Echo("WAN");
00090       break;
00091     case cPktXLinkTypeLocalTalk:
00092       WScript.Echo("LocalTalk");
00093       break;
00094     case cPktXLinkTypeDix:
00095       WScript.Echo("DIX");
00096       break;
00097     case cPktXLinkTypeArcnetRaw:
00098       WScript.Echo("ARCNET (raw)");
00099       break;
00100     case cPktXLinkTypeArcnet878_2:
00101       WScript.Echo("ARCNET (878.2)");
00102       break;
00103     case cPktXLinkTypeAtm:
00104       WScript.Echo("ATM");
00105       break;
00106     case cPktXLinkTypeWirelessWan:
00107       WScript.Echo("NdisWirelessXxx media");
00108       break;
00109     default: 
00110       WScript.Echo("Unknown!");
00111   }
00112   WScript.Echo("Link speed is " + oAdapter.LinkSpeed + " bps");
00113   WScript.Echo("Network IP addres is " + oAdapter.NetIP);
00114   WScript.Echo("Network mask is " + oAdapter.NetMask);
00115   WScript.Echo("HW address is " + oAdapter.HWAddress);
00116 }
00117 
00118 function PrintHead(oPacket) 
00119 {
00120   WScript.Echo("----------------------- Packet Header ---------------------"  );
00121   WScript.Echo("Original size " + oPacket.OriginalSize + " bytes");
00122   WScript.Echo("Capture size " + oPacket.DataSize + " bytes");
00123   WScript.Echo("Capture time " + oPacket.TimeSec + " (number of seconds from 1/1/1970)");
00124   WScript.Echo("Capture microseconds " + oPacket.TimeUSec);
00125   WScript.Echo("Capture date " + oPacket.Date + " (system date and time)" );
00126 }
00127 
00128 function PrintData(oPacket) 
00129 {
00130   WScript.Echo ("----------------------- Packet Data -----------------------");
00131   var vbBytes = new VBArray(oPacket.Data);
00132   var jsBytes = vbBytes.toArray();   
00133   sLine="";
00134   for (i=0; i < jsBytes.length; i++) {
00135     bByte = jsBytes[i];
00136     if (String(sLine).length >= 48) {
00137       WScript.Echo(sLine);
00138       sLine = "";
00139     }
00140     if (bByte <= 0x0F) { 
00141       sLine = sLine + "0";
00142     }
00143     sLine = sLine + bByte.toString(16) + " ";
00144   }
00145   if (String(sLine).length > 0)
00146     WScript.Echo(sLine);
00147   else
00148     WScript.Echo(""); 
00149 }
00150 
00151 function PrintStats(oAdapter) 
00152 {
00153   WScript.Echo ("------------------- Capture Statistics --------------------");
00154   WScript.Echo ("Packets received " + oAdapter.PacketsRecv);
00155   WScript.Echo ("Packets lost " + oAdapter.PacketsLost);
00156 }

Copyright © 2000-2007 beeSync. All rights reserved.