Example #1
0
 public IPAddress GetIPv6FromNeighbor(Neighbor neighbor)
 {
     for (int i = 0; i < neighbor.GetIPs().Count; i++)
     {
         if (neighbor.GetIPs()[i].GetAddressBytes().Length == 16)
         {
             return(neighbor.GetIPs()[i]);
         }
     }
     return(null);
 }
Example #2
0
        public Neighbor GetNeighbor(IPAddress ip)
        {
            for (int n = neighbors.Count - 1; n >= 0; n--)
            {
                Neighbor neighbor = neighbors[n];

                for (int i = 0; i < neighbor.GetIPs().Count; i++)
                {
                    if (neighbor.GetIPs()[i].Equals(ip))
                    {
                        return(neighbor);
                    }
                }
            }

            return(null);
        }
Example #3
0
        public void AddNeighbor(Neighbor neighbor)
        {
            NeighborEventArgs ea;

            if (neighbor.physicalAddress == null)
            {
                throw new Exception("Neighbor without physical address");
            }
            if (neighbor.physicalAddress.Equals(device.Interface.MacAddress))
            {
                return;
            }
            lock (neighborLock)
            {
                if (ExistsNeighbor(neighbor))
                {
                    Neighbor newNeighbor = GetNeighbor(neighbor.physicalAddress);
                    newNeighbor.Combine(neighbor);
                    ea      = new NeighborEventArgs(newNeighbor);
                    ea.Tipo = NeighborOperacionTreeView.Actualizar;
                    NewNeighbor(newNeighbor, ea);
                    return;
                }

                if (neighbor.GetIPs().Count == 0)
                {
                    throw new Exception("Neighbor without ips");
                }

                neighbors.Add(neighbor);
                ea      = new NeighborEventArgs(neighbor);
                ea.Tipo = NeighborOperacionTreeView.Añadir;
                NewNeighbor(neighbor, ea);
            }
            ReverseResolutionAsync(neighbor); // Resolucion de nombre a partir de IP
            _CheckIfNeighborRoutesPackets(neighbor);
        }
Example #4
0
        private void ReverseResolution(object oNeighbor)
        {
            Neighbor neighbor = (Neighbor)oNeighbor;

            if (neighbor == null)
            {
                return;
            }

            if (string.IsNullOrEmpty(neighbor.computerName))
            {
                IList <IPAddress> ips = new List <IPAddress>(neighbor.GetIPs());
                foreach (IPAddress ip in ips)
                {
                    try
                    {
                        Dns.GetHostEntry(ip);
                    }
                    catch
                    {
                    }
                }
            }
        }
Example #5
0
        public void AddNeighbor(Neighbor neighbor)
        {

            NeighborEventArgs ea;

            if (neighbor.physicalAddress == null)
                throw new Exception("Neighbor without physical address");
            if (neighbor.physicalAddress.Equals(device.Interface.MacAddress))
                return;
            lock (neighborLock)
            {

                if (ExistsNeighbor(neighbor))
                {
                    Neighbor newNeighbor = GetNeighbor(neighbor.physicalAddress);
                    newNeighbor.Combine(neighbor);
                    ea = new NeighborEventArgs(newNeighbor);
                    ea.Tipo = NeighborOperacionTreeView.Actualizar;
                    NewNeighbor(newNeighbor, ea);
                    return;
                }

                if (neighbor.GetIPs().Count == 0)
                    throw new Exception("Neighbor without ips");

                neighbors.Add(neighbor);
                ea = new NeighborEventArgs(neighbor);
                ea.Tipo = NeighborOperacionTreeView.Añadir;
                NewNeighbor(neighbor, ea);

            }
            ReverseResolutionAsync(neighbor); // Resolucion de nombre a partir de IP
            _CheckIfNeighborRoutesPackets(neighbor);

        }
Example #6
0
 public IPAddress GetIPv6FromNeighbor(Neighbor neighbor)
 {
     for (int i = 0; i < neighbor.GetIPs().Count; i++)
     {
         if (neighbor.GetIPs()[i].GetAddressBytes().Length == 16)
             return neighbor.GetIPs()[i];
     }
     return null;
 }
Example #7
0
        private bool IsNeighborFiltered(Neighbor neighbor)
        {
            // true -> El vecino NO se pinta
            // false -> El vecino SI se pinta

            // Se comprueba el nombre
            if (!string.IsNullOrEmpty(neighbor.computerName))
            {
                if (neighbor.computerName.ToLower().Contains(strFilter.ToLower()))
                    return false;
            }

            // Se comprueba la MAC
            if (neighbor.physicalAddress.ToString().ToLower().Contains(strFilter.ToLower()))
                return false;

            // Se comprueban las IPs
            for (int ip = 0; ip < neighbor.GetIPs().Count; ip++)
            {
                if (neighbor.GetIPs()[ip].ToString().ToLower().Contains(strFilter.ToLower()))
                    return false;
            }

            return true;
        }
Example #8
0
        private void Update_Routers(Neighbor neighbor)
        {
            treeView.Invoke(new MethodInvoker(delegate
            {
                treeView.BeginUpdate();
            }));
            if (!treeView.Nodes[mainNode].Nodes[routersNode].Nodes.ContainsKey(neighbor.physicalAddress.ToString()))
            {
                // Si el vecino puede enrutar y no se ha agregado, se agrega
                if (neighbor.canRoutePackets == RouteStatus.CanRoute)
                {
                    treeView.Invoke(new MethodInvoker(delegate
                    {
                        TreeNode tn = treeView.Nodes[mainNode].Nodes[routersNode].Nodes.Add(neighbor.physicalAddress.ToString(), neighbor.physicalAddress.ToString());
                        tn.Tag = neighbor;
                        tn.ImageIndex = tn.SelectedImageIndex = 11;

                        if (treeView.Nodes[mainNode].Nodes[routersNode].Nodes.Count == 1)
                            treeView.Nodes[mainNode].Nodes[routersNode].Expand();
                    }));
                }
            }

            // Como se puede haber insertado el nodo en el IF anterior, se vuelve a comprobar a ver si podemos insertarle la IP
            if (treeView.Nodes[mainNode].Nodes[routersNode].Nodes.ContainsKey(neighbor.physicalAddress.ToString()))
            {
                // El router existe. Se insertan nodos desplegables por cada IP que tenga el router
                TreeNode tnRouter = treeView.Nodes[mainNode].Nodes[routersNode].Nodes[neighbor.physicalAddress.ToString()];

                foreach (IPAddress ipAddress in neighbor.GetIPs())
                {
                    // Se agrega la IP en caso de que no exista
                    if (!tnRouter.Nodes.ContainsKey(ipAddress.ToString()))
                    {
                        lbRoutersBruteForce.Items.Add(ipAddress.ToString());
                        treeView.Invoke(new MethodInvoker(delegate
                        {
                            TreeNode tnRouterIP = tnRouter.Nodes.Add(ipAddress.ToString(), ipAddress.ToString());
                            tnRouterIP.ImageIndex = tnRouterIP.SelectedImageIndex = 0;
                            tnRouterIP.Tag = ipAddress;
                            tnRouter.Expand();

                            Thread tColorChanger = new Thread(new ParameterizedThreadStart(ChangeColor));
                            tColorChanger.IsBackground = true;
                            tColorChanger.Start(tnRouterIP);
                        }));
                    }
                    else
                    {
                        // Si ya existia, se agregan los puertos en caso de que no existan.
                        TreeNode tnIP = tnRouter.Nodes[ipAddress.ToString()];
                        UpdatePortsOfIPNode(tnIP);
                    }
                }

                // Si el router tiene nombre, se le establece en el nodo
                if (!tnRouter.Text.StartsWith(neighbor.ToString()))
                {
                    treeView.Invoke(new MethodInvoker(delegate
                    {
                        tnRouter.Text = neighbor.ToString();
                        Thread tColorChanger = new Thread(new ParameterizedThreadStart(ChangeColorUpdate));
                        tColorChanger.IsBackground = true;
                        tColorChanger.Start(tnRouter);
                    }));
                }

                // Se le pone el iconcillo de OS
                if ((neighbor.osPlatform != Platform.Unknow) && (tnRouter.ImageIndex == 11))
                {
                    treeView.Invoke(new MethodInvoker(delegate
                    {
                        int imageOS = Program.CurrentProject.data.GetImageNumberOS(neighbor.osPlatform);
                        tnRouter.ImageIndex = tnRouter.SelectedImageIndex = imageOS;
                    }));
                }
            }
            treeView.Invoke(new MethodInvoker(delegate
            {
                treeView.EndUpdate();
            }));
        }