private void init(int deviceId) { // Retrieve the device list CaptureDeviceList devices = CaptureDeviceList.Instance; // If no devices were found print an error if (devices.Count < 1) { Console.WriteLine("No devices were found on this machine in NetStatsService.init()"); return; } int i = deviceId; _device = devices[i] as NpcapDevice; // Register our handler function to the 'pcap statistics' event _device.OnPcapStatistics += new SharpPcap.Npcap.StatisticsModeEventHandler(device_OnPcapStatistics); // Open the device for capturing _device.Open(); // Handle TCP packets only _device.Filter = "tcp"; // Set device to statistics mode _device.Mode = SharpPcap.Npcap.CaptureMode.Statistics; }
public void Add(NpcapDevice device) { if (device.Interface.Addresses.Count > 0 && !Equals(device.Interface.MacAddress, PhysicalAddress.None)) { this._physicalAddresses.Add(device.Interface.MacAddress); } this._captureDevices.Add(device); }
//checks device/interface to see if there is traffic on it, same logic as Sniffer private static void IsDeviceActive(NpcapDevice device) { device.OnPacketArrival += new SharpPcap.PacketArrivalEventHandler(DeviceConnectivityHandler); device.Open(DeviceMode.Promiscuous, 1000); device.Filter = "ip and tcp"; device.StartCapture(); Thread.Sleep(1000); device.StopCapture(); device.Close(); }
/// <summary> /// 指定デバイスからIPv4アドレスを取得する /// </summary> /// <param name="captureDevice"></param> /// <returns></returns> private IPAddress GetIPv4(NpcapDevice device) { foreach (var addr in device.Addresses) { if (addr.Netmask.ToString() != "") { return(IPAddress.Parse(addr.Addr.ToString())); } } throw new InvalidOperationException(string.Format("デバイス {0} に有効な IPv4 アドレスが見つかりませんでした", device.Description)); }
public CaptureDeviceInfo(NpcapDevice device) { this.device = device; foreach (var addr in device.Addresses) { if (addr.Addr != null && addr.Addr.ipAddress != null && addr.Netmask != null) { IPAddress ipOut; string ipAddressStr = addr.Addr.ipAddress.ToString(); if (IPAddress.TryParse(ipAddressStr, out ipOut)) { if (ipOut.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { ipv4Address = ipOut.ToString(); } } } } }
/* * get list of all device interfaces on machine, iterate through list and check for wifi/ethernet connectivity * collect packets for 00:01:30, print to console. */ private static void Sniffer() { NpcapDeviceList devices = NpcapDeviceList.Instance; NpcapDevice activeDevice = null; foreach (NpcapDevice currentDevice in devices) { IsDeviceActive(currentDevice); if ((isDeviceActive && ((currentDevice.ToString().Contains("FriendlyName: Wi-Fi")) || (currentDevice.ToString().Contains("FriendlyName: Ethernet"))))) { activeDevice = currentDevice; break; } } foreach (PcapAddress ipaddress in activeDevice.Addresses) { if (ipaddress.Addr != null && ipaddress.Addr.ipAddress != null) { if (ipaddress.Addr.ipAddress.ToString().Contains("192.168")) { currentDeviceLocalIp = ipaddress.Addr.ipAddress; break; } } } activeDevice.OnPacketArrival += new SharpPcap.PacketArrivalEventHandler(PacketHandler); Console.WriteLine(string.Format("{0}\n", activeDevice)); Console.WriteLine("Initiating Packet Capture..."); activeDevice.Open(DeviceMode.Promiscuous, 1000); activeDevice.Filter = "ip and tcp"; activeDevice.StartCapture(); Thread.Sleep(90000); activeDevice.StopCapture(); activeDevice.Close(); Console.WriteLine("...Packet Capture complete."); Console.WriteLine("==============================================\n\n\n"); }
private static bool IsInteresting(NpcapDevice device) { return(true); }