Example #1
0
        private static int AttemptExeProgramExecution(OS os, string[] p)
        {
            Computer target            = os.connectedComp != null ? os.connectedComp : os.thisComputer;
            Folder   folder            = os.thisComputer.files.root.searchForFolder("bin");
            int      indexOfExeProgram = ProgramRunner.GetFileIndexOfExeProgram(p[0], (object)folder);
            bool     flag   = indexOfExeProgram == int.MaxValue;
            int      index1 = -1;
            int      index2 = -1;

            if (indexOfExeProgram < 0)
            {
                return(-1);
            }
            string exeFileData = (string)null;
            string exeName     = (string)null;

            if (!flag)
            {
                exeFileData = folder.files[indexOfExeProgram].data;
                for (int index3 = 0; index3 < PortExploits.exeNums.Count; ++index3)
                {
                    int exeNum = PortExploits.exeNums[index3];
                    if (PortExploits.crackExeData[exeNum].Equals(exeFileData) || PortExploits.crackExeDataLocalRNG[exeNum].Equals(exeFileData))
                    {
                        exeName = PortExploits.cracks[exeNum].Replace(".exe", "").ToLower();
                        index2  = exeNum;
                        break;
                    }
                }
                if (exeName == "ftpsprint")
                {
                    int num;
                    index2 = num = 21;
                    if (exeFileData == PortExploits.crackExeData[211] || exeFileData == PortExploits.crackExeDataLocalRNG[211])
                    {
                        index1 = 211;
                    }
                }
            }
            else
            {
                exeName = p[0].Replace(".exe", "").ToLower();
                if (exeName == "notes")
                {
                    exeFileData = PortExploits.crackExeData[8];
                }
                if (exeName == "tutorial")
                {
                    exeFileData = PortExploits.crackExeData[1];
                }
            }
            if (exeName == null)
            {
                return(-1);
            }
            int targetPort = -1;
            int codePort   = -1;

            if (!flag && PortExploits.needsPort[index2])
            {
                if (p.Length > 1)
                {
                    try
                    {
                        int int32 = Convert.ToInt32(p[1]);
                        int num   = int32;
                        codePort = target.GetCodePortNumberFromDisplayPort(int32);
                        if (num == codePort)
                        {
                            int numberFromCodePort = target.GetDisplayPortNumberFromCodePort(codePort);
                            if (codePort != numberFromCodePort)
                            {
                                codePort = -1;
                            }
                        }
                    }
                    catch (FormatException ex)
                    {
                        codePort = -1;
                    }
                }
                else
                {
                    if (exeName == "ssltrojan")
                    {
                        SSLPortExe.GenerateInstanceOrNullFromArguments(p, Rectangle.Empty, (object)os, target);
                        return(0);
                    }
                    os.write(LocaleTerms.Loc("No port number Provided"));
                    return(0);
                }
            }
            if (!flag && PortExploits.needsPort[index2])
            {
                try
                {
                    for (int index3 = 0; index3 < target.ports.Count; ++index3)
                    {
                        if (target.ports[index3] == codePort)
                        {
                            targetPort = target.ports[index3];
                            break;
                        }
                    }
                }
                catch
                {
                    os.write(LocaleTerms.Loc("No port number Provided"));
                    return(0);
                }
                if (targetPort == -1)
                {
                    os.write(LocaleTerms.Loc("Target Port is Closed"));
                    return(0);
                }
                if (index1 <= -1)
                {
                    index1 = targetPort;
                }
                if (index1 == 211 && targetPort != 21 || exeFileData != PortExploits.crackExeData[index1] && exeFileData != PortExploits.crackExeDataLocalRNG[index1])
                {
                    os.write(LocaleTerms.Loc("Target Port running incompatible service for this executable"));
                    return(0);
                }
            }
            os.launchExecutable(exeName, exeFileData, targetPort, p, p[0]);
            return(1);
        }