00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
00013 using System;
00014 using PacketXLib;
00015
00016 namespace Capture
00017 {
00018 class Test
00019 {
00020
00021 static System.Globalization.CultureInfo oCulture;
00022
00024 [MTAThread]
00025 static void Main(string[] args)
00026 {
00027
00028 oCulture = new System.Globalization.CultureInfo(0x007F);
00029
00031 PacketXClass oPktX = new PacketXClass();
00032 oPktX.OnPacket += new _IPktXPacketXEvents_OnPacketEventHandler(PacketX_OnPacket);
00033
00034
00035 AdapterCollection oAdapters = (AdapterCollection)oPktX.Adapters;
00036 for (int i = 0; i < oAdapters.Count ; i++)
00037 {
00038 if (Convert.ToBoolean(oAdapters[i+1].IsGood))
00039 {
00040 Console.WriteLine("(" + (i+1) + ") " + oAdapters[i+1].Description);
00041
00042 }
00043 }
00044
00045 oPktX.Adapter = null;
00046 while (oPktX.Adapter == null)
00047 {
00048 Console.Write("Choose adapter#");
00049 try
00050 {
00051 int nSelected = Convert.ToInt16(Console.ReadLine().Trim(),10);
00052 oPktX.Adapter = oAdapters[nSelected];
00053 }
00054 catch (System.Exception)
00055 {
00056 Console.WriteLine("Invalid adapter number.");
00057 }
00058 }
00059
00060 Adapter oAdapter = (Adapter)oPktX.Adapter;
00061 oAdapter.BuffSize=256*1024;
00062 oAdapter.BuffMinToCopy=0;
00063
00064
00065 oAdapter.HWFilter=PktXPacketType.PktXPacketTypePromiscuous;
00066 oAdapter.Mode=PktXMode.PktXModeCapture;
00067
00068
00069 oPktX.Start();
00070 System.Threading.Thread.Sleep(60000);
00071 oPktX.Stop();
00072
00073 PrintStats(oAdapter);
00074 }
00075
00076
00077 static void PacketX_OnPacket(Packet aPacket)
00078 {
00079 PrintHead(aPacket);
00080 PrintData(aPacket);
00081 }
00082
00083 static void PrintAdapter(Adapter aAdapter)
00084 {
00085 Console.WriteLine("Device name is " + aAdapter.Device);
00086 Console.Write("Link type is ");
00087 switch (aAdapter.LinkType)
00088 {
00089 case PktXLinkType.PktXLinkType802_3:
00090 Console.WriteLine("Ethernet (802.3)");
00091 break;
00092 case PktXLinkType.PktXLinkType802_5:
00093 Console.WriteLine("Token Ring (802.5)");
00094 break;
00095 case PktXLinkType.PktXLinkTypeFddi:
00096 Console.WriteLine("FDDI");
00097 break;
00098 case PktXLinkType.PktXLinkTypeWan:
00099 Console.WriteLine("WAN");
00100 break;
00101 case PktXLinkType.PktXLinkTypeLocalTalk:
00102 Console.WriteLine("LocalTalk");
00103 break;
00104 case PktXLinkType.PktXLinkTypeDix:
00105 Console.WriteLine("DIX");
00106 break;
00107 case PktXLinkType.PktXLinkTypeArcnetRaw:
00108 Console.WriteLine("ARCNET (raw)");
00109 break;
00110 case PktXLinkType.PktXLinkTypeArcnet878_2:
00111 Console.WriteLine("ARCNET (878.2)");
00112 break;
00113 case PktXLinkType.PktXLinkTypeAtm:
00114 Console.WriteLine("ATM");
00115 break;
00116 case PktXLinkType.PktXLinkTypeWirelessWan:
00117 Console.WriteLine("NdisWirelessXxx media");
00118 break;
00119 default:
00120 Console.WriteLine("Unknown!");
00121 break;
00122 }
00123 Console.WriteLine("Link speed is " + aAdapter.LinkSpeed + " bps");
00124 Console.WriteLine("Network IP addres is " + aAdapter.NetIP);
00125 Console.WriteLine("Network mask is " + aAdapter.NetMask);
00126 Console.WriteLine("HW address is " + aAdapter.HWAddress);
00127 }
00128
00129 static void PrintHead(Packet aPacket)
00130 {
00131 string sText = "----------------------- Packet Header ---------------------\n";
00132
00133 sText += "Original size " + aPacket.OriginalSize + " bytes\n";
00134 sText += "Capture size " + aPacket.DataSize + " bytes\n";
00135 sText += "Capture time " + aPacket.TimeSec + " (number of seconds from 1/1/1970)\n";
00136 sText += "Capture microseconds " + aPacket.TimeUSec + "\n";
00137 sText += "Capture date " + aPacket.Date + " (system date and time)";
00138
00139 Console.WriteLine(sText);
00140 }
00141
00142 static void PrintData(Packet aPacket)
00143 {
00144 string sData = "----------------------- Packet Data -----------------------\n";
00145
00146 int nPosition = 0, nColumns = 16;
00147 for (int i=0; i < aPacket.DataArray.Length; i++)
00148 {
00149 if (nPosition == 8)
00150 sData += " ";
00151
00152 if (nPosition >= nColumns)
00153 {
00154 nPosition = 1;
00155 sData += "\n";
00156 }
00157 else
00158 nPosition++;
00159
00160 byte nByte = (byte) aPacket.DataArray.GetValue(i);
00161 if (nByte < 16)
00162 sData += "0";
00163
00164 sData += nByte.ToString("X",oCulture.NumberFormat) + " ";
00165 }
00166 Console.WriteLine(sData);
00167 }
00168
00169 static void PrintStats(Adapter aAdapter)
00170 {
00171 string sText = "------------------- Capture Statistics --------------------\n";
00172
00173 sText += "Packets received " + aAdapter.PacketsRecv + "\n";
00174 sText += "Packets lost " + aAdapter.PacketsLost;
00175
00176 Console.WriteLine(sText);
00177 }
00178 }
00179 }
00180