Capture.js
This example demonstrates how to use PacketX to capture packets from JScript.
- See also:
- PacketX , Packet , Adapter
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;
var oPktX = WScript.CreateObject("PktX.PacketX", "PacketX_");
for (i = 0; i < oPktX.Adapters.Count ; i++) {
if (oPktX.Adapters(i+1).IsGood == true) {
WScript.Echo("(" + (i+1) + ") " + oPktX.Adapters(i+1).Description);
}
}
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;
}
}
oPktX.Adapter.BuffSize=256*1024;
oPktX.Adapter.BuffMinToCopy=0;
oPktX.Adapter.HWFilter=cPktXPacketTypePromiscuous;
oPktX.Adapter.Mode=cPktXModeCapture;
oPktX.Start();
WScript.Sleep(60000);
oPktX.Stop();
PrintStats(oPktX.Adapter);
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);
}