Esempio n. 1
0
 public CbxObjectItem(string text, int index, LibPcapLiveDevice dev, PcapAddress ipv4)
 {
     this.text  = text;
     this.index = index;
     this.dev   = dev;
     this.ipv4  = ipv4;
 }
Esempio n. 2
0
        public static IPAddressInfo GetIPAddressInfo(PcapDevice device)
        {
            PcapAddress pcap_address = null;

            pcap_address = device.Interface.Addresses
                           .Where(a => a.Addr.type == Sockaddr.AddressTypes.AF_INET_AF_INET6 &&
                                  a.Addr.ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                           .FirstOrDefault();

            if (pcap_address == null)
            {
                throw new InvalidOperationException("IP address not found");
            }

            IPAddressInfo ipaddressinfo = new IPAddressInfo
            {
                IPAddress = pcap_address.Addr.ipAddress,
                Mask      = pcap_address.Netmask.ipAddress,
                Gateway   = device.Interface.GatewayAddresses?.FirstOrDefault()
            };

            ipaddressinfo.IPNetwork   = GetNetworkAddress(ipaddressinfo.Mask, ipaddressinfo.IPAddress);
            ipaddressinfo.IPBroadcast = GetBroadcastAddress(ipaddressinfo.Mask, ipaddressinfo.IPAddress);

            return(ipaddressinfo);
        }
Esempio n. 3
0
        void PopulateInterfaceCombobox()
        {
            LivePcapDeviceList deviceList = LivePcapDeviceList.Instance;

            if (deviceList.Count > 0)
            {
                foreach (LivePcapDevice device in deviceList)
                {
                    PcapAddress address = GetIPV4Sockddr(device);
                    cbInterface.Items.Add(String.Format("{0} -- {1}", device.Interface.FriendlyName, address.Addr.ipAddress));
                }
            }
        }
Esempio n. 4
0
        private void LogDeviceList()
        {
            LivePcapDeviceList deviceList = LivePcapDeviceList.Instance;

            if (deviceList.Count < 1)
            {
                Log("No devices were found on this machine");
            }
            else
            {
                Log(String.Format("The following devices are available on this machine:{0}", Environment.NewLine));

                foreach (LivePcapDevice device in deviceList)
                {
                    Log(device.Interface.FriendlyName);
                    Log(String.Format("{0}: {1}", device.Description, device.Interface.Name));
                    PcapAddress address = GetIPV4Sockddr(device);
                    Log(address.ToString());
                }
            }
        }
 /// <summary>
 /// Detekce, zda je adresa IPv4.
 /// </summary>
 private static bool IsIPV4(PcapAddress address) => address.Addr?.type != Sockaddr.AddressTypes.HARDWARE && IsIPV4(address.Addr?.ipAddress);
 /// <summary>
 /// Funkce pro formátování IP adresy do čitelného formátu.
 /// </summary>
 /// <param name="address">Adresa rozhraní.</param>
 /// <returns>
 /// Naformátovaná podoba adresy. Pokud byla parametru 'address' null, nebo se jedná o HW adresu, tak se vrací null.
 /// </returns>
 private static string FormatIPAddress(PcapAddress address) => address?.Addr?.type == null || address.Addr.type == Sockaddr.AddressTypes.HARDWARE ? null : address?.Addr?.ToString();
Esempio n. 7
0
        private void btnReload_Click(object sender, EventArgs e)
        {
            NetworkInterface[] nicList = NetworkInterface.GetAllNetworkInterfaces();

            cbxNic.Items.Clear();
            for (int i = 0; i < LibPcapLiveDeviceList.Instance.Count; i++)
            {
                LibPcapLiveDevice dev = LibPcapLiveDeviceList.Instance[i];

                /* NICデバイスのインデックスを取得 */
                int did = 0;
                foreach (var ni in nicList.Where
                             (x => dev.Interface.MacAddress.GetAddressBytes().SequenceEqual(
                                 x.GetPhysicalAddress().GetAddressBytes())))
                {
                    did = ni.GetIPProperties().GetIPv4Properties().Index;
                }

                PcapAddress ipv4 = null;
                foreach (PcapAddress addr in dev.Interface.Addresses)
                {
                    ipv4 = addr;
                    if (addr.Addr.sa_family == 2)  /* IPv4*/
                    {
                        break;
                    }
                }

                int cidr = (ipv4.Addr.ipAddress.Address == 0) ? 0 : 32;
                for (; cidr != 0; cidr--)
                {
                    if (0 != (ipv4.Netmask.ipAddress.Address & (1 << (cidr - 1))))
                    {
                        break;
                    }
                }

                string sItem = string.Format("{0:x2}: {1} - {2}/{3} - {5} ({4})",
                                             did, dev.Interface.MacAddress, ipv4.Addr, cidr, dev.Interface.Description, dev.Interface.FriendlyName);
                cbxNic.Items.Add(new CbxObjectItem(sItem, did, dev, ipv4));
            }
            cbxNic.SelectedIndex = 0;


            /* デバイス列挙 */
            foreach (LibPcapLiveDevice dev in LibPcapLiveDeviceList.Instance)
            {
                Debug.WriteLine("FriendlyName : " + dev.Interface.FriendlyName);
                Debug.WriteLine("Name         : " + dev.Interface.Name);
                Debug.WriteLine("MacAddress   : " + dev.Interface.MacAddress);
                Debug.WriteLine("Flags        : " + dev.Interface.Flags);

                foreach (PcapAddress addr in dev.Interface.Addresses)
                {
                    Debug.WriteLine("Addr-family  :" + addr.Addr.sa_family.ToString());
                    Debug.WriteLine("Addr         :" + addr.Addr);
                    Debug.WriteLine("Netmask      :" + addr.Netmask);
                    Debug.WriteLine("Broadaddr    :" + addr.Broadaddr);
                    Debug.WriteLine("Dstaddr      :" + addr.Dstaddr);
                }

                Debug.WriteLine("Description  : " + dev.Interface.Description);
                Debug.WriteLine("");
            }
        }