Beispiel #1
0
        public static SSLPortExe GenerateInstanceOrNullFromArguments(string[] args, Rectangle location, object osObj, Computer target)
        {
            OS operatingSystem = (OS)osObj;

            if (args.Length < 4)
            {
                operatingSystem.write("--------------------------------------");
                operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("ERROR: Not enough arguments!"));
                operatingSystem.write(LocaleTerms.Loc("Usage:") + " SSLTrojan [" + LocaleTerms.Loc("PortNum") + "] [-" + LocaleTerms.Loc("option") + "] [" + LocaleTerms.Loc("option port num") + "]");
                operatingSystem.write(LocaleTerms.Loc("Valid Options:") + " [-s (SSH)] [-f (FTP)] [-w (HTTP)] [-r (RTSP)]");
                operatingSystem.write("--------------------------------------");
                return((SSLPortExe)null);
            }
            try
            {
                Convert.ToInt32(args[1]);
                int                int32_1 = Convert.ToInt32(args[3]);
                string             str     = args[2].ToLower();
                SSLPortExe.SSLMode mode    = SSLPortExe.SSLMode.SSH;
                switch (str)
                {
                case "-s":
                    mode = SSLPortExe.SSLMode.SSH;
                    break;

                case "-f":
                    mode = SSLPortExe.SSLMode.FTP;
                    break;

                case "-w":
                    mode = SSLPortExe.SSLMode.Web;
                    break;

                case "-r":
                    mode = SSLPortExe.SSLMode.RTSP;
                    break;

                default:
                    str = (string)null;
                    break;
                }
                if (str == null)
                {
                    operatingSystem.write("--------------------------------------");
                    operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Mode {0} is invalid."), (object)args[2]));
                    operatingSystem.write(LocaleTerms.Loc("Valid Options:") + " [-s (SSH)] [-f (FTP)] [-w (HTTP)] [-r (RTSP)]");
                    operatingSystem.write("--------------------------------------");
                    return((SSLPortExe)null);
                }
                int  num  = -1;
                bool flag = false;
                switch (mode)
                {
                case SSLPortExe.SSLMode.SSH:
                    flag = target.isPortOpen(22);
                    num  = target.GetDisplayPortNumberFromCodePort(22);
                    break;

                case SSLPortExe.SSLMode.FTP:
                    flag = target.isPortOpen(21);
                    num  = target.GetDisplayPortNumberFromCodePort(21);
                    break;

                case SSLPortExe.SSLMode.Web:
                    flag = target.isPortOpen(80);
                    num  = target.GetDisplayPortNumberFromCodePort(80);
                    break;

                case SSLPortExe.SSLMode.RTSP:
                    flag = target.isPortOpen(554);
                    num  = target.GetDisplayPortNumberFromCodePort(554);
                    break;
                }
                if (!flag)
                {
                    operatingSystem.write("--------------------------------------");
                    operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("Error: Target bypass port is closed!"));
                    return((SSLPortExe)null);
                }
                int int32_2;
                try
                {
                    int32_2 = Convert.ToInt32(int32_1);
                }
                catch (FormatException ex)
                {
                    operatingSystem.write("--------------------------------------");
                    operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Invalid tunnel port number : \"{0}\""), (object)int32_1));
                    return((SSLPortExe)null);
                }
                if (int32_2 == num)
                {
                    return(new SSLPortExe(location, operatingSystem, mode));
                }
                operatingSystem.write("--------------------------------------");
                operatingSystem.write("SSLTrojan " + string.Format(LocaleTerms.Loc("Error: Tunnel port number {0} does not match expected service \"{1}"), (object)int32_2, (object)str));
                return((SSLPortExe)null);
            }
            catch (Exception ex)
            {
                operatingSystem.write("SSLTrojan " + LocaleTerms.Loc("Error:"));
                operatingSystem.write(ex.Message);
                return((SSLPortExe)null);
            }
        }