Example #1
0
 public override void initFiles()
 {
     root = new Folder("web");
     if (BaseWebpageData == null)
         BaseWebpageData = FileSanitiser.purifyStringForDisplay(Utils.readEntireFile(webPageFileLocation));
     var fileEntry = new FileEntry(BaseWebpageData, "index.html");
     root.files.Add(fileEntry);
     lastLoadedFile = fileEntry;
     comp.files.root.folders.Add(root);
 }
Example #2
0
 public virtual void LoadWebPage(string url = "index.html")
 {
     saveURL = url;
     var fileEntry = root.searchForFile(url);
     if (fileEntry != null)
     {
         shouldShow404 = false;
         ShowPage(fileEntry.data);
     }
     else
         shouldShow404 = true;
     lastLoadedFile = fileEntry;
 }
Example #3
0
 public void generateBaseCorporateSite(string companyName,
     string targetBaseFile = "Content/Web/BaseCorporatePage.html")
 {
     if (BaseComnayPageData == null || targetBaseFile != "Content/Web/BaseCorporatePage.html")
         BaseComnayPageData = FileSanitiser.purifyStringForDisplay(Utils.readEntireFile(targetBaseFile));
     var dataEntry = BaseComnayPageData.Replace("#$#COMPANYNAME#$#", companyName)
         .Replace("#$#LC_COMPANYNAME#$#", companyName.Replace(' ', '_'));
     var fileEntry = root.searchForFile("index.html");
     if (fileEntry == null)
         fileEntry = new FileEntry(dataEntry, "index.html");
     else
         fileEntry.data = dataEntry;
     comp.files.root.searchForFolder("home").files.Add(new FileEntry(fileEntry.data, "index_BACKUP.html"));
 }
Example #4
0
 public override void initFiles()
 {
     base.initFiles();
     var folder = comp.files.root.searchForFolder("home");
     if (folder == null)
         return;
     var fileEntry =
         new FileEntry(
             "This server is an ISP routing and management system\n" +
             "designed to allow for easy setup and administration\nof " +
             "third party ISP management companies.\n To use the management system, first " +
             "aquire an\nadministrator account for this machine\n(contact your sysadmin team), " +
             "then\n search for the IP address in question.\n\n" +
             "If this program has technical issues,\ncontact customer support on\n" + "1-800-827-6364",
             "ISP_About_Message.txt");
     folder.files.Add(fileEntry);
 }
 private void DrawWelcome(Rectangle bounds, SpriteBatch sb)
 {
     var num1 = logoRenderBase.Height/(float) logoRenderBase.Width;
     var num2 = 45;
     var dest = new Rectangle(bounds.X - num2 + 20, bounds.Y, bounds.Width + num2,
         (int) ((bounds.Width + 2*num2)*(double) num1));
     DrawLogo(dest, sb);
     var rectangle = new Rectangle(bounds.X, dest.Y + dest.Height, bounds.Width, 60);
     sb.Draw(scanlinesTextBackground, rectangle, Utils.AddativeWhite*0.2f);
     for (var index = 0; index < Stars.Count; ++index)
         DrawStar(rectangle, sb, Stars[index]);
     rectangle.X += 100;
     rectangle.Width = bounds.Width - 200;
     rectangle.Y += 13;
     rectangle.Height = 35;
     if (Button.doButton(98373721, rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height, "GO!",
         Utils.AddativeWhite))
     {
         activeState = null;
         var str = os.defaultUser.name;
         for (var index = 0; index < savesFolder.files.Count; ++index)
         {
             if (savesFolder.files[index].name.StartsWith(str))
             {
                 userFilePath = savesFolder.files[index].name;
                 activeState = PointClickerGameState.LoadFromString(savesFolder.files[index].data);
                 break;
             }
         }
         if (activeState == null)
         {
             activeState = new PointClickerGameState(upgradeNames.Count);
             var fileEntry = new FileEntry(activeState.ToSaveString(), str + ".pcsav");
             savesFolder.files.Add(fileEntry);
             userFilePath = fileEntry.name;
         }
         state = PointClickerScreenState.Main;
         currentRate = 0.0f;
         ActiveStory = "";
         UpdateRate();
         UpdateStory();
         UpdatePoints();
     }
     if (
         !Button.doButton(98373732, bounds.X + 2, bounds.Y + bounds.Height - 19, 180, 18, "Exit  :<",
             os.lockedColor))
         return;
     os.display.command = "connect";
 }
 public void initFilesystem()
 {
     rootPath = new List<int>();
     missionFolderPath = new List<int>();
     root = new Folder("MsgBoard");
     rootPath.Add(comp.files.root.folders.IndexOf(root));
     missionFolderPath.Add(comp.files.root.folders.IndexOf(root));
     missionFolder = new Folder("listings");
     missionFolderPath.Add(0);
     root.folders.Add(missionFolder);
     closedMissionsFolder = new Folder("closed");
     root.folders.Add(closedMissionsFolder);
     sysFile = new FileEntry(Computer.generateBinaryString(1024), "config.sys");
     root.files.Add(sysFile);
     root.files.Add(
         new FileEntry(
             "  ----- WARNING -----  \n\nconfig.sys in this folder is a critical system file.\nDO NOT DELETE OR RENAME IT\nDoing so will crash the board and bring the host program down\nChanges to the config should be made only during scheduled outages to avoid this issue\n",
             "Config_CAUTION.txt"));
     comp.files.root.folders.Add(root);
 }
Example #7
0
 private bool CompleteLoading()
 {
     try
     {
         targetFile = destFolder.searchForFile(targetFilename);
         if (targetFile == null)
         {
             status = DecHeadStatus.Error;
             errorMessage = "File not found";
             return false;
         }
         if (FileEncrypter.FileIsEncrypted(targetFile.data, "") != 0)
             return true;
         status = DecHeadStatus.Error;
         errorMessage = "File is not\nDEC encrypted";
         return false;
     }
     catch (Exception ex)
     {
         status = DecHeadStatus.Error;
         errorMessage = "Fatal error in loading";
         return false;
     }
 }
Example #8
0
 public void doInboxDisplay(Rectangle bounds, SpriteBatch sb)
 {
     var height = 24;
     doInboxHeader(bounds, sb);
     var vector2 = new Vector2(bounds.X + 2, bounds.Y + 91);
     var folder = userFolder.folders[0];
     var destinationRectangle1 = new Rectangle(bounds.X + 2, (int) vector2.Y, bounds.Width - 4, height);
     Button.outlineOnly = true;
     var num1 = 0;
     while (destinationRectangle1.Y + destinationRectangle1.Height < bounds.Y + bounds.Height - 2)
     {
         sb.Draw(Utils.white, destinationRectangle1, num1%2 == 0 ? evenLine : oddLine);
         ++num1;
         var num2 = destinationRectangle1.Height;
         destinationRectangle1.Height = 1;
         if (num1 > 1)
             sb.Draw(Utils.white, destinationRectangle1, seperatorLineColor);
         destinationRectangle1.Height = num2;
         destinationRectangle1.Y += height;
     }
     var destinationRectangle2 = GuiData.tmpRect;
     drawBackingGradient(bounds, sb);
     destinationRectangle2.X = bounds.X + 1;
     destinationRectangle2.Y = (int) vector2.Y - 3;
     destinationRectangle2.Width = bounds.Width - 2;
     destinationRectangle2.Height = 3;
     sb.Draw(Utils.white, destinationRectangle2, themeColor);
     destinationRectangle2.X += destinationRectangle2.Width;
     destinationRectangle2.Width = 3;
     sb.Draw(Utils.white, destinationRectangle2, themeColor);
     destinationRectangle2.X = destinationRectangle1.X;
     destinationRectangle2.Y = (int) vector2.Y;
     destinationRectangle2.Width = 160;
     destinationRectangle2.Height = bounds.Height - (destinationRectangle2.Y - bounds.Y) - 1;
     sb.Draw(Utils.white, destinationRectangle2, senderDarkeningColor);
     destinationRectangle2.X += destinationRectangle2.Width;
     destinationRectangle2.Width = 3;
     sb.Draw(Utils.white, destinationRectangle2, themeColor);
     destinationRectangle2.X = destinationRectangle1.X;
     destinationRectangle2.Y = (int) vector2.Y;
     destinationRectangle2.Width = 160;
     destinationRectangle2.Height = bounds.Height - (destinationRectangle2.Y - bounds.Y) - 1;
     destinationRectangle1.Y = (int) vector2.Y;
     TextItem.DrawShadow = false;
     var val1 = num1;
     var num3 = Math.Max(0, val1*inboxPage - 1);
     totalPagesDetected = (int) (folder.files.Count/(double) val1);
     var num4 = Math.Min(val1, folder.files.Count - num3);
     for (var index = num3; index < num3 + num4; ++index)
     {
         try
         {
             var strArray = folder.files[index].data.Split(emailSplitDelims, StringSplitOptions.None);
             var num2 = Convert.ToByte(strArray[0]);
             var myID = 8100 + index;
             if (GuiData.hot == myID)
             {
                 var destinationRectangle3 = new Rectangle(bounds.X + 2, destinationRectangle1.Y + 1,
                     bounds.Width - 4, height - 2);
                 sb.Draw(Utils.white, destinationRectangle3, index%2 == 0 ? Color.White*0.07f : Color.Black*0.2f);
             }
             if (Button.doButton(myID, bounds.X + 2, destinationRectangle1.Y + 1, bounds.Width - 4, height - 2,
                 "", Color.Transparent))
             {
                 state = 4;
                 selectedEmail = folder.files[index];
                 emailData = selectedEmail.data.Split(emailSplitDelims, StringSplitOptions.None);
                 selectedEmail.data = "1" + selectedEmail.data.Substring(1);
                 if (sectionedPanel != null)
                     sectionedPanel.ScrollDown = 0.0f;
             }
             if (num2 == 0)
                 sb.Draw(unopenedIcon, vector2 + Vector2.One, themeColor);
             TextItem.doFontLabel(vector2 + new Vector2(unopenedIcon.Width + 1, 2f), strArray[1],
                 GuiData.tinyfont, textColor, destinationRectangle2.Width - unopenedIcon.Width - 3, height);
             TextItem.doFontLabel(vector2 + new Vector2(destinationRectangle2.Width + 10, 2f), strArray[2],
                 GuiData.tinyfont, textColor, bounds.Width - destinationRectangle2.Width - 20, height);
             vector2.Y += height;
             destinationRectangle1.Y = (int) vector2.Y;
         }
         catch (FormatException ex)
         {
         }
     }
     Button.outlineOnly = false;
 }
Example #9
0
 public static void AddEOSComp(XmlReader rdr, Computer compAttatchedTo, object osObj)
 {
     var os = (OS) osObj;
     var compName = "Unregistered eOS Device";
     var str1 = compAttatchedTo.idName + "_eos";
     if (rdr.MoveToAttribute("name"))
         compName = rdr.ReadContentAsString();
     if (rdr.MoveToAttribute("id"))
         str1 = rdr.ReadContentAsString();
     var device = new Computer(compName, NetworkMap.generateRandomIP(), os.netMap.getRandomPosition(), 0, 5, os);
     device.idName = str1;
     var str2 = "ePhone";
     if (rdr.MoveToAttribute("icon"))
         str2 = rdr.ReadContentAsString();
     device.icon = str2;
     device.location = compAttatchedTo.location +
                       Corporation.getNearbyNodeOffset(compAttatchedTo.location, Utils.random.Next(12), 12,
                           os.netMap);
     device.setAdminPassword("alpine");
     ComputerLoader.loadPortsIntoComputer("22,3659", device);
     device.portsNeededForCrack = 2;
     GenerateEOSFilesystem(device);
     rdr.Read();
     var folder1 = device.files.root.searchForFolder("eos");
     var folder2 = folder1.searchForFolder("notes");
     var folder3 = folder1.searchForFolder("mail");
     while (!(rdr.Name == "eosDevice") || rdr.IsStartElement())
     {
         if (rdr.Name.ToLower() == "note" && rdr.IsStartElement())
         {
             string nameEntry = null;
             if (rdr.MoveToAttribute("filename"))
                 nameEntry = rdr.ReadContentAsString();
             var num = (int) rdr.MoveToContent();
             var dataEntry = rdr.ReadElementContentAsString().TrimStart();
             if (nameEntry == null)
             {
                 var length = dataEntry.IndexOf("\n");
                 if (length == -1)
                     length = dataEntry.IndexOf("\n");
                 if (length == -1)
                     length = dataEntry.Length;
                 nameEntry = dataEntry.Substring(0, length).Replace(" ", "_").ToLower().Trim() + ".txt";
             }
             var fileEntry = new FileEntry(dataEntry, nameEntry);
             folder2.files.Add(fileEntry);
         }
         if (rdr.Name.ToLower() == "mail" && rdr.IsStartElement())
         {
             string str3 = null;
             string str4 = null;
             if (rdr.MoveToAttribute("username"))
                 str3 = rdr.ReadContentAsString();
             if (rdr.MoveToAttribute("pass"))
                 str4 = rdr.ReadContentAsString();
             var dataEntry = "MAIL ACCOUNT : " + str3 + "\nAccount   :" + str3 + "\nPassword :"******"\nLast Sync :" + DateTime.Now + "\n\n" + Computer.generateBinaryString(512);
             var nameEntry = str3 + ".act";
             folder3.files.Add(new FileEntry(dataEntry, nameEntry));
         }
         rdr.Read();
         if (rdr.EOF)
             break;
     }
     os.netMap.nodes.Add(device);
     ComputerLoader.postAllLoadedActions += () => device.links.Add(os.netMap.nodes.IndexOf(compAttatchedTo));
     if (compAttatchedTo.attatchedDeviceIDs != null)
         compAttatchedTo.attatchedDeviceIDs += ",";
     compAttatchedTo.attatchedDeviceIDs += device.idName;
 }
Example #10
0
 private void addMission(ActiveMission mission, bool insertAtTop = false)
 {
     contractRegistryNumber += Utils.getRandomByte() + 1;
     listingMissions.Add(string.Concat(contractRegistryNumber), mission);
     var fileEntry = new FileEntry(
         MissionSerializer.generateMissionFile(mission, contractRegistryNumber, "CSEC"),
         "Contract#" + contractRegistryNumber);
     if (insertAtTop)
         listingsFolder.files.Insert(0, fileEntry);
     else
         listingsFolder.files.Add(fileEntry);
 }
Example #11
0
 public FileSystem generateRandomFileSystem()
 {
     var fileSystem = new FileSystem();
     if (type != 5)
     {
         var num1 = Utils.random.Next(6);
         for (var index1 = 0; index1 < num1; ++index1)
         {
             var num2 = 0;
             string str1;
             do
             {
                 str1 = (num2 > 10 ? "AA" : "") + generateFolderName(Utils.random.Next(100));
                 ++num2;
             } while (fileSystem.root.folders[0].searchForFolder(str1) != null);
             var folder = new Folder(str1);
             var num3 = Utils.random.Next(3);
             for (var index2 = 0; index2 < num3; ++index2)
             {
                 if (Utils.random.NextDouble() > 0.8)
                 {
                     var num4 = 0;
                     string str2;
                     do
                     {
                         str2 = generateFileName(Utils.random.Next(300));
                         ++num4;
                         if (num4 > 3)
                             str2 = (Utils.getRandomChar() + Utils.getRandomChar()).ToString() + str2;
                     } while (folder.searchForFile(str2) != null);
                     folder.files.Add(
                         new FileEntry(
                             Utils.flipCoin()
                                 ? generateFileData(Utils.random.Next(500))
                                 : generateBinaryString(500), str2));
                 }
                 else
                 {
                     var fileEntry = new FileEntry();
                     var str2 = fileEntry.name;
                     while (folder.searchForFile(fileEntry.name) != null)
                         fileEntry.name = Utils.getRandomChar().ToString() + (int) Utils.getRandomChar() +
                                          str2;
                     folder.files.Add(fileEntry);
                 }
             }
             fileSystem.root.folders[0].folders.Add(folder);
         }
     }
     else
         fileSystem.root.folders.Insert(0, EOSComp.GenerateEOSFolder());
     return fileSystem;
 }
Example #12
0
 private static Computer addFileDeletionRequirements(Computer c, OS os)
 {
     var nameEntry = "Archive_Data.zip";
     if (customKeysWereSet && MissionGenerationParser.File != null)
         nameEntry = MissionGenerationParser.File;
     var fileEntry = new FileEntry(
         customFileData != null ? customFileData : Computer.generateBinaryString(2000), nameEntry);
     var folder = c.files.root.folders[0];
     if (customKeysWereSet && MissionGenerationParser.Path != null)
         folder = c.getFolderFromPath(MissionGenerationParser.Path, true);
     folder.files.Add(fileEntry);
     MissionGenerationParser.File = nameEntry;
     if (!customKeysWereSet && MissionGenerationParser.Path != null)
         MissionGenerationParser.Path = "home";
     return c;
 }
 private FileEntry getFileForPerson(Person p)
 {
     var fileEntry = new FileEntry();
     fileEntry.name = convertNameToFileNameStart(p.FullName);
     var num = 0;
     while (entries.searchForFile(fileEntry.name) != null)
     {
         if (num == 0)
             fileEntry.name = fileEntry.name.Substring(0, fileEntry.name.Length - 1) + num;
         else
             fileEntry.name += "1";
         ++num;
     }
     var str = p.FullName + "\n--------------------\n";
     for (var index = 0; index < p.degrees.Count; ++index)
         str = str + p.degrees[index].name + "\n" + p.degrees[index].uni + "\n" + p.degrees[index].GPA +
               "\n--------------------";
     fileEntry.data = str;
     return fileEntry;
 }
Example #14
0
 public static void parseInputMessage(string message, OS os)
 {
     if (message.Equals(""))
         return;
     var strArray1 = message.Split(delims);
     if (strArray1.Length == 0)
         return;
     if (os.thisComputer != null && os.thisComputer.ip.Equals(strArray1[1]))
         os.warningFlash();
     if (strArray1[0].Equals("init"))
     {
         var Seed = Convert.ToInt32(strArray1[1]);
         Utils.random = new Random(Seed);
         os.canRunContent = true;
         os.LoadContent();
         os.write("Seed Established :" + Seed);
     }
     else if (strArray1[0].Equals("chat"))
     {
         var s = "";
         for (var index = 2; index < strArray1.Length; ++index)
             s = s + strArray1[index] + " ";
         os.write(strArray1[1] + ": " + DisplayModule.splitForWidth(s, 350));
     }
     else if (strArray1[0].Equals("clientConnect"))
         os.write("Connection Established");
     else if (strArray1[0].Equals("cConnection"))
     {
         var comp = getComp(strArray1[1], os);
         if (comp == null)
         {
             os.write("Error in Message : " + message);
         }
         else
         {
             comp.silent = true;
             comp.connect(strArray1[2]);
             comp.silent = false;
             os.opponentLocation = strArray1[1];
         }
     }
     else if (strArray1[0].Equals("cDisconnect"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.disconnecting(strArray1[2]);
         comp.silent = false;
         os.opponentLocation = "";
     }
     else if (strArray1[0].Equals("cAdmin"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.giveAdmin(strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cPortOpen"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.openPort(Convert.ToInt32(strArray1[3]), strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cPortClose"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.closePort(Convert.ToInt32(strArray1[3]), strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cFile"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         var f = new FileEntry("", strArray1[3]);
         comp.canReadFile(strArray1[2], f, Convert.ToInt32(strArray1[4]));
         comp.silent = false;
     }
     else if (strArray1[0].Equals("newComp"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var compLocation = new Vector2(Convert.ToInt32(strArray2[2]), Convert.ToInt32(strArray2[3]));
         var computer = new Computer(strArray2[5], strArray2[1], compLocation, Convert.ToInt32(strArray2[4]), 1,
             os);
         computer.idName = "opponent#" + generatedComputerCount;
         ++generatedComputerCount;
         computer.addMultiplayerTargetFile();
         os.netMap.nodes.Add(computer);
         os.opponentComputer = computer;
     }
     else if (strArray1[0].Equals("cDelete"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var comp = getComp(strArray2[1], os);
         var folderPath = new List<int>();
         for (var index = 4; index < strArray2.Length; ++index)
         {
             if (strArray2[index] != "")
                 folderPath.Add(Convert.ToInt32(strArray2[index]));
         }
         comp.silent = true;
         comp.deleteFile(strArray2[2], strArray2[3], folderPath);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cMake"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var comp = getComp(strArray2[1], os);
         var folderPath = new List<int>();
         for (var index = 4; index < strArray2.Length; ++index)
         {
             if (strArray2[index] != "")
                 folderPath.Add(Convert.ToInt32(strArray2[index]));
         }
         comp.silent = true;
         comp.makeFile(strArray2[2], strArray2[3], strArray2[4], folderPath, false);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cMove"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var comp = getComp(strArray2[1], os);
         var separator = new char[1]
         {
             '%'
         };
         var folderPath = new List<int>();
         var strArray3 = strArray2[5].Split(separator, 500, StringSplitOptions.RemoveEmptyEntries);
         for (var index = 0; index < strArray3.Length; ++index)
         {
             if (strArray2[index] != "")
                 folderPath.Add(Convert.ToInt32(strArray2[index]));
         }
         var destFolderPath = new List<int>();
         var strArray4 = strArray2[6].Split(separator, 500, StringSplitOptions.RemoveEmptyEntries);
         for (var index = 0; index < strArray4.Length; ++index)
         {
             if (strArray2[index] != "")
                 destFolderPath.Add(Convert.ToInt32(strArray2[index]));
         }
         comp.silent = true;
         comp.moveFile(strArray2[2], strArray2[3], strArray2[4], folderPath, destFolderPath);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cMkDir"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var comp = getComp(strArray2[1], os);
         var folderPath = new List<int>();
         for (var index = 4; index < strArray2.Length; ++index)
         {
             if (strArray2[index] != "")
                 folderPath.Add(Convert.ToInt32(strArray2[index]));
         }
         comp.silent = true;
         comp.makeFolder(strArray2[2], strArray2[3], folderPath);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cAddUser"))
     {
         var strArray2 = message.Split(specSplitDelims);
         var comp = getComp(strArray2[1], os);
         var name = strArray2[3];
         var pass = strArray2[4];
         var type = Convert.ToByte(strArray2[5]);
         comp.silent = true;
         comp.addNewUser(strArray2[2], name, pass, type);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cCopy"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.canCopyFile(strArray1[2], strArray1[3]);
         comp.silent = false;
         FileEntry fileEntry1 = null;
         for (var index = 0; index < comp.files.root.folders[2].files.Count; ++index)
         {
             if (comp.files.root.folders[2].files[index].name.Equals(strArray1[3]))
                 fileEntry1 = comp.files.root.folders[2].files[index];
         }
         var fileEntry2 = new FileEntry(fileEntry1.data, fileEntry1.name);
         getComp(strArray1[2], os).files.root.folders[2].files.Add(fileEntry2);
     }
     else if (strArray1[0].Equals("cCDDrive"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         if (strArray1[2].Equals("open"))
             comp.openCDTray(strArray1[1]);
         else
             comp.closeCDTray(strArray1[1]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cCrash"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.crash(strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cReboot"))
     {
         var comp = getComp(strArray1[1], os);
         comp.silent = true;
         comp.reboot(strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("cFBClients"))
     {
         var comp = getComp(strArray1[1], os);
         if (os.connectedComp != null && os.connectedComp.ip.Equals(strArray1[1]))
             os.exes.Add(new ForkBombExe(os.getExeBounds(), os));
         comp.silent = true;
         comp.forkBombClients(strArray1[2]);
         comp.silent = false;
     }
     else if (strArray1[0].Equals("eForkBomb"))
     {
         if (!os.thisComputer.ip.Equals(strArray1[1]))
             return;
         var forkBombExe = new ForkBombExe(os.getExeBounds(), os);
         forkBombExe.LoadContent();
         os.exes.Add(forkBombExe);
     }
     else if (strArray1[0].Equals("mpOpponentWin"))
     {
         os.endMultiplayerMatch(false);
     }
     else
     {
         if (strArray1[0].Equals("stayAlive"))
             return;
         os.write("MSG: " + message);
     }
 }
Example #15
0
 private void CompleteWorking()
 {
     var strArray = FileEncrypter.DecryptString(targetFile.data, password);
     if (!destFilename.Contains("[NUMBER]"))
         destFilename += "[NUMBER]";
     var str1 = destFilename.Replace("[NUMBER]", "");
     var str2 = strArray[3] == null ? str1.Replace("[EXT]", ".txt") : str1.Replace("[EXT]", strArray[3]);
     if (destFolder.containsFile(str2))
     {
         var num = 1;
         do
         {
             str2 = destFilename.Replace("[NUMBER]", "(" + num + ")");
             ++num;
         } while (destFolder.containsFile(str2));
     }
     var fileEntry = new FileEntry(strArray[2], str2);
     writtenFilename = str2;
     destFolder.files.Add(fileEntry);
     os.write("Decryption complete - file " + targetFilename + " decrypted to target file " + targetFilename);
     os.write("Encryption Header    : \"" + strArray[0] + "\"");
     os.write("Encryption Source IP: \"" + strArray[1] + "\"");
     displayHeader = strArray[0];
     displayIP = strArray[1];
 }
Example #16
0
 private bool CompleteLoading()
 {
     try
     {
         targetFile = destFolder.searchForFile(targetFilename);
         if (targetFile == null)
         {
             status = DecypherStatus.Error;
             errorMessage = "File not found";
             return false;
         }
         switch (FileEncrypter.FileIsEncrypted(targetFile.data, password))
         {
             case 0:
                 status = DecypherStatus.Error;
                 errorMessage = "File is not\nDEC encrypted";
                 return false;
             case 2:
                 status = DecypherStatus.Error;
                 errorMessage = !(password == "")
                     ? "Provided Password\nIs Incorrect"
                     : "This File Requires\n a Password ";
                 return false;
             default:
                 return true;
         }
     }
     catch (Exception ex)
     {
         status = DecypherStatus.Error;
         errorMessage = "Fatal error in loading";
         return false;
     }
 }
Example #17
0
        public static void RunShellReopenerExe(string[] args, object osObj, Computer target)
        {
            OS   os    = (OS)osObj;
            bool flag1 = false;
            bool flag2 = false;

            if (args.Length > 1)
            {
                if (args[1].ToLower() == "-s")
                {
                    flag2 = true;
                }
                else if (args[1].ToLower() == "-o")
                {
                    flag1 = true;
                }
            }
            if (!flag1 && !flag2)
            {
                os.write("--------------------------------------");
                os.write("OpShell " + LocaleTerms.Loc("ERROR: Not enough arguments!"));
                os.write(LocaleTerms.Loc("Usage:") + " OpShell [-" + LocaleTerms.Loc("option") + "]");
                os.write(LocaleTerms.Loc("Valid Options:") + " [-s (" + LocaleTerms.Loc("Save state") + ")] [-o (" + LocaleTerms.Loc("Re-open") + ")]");
                os.write("--------------------------------------");
            }
            else
            {
                Folder          folder       = os.thisComputer.files.root.searchForFolder("sys");
                FileEntry       fileEntry    = folder.searchForFile("ShellSources.txt");
                List <ShellExe> shellExeList = new List <ShellExe>();
                for (int index = 0; index < os.exes.Count; ++index)
                {
                    ShellExe ex = os.exes[index] as ShellExe;
                    if (ex != null)
                    {
                        shellExeList.Add(ex);
                    }
                }
                if (flag1)
                {
                    if (fileEntry == null)
                    {
                        os.write("--------------------------------------");
                        os.write("OpShell " + LocaleTerms.Loc("ERROR: No shell sources saved. Save a setup first."));
                        os.write("--------------------------------------");
                    }
                    else
                    {
                        string[] lines = fileEntry.data.Split(Utils.robustNewlineDelim, StringSplitOptions.RemoveEmptyEntries);
                        double   time1 = 0.2;
                        os.runCommand("disconnect");
                        for (int index1 = 1; index1 < lines.Length; ++index1)
                        {
                            int index = index1;
                            os.delayer.Post(ActionDelayer.Wait(time1), (Action)(() => os.runCommand("connect " + lines[index])));
                            double time2 = time1 + 0.2;
                            os.delayer.Post(ActionDelayer.Wait(time2), (Action)(() => os.runCommand("shell")));
                            time1 = time2 + 0.2;
                        }
                        os.delayer.Post(ActionDelayer.Wait(time1), (Action)(() =>
                        {
                            os.runCommand("disconnect");
                            os.write("--------------------------------------");
                            os.write("OpShell : " + LocaleTerms.Loc("Operation complete - ran shell on " + (object)(lines.Length - 1) + " nodes"));
                            os.write("--------------------------------------");
                        }));
                    }
                }
                else if (flag2)
                {
                    if (shellExeList.Count <= 0)
                    {
                        os.write("--------------------------------------");
                        os.write("OpShell " + LocaleTerms.Loc("ERROR: No active shells"));
                        os.write("--------------------------------------");
                    }
                    else
                    {
                        StringBuilder stringBuilder = new StringBuilder();
                        stringBuilder.Append("#OpShell_IP_SourceCache\n");
                        for (int index = 0; index < shellExeList.Count; ++index)
                        {
                            stringBuilder.Append(shellExeList[index].targetIP + "\n");
                        }
                        if (fileEntry != null)
                        {
                            fileEntry.data = stringBuilder.ToString();
                        }
                        else
                        {
                            folder.files.Add(new FileEntry(stringBuilder.ToString(), "ShellSources.txt"));
                        }
                        os.write("--------------------------------------");
                        os.write("OpShell : " + string.Format(LocaleTerms.Loc("Saved {0} active shell sources successfully"), (object)shellExeList.Count));
                        os.write("--------------------------------------");
                    }
                }
            }
        }
 private void LookupEntry()
 {
     var list = new List<string>();
     list.Add(searchName.Trim().ToLower().Replace(" ", "_"));
     if (searchName.Contains(" "))
     {
         var str1 =
             (searchName.Substring(searchName.IndexOf(" ")) + searchName.Substring(0, searchName.IndexOf(" ")))
                 .Trim().ToLower().Replace(" ", "_");
         list.Add(str1);
         var str2 =
             (searchName.Substring(searchName.IndexOf(" ")) + "_" +
              searchName.Substring(0, searchName.IndexOf(" "))).Trim().ToLower().Replace(" ", "_");
         list.Add(str2);
     }
     FileEntry fileEntry = null;
     for (var index1 = 0; index1 < list.Count; ++index1)
     {
         for (var index2 = 0; index2 < recordsFolder.files.Count; ++index2)
         {
             if (recordsFolder.files[index2].name.ToLower().StartsWith(list[index1]))
             {
                 fileEntry = recordsFolder.files[index2];
                 break;
             }
         }
         if (fileEntry != null)
             break;
     }
     if (fileEntry == null)
     {
         state = MedicalDatabaseState.Error;
         errorMessage = "No entry found for name " + searchName + "\nPermutations tested:\n";
         for (var index = 0; index < list.Count; ++index)
         {
             var medicalDatabaseDaemon = this;
             var str = medicalDatabaseDaemon.errorMessage + list[index] + "\n";
             medicalDatabaseDaemon.errorMessage = str;
         }
         elapsedTimeThisState = 0.0f;
     }
     else
     {
         currentFile = fileEntry;
         var record = new FileMedicalRecord();
         if (FileMedicalRecord.RecordFromString(currentFile.data, out record))
         {
             currentRecord = record;
             state = MedicalDatabaseState.Entry;
             elapsedTimeThisState = 0.0f;
         }
         else
         {
             elapsedTimeThisState = 0.0f;
             state = MedicalDatabaseState.Error;
             errorMessage = "Corrupt record --\nUnable to parse record " + currentFile.name;
         }
     }
 }
Example #19
0
 public static void setThemeOnComputer(object computerObject, OSTheme theme)
 {
     var folder = ((Computer) computerObject).files.root.searchForFolder("sys");
     if (folder.containsFile("x-server.sys"))
     {
         folder.searchForFile("x-server.sys").data = getThemeDataString(theme);
     }
     else
     {
         var fileEntry = new FileEntry(getThemeDataString(theme), "x-server.sys");
         folder.files.Add(fileEntry);
     }
 }
Example #20
0
 public bool canReadFile(string ipFrom, FileEntry f, int index)
 {
     var flag = false;
     if (ipFrom.Equals(adminIP))
         flag = true;
     for (var index1 = 0; index1 < users.Count; ++index1)
     {
         if (ipFrom.Equals(users[index1]))
             flag = true;
     }
     if (!flag)
         return false;
     if (f.name[0] != 64)
     {
         log("FileRead: by " + ipFrom + " - file:" + f.name);
         sendNetworkMessage("cFile " + ip + " " + ipFrom + " " + f.name + " " + index);
     }
     return true;
 }
Example #21
0
 public static void runCommand(int value, string name)
 {
     assertOS();
     if (name.Equals("addRank"))
     {
         os.currentFaction.addValue(value, os);
         var mail = MailServer.generateEmail("Contract Successful",
             "Congratulations,\nThe client of your recent contract has reported a success, and is pleased with your work.\n" +
             "You are now free to accept further contracts from the contact database.\n" +
             "\nYour Current Ranking is " + os.currentFaction.getRank() + " of " +
             os.currentFaction.getMaxRank() + ".\n" + "\nThankyou,\n -" + os.currentFaction.name,
             os.currentFaction.name + " ReplyBot");
         ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
     }
     else if (name.StartsWith("addFlags:"))
     {
         foreach (
             var flag in
                 name.Substring("addFlags:".Length)
                     .Split(Utils.commaDelim, StringSplitOptions.RemoveEmptyEntries))
             os.Flags.AddFlag(flag);
     }
     if (name.Equals("triggerThemeHackRevenge"))
         os.delayer.Post(ActionDelayer.Wait(5.0), () =>
         {
             var mail = MailServer.generateEmail("Are you Kidding me?",
                 "Seriously?\n\n" +
                 "You think you can just f**k with my stuff and leave without consequence? Did you think I wouldn't notice?\n" +
                 "\nDid you think I wouldn't FIND you!?\n" +
                 "\nYou're a pathetic scrit kiddie, you couldn't hack a f*****g honeypot without your precious buttons and scrollbars.\n" +
                 "\nSay goodbye to your x-server, idiot." + "\n\nNaix", "*****@*****.**");
             ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
             os.delayer.Post(ActionDelayer.Wait(24.0), () =>
             {
                 try
                 {
                     HackerScriptExecuter.runScript("ThemeHack.txt", os);
                 }
                 catch (Exception ex)
                 {
                     if (!Settings.recoverFromErrorsSilently)
                         throw ex;
                     os.write("CAUTION: UNSYNDICATED OUTSIDE CONNECTION ATTEMPT");
                     os.write("RECOVERED FROM CONNECTION SUBTERFUGE SUCCESSFULLY");
                     Console.WriteLine("Critical error loading hacker script - aborting");
                 }
             });
         });
     else if (name.Equals("changeSong"))
     {
         switch (value)
         {
             case 2:
                 MusicManager.transitionToSong("Music\\The_Quickening");
                 break;
             case 3:
                 MusicManager.transitionToSong("Music\\TheAlgorithm");
                 break;
             case 4:
                 MusicManager.transitionToSong("Music\\Ryan3");
                 break;
             case 5:
                 MusicManager.transitionToSong("Music\\Bit(Ending)");
                 break;
             case 6:
                 MusicManager.transitionToSong("Music\\Rico_Puestel-Roja_Drifts_By");
                 break;
             case 7:
                 MusicManager.transitionToSong("Music\\out_run_the_wolves");
                 break;
             case 8:
                 MusicManager.transitionToSong("Music\\Irritations");
                 break;
             case 9:
                 MusicManager.transitionToSong("Music\\Broken_Boy");
                 break;
             case 10:
                 MusicManager.transitionToSong("Music\\Ryan10");
                 break;
             case 11:
                 MusicManager.transitionToSong("Music\\tetrameth");
                 break;
             default:
                 MusicManager.transitionToSong("Music\\Revolve");
                 break;
         }
     }
     else if (name.Equals("entropyEndMissionSetup"))
     {
         runCommand(3, "changeSong");
         var comp1 = findComp("corp0#IS");
         var comp2 = findComp("corp0#MF");
         var comp3 = findComp("corp0#BU");
         var fileEntry1 = new FileEntry(Computer.generateBinaryString(5000), "HacknetOS.rar");
         var fileEntry2 = new FileEntry(Computer.generateBinaryString(4000), "HacknetOS_Data.xnb");
         var fileEntry3 = new FileEntry(Computer.generateBinaryString(4000), "HacknetOS_Content.xnb");
         var folder1 = comp1.files.root.folders[2];
         folder1.files.Add(fileEntry1);
         folder1.files.Add(fileEntry2);
         folder1.files.Add(fileEntry3);
         var folder2 = comp2.files.root.folders[2];
         folder2.files.Add(fileEntry1);
         folder2.files.Add(fileEntry2);
         folder2.files.Add(fileEntry3);
         var fileEntry4 = new FileEntry(fileEntry1.data, fileEntry1.name + "_backup");
         var fileEntry5 = new FileEntry(fileEntry2.data, fileEntry2.name + "_backup");
         var fileEntry6 = new FileEntry(fileEntry3.data, fileEntry3.name + "_backup");
         var folder3 = comp3.files.root.folders[2];
         folder3.files.Add(fileEntry4);
         folder3.files.Add(fileEntry5);
         folder3.files.Add(fileEntry6);
         comp1.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp3.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp2.traceTime = Computer.BASE_TRACE_TIME*7.5f;
         comp2.portsNeededForCrack = 3;
         comp1.portsNeededForCrack = 2;
         comp3.portsNeededForCrack = 2;
         var folder4 = findComp("entropy01").files.root.folders[2];
         folder4.files.Add(new FileEntry(PortExploits.crackExeData[25], "SMTPoverflow.exe"));
         folder4.files.Add(new FileEntry(PortExploits.crackExeData[80], "WebServerWorm.exe"));
     }
     else if (name.Equals("entropyAddSMTPCrack"))
     {
         var f = findComp("entropy01").files.root.folders[2];
         f.files.Add(new FileEntry(PortExploits.crackExeData[25],
             Utils.GetNonRepeatingFilename("SMTPoverflow", ".exe", f)));
         os.saveGame();
     }
     else if (name.Equals("transitionToBitMissions"))
     {
         if (Settings.isDemoMode)
         {
             runCommand(6, "changeSong");
             if (Settings.isPressBuildDemo)
                 ComputerLoader.loadMission("Content/Missions/Demo/PressBuild/DemoMission01.xml");
             else
                 ComputerLoader.loadMission("Content/Missions/Demo/AvconDemo.xml");
         }
         else
             ComputerLoader.loadMission("Content/Missions/BitMission0.xml");
     }
     else if (name.Equals("entropySendCSECInvite"))
         os.delayer.Post(ActionDelayer.Wait(6.0),
             () => ComputerLoader.loadMission("Content/Missions/MainHub/Intro/Intro01.xml"));
     else if (name.Equals("hubBitSetComplete01"))
     {
         os.delayer.Post(ActionDelayer.Wait(4.0), () => runCommand(1, "addRank"));
         runCommand(3, "changeSong");
         os.Flags.AddFlag("csecBitSet01Complete");
     }
     else if (name.Equals("enTechEnableOfflineBackup"))
     {
         var computer = Programs.getComputer(os, "EnTechOfflineBackup");
         Programs.getComputer(os, "EnTechMainframe").links.Add(os.netMap.nodes.IndexOf(computer));
         os.Flags.AddFlag("VaporSequencerEnabled");
         var folder1 = findComp("mainHubAssets").files.root.searchForFolder("bin");
         var folder2 = folder1.searchForFolder("Sequencer");
         if (folder2 == null)
         {
             folder2 = new Folder("Sequencer");
             folder1.folders.Add(folder2);
         }
         if (folder2.searchForFile("Sequencer.exe") != null)
             return;
         folder2.files.Add(new FileEntry(PortExploits.crackExeData[17], "Sequencer.exe"));
     }
     else if (name.Equals("rudeNaixResponse"))
         AchievementsManager.Unlock("rude_response", false);
     else if (name.Equals("assignPlayerToHubServerFaction"))
     {
         os.allFactions.setCurrentFaction("hub", os);
         var computer = Programs.getComputer(os, "mainHub");
         var missionHubServer = (MissionHubServer) computer.getDaemon(typeof (MissionHubServer));
         var userDetail = new UserDetail(os.defaultUser.name, "reptile", 3);
         computer.addNewUser(computer.ip, userDetail);
         missionHubServer.addUser(userDetail);
         os.homeNodeID = "mainHub";
         os.homeAssetServerID = "mainHubAssets";
         runCommand(3, "changeSong");
         os.Flags.AddFlag("CSEC_Member");
         AchievementsManager.Unlock("progress_csec", false);
     }
     else if (name.Equals("assignPlayerToEntropyFaction"))
     {
         runCommand(6, "changeSong");
         AchievementsManager.Unlock("progress_entropy", false);
     }
     else if (name.Equals("assignPlayerToLelzSec"))
     {
         os.homeNodeID = "lelzSecHub";
         os.homeAssetServerID = "lelzSecHub";
         os.Flags.AddFlag("LelzSec_Member");
         AchievementsManager.Unlock("progress_lelz", false);
     }
     else if (name.Equals("lelzSecVictory"))
         AchievementsManager.Unlock("secret_path_complete", false);
     else if (name.Equals("demoFinalMissionEnd"))
     {
         os.exes.Clear();
         PostProcessor.EndingSequenceFlashOutActive = true;
         PostProcessor.EndingSequenceFlashOutPercentageComplete = 1f;
         MusicManager.stop();
         os.delayer.Post(ActionDelayer.Wait(0.2),
             () => os.content.Load<SoundEffect>("Music/Ambient/spiral_gauge_down").Play());
         os.delayer.Post(ActionDelayer.Wait(3.0), () =>
         {
             PostProcessor.dangerModeEnabled = false;
             PostProcessor.dangerModePercentComplete = 0.0f;
             os.ExitScreen();
             os.ScreenManager.AddScreen(new DemoEndScreen());
         });
     }
     else if (name.Equals("demoFinalMissionStart"))
     {
         os.Flags.AddFlag("DemoSequencerEnabled");
         MusicManager.transitionToSong("Music/Ambient/dark_drone_008");
     }
     else if (name.Equals("CSECTesterGameWorldSetup"))
     {
         for (var index = 0; index < PortExploits.services.Count && index < 4; ++index)
             os.thisComputer.files.root.folders[2].files.Add(
                 new FileEntry(PortExploits.crackExeData[PortExploits.portNums[index]],
                     PortExploits.cracks[PortExploits.portNums[index]]));
         for (var index = 0; index < 4; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             os.allFactions.setCurrentFaction("entropy", os);
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "entropy00"));
             os.netMap.discoverNode(Programs.getComputer(os, "entropy01"));
         });
     }
     else if (name.Equals("EntropyFastFowardSetup"))
     {
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[22],
             PortExploits.cracks[22]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[21],
             PortExploits.cracks[21]));
         for (var index = 0; index < 3; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             os.allFactions.setCurrentFaction("entropy", os);
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "entropy00"));
             os.netMap.discoverNode(Programs.getComputer(os, "entropy01"));
             var computer = Programs.getComputer(os, "entropy01");
             var userDetail = computer.users[0];
             userDetail.known = true;
             computer.users[0] = userDetail;
             os.allFactions.factions[os.allFactions.currentFaction].playerValue = 2;
             os.delayer.Post(ActionDelayer.Wait(0.2), () =>
             {
                 os.Flags.AddFlag("eosPathStarted");
                 ComputerLoader.loadMission(
                     "Content/Missions/Entropy/StartingSet/eosMissions/eosIntroDelayer.xml");
             });
         });
     }
     else if (name.Equals("CSECFastFowardSetup"))
     {
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[22],
             PortExploits.cracks[22]));
         os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[21],
             PortExploits.cracks[21]));
         for (var index = 0; index < 3; ++index)
         {
             var c = new Computer("DebugShell" + index, NetworkMap.generateRandomIP(),
                 os.netMap.getRandomPosition(), 0, 2, os);
             c.adminIP = os.thisComputer.adminIP;
             os.netMap.nodes.Add(c);
             os.netMap.discoverNode(c);
         }
         os.delayer.Post(ActionDelayer.Wait(0.2), () =>
         {
             runCommand(0, "assignPlayerToHubServerFaction");
             os.currentMission = null;
             os.netMap.discoverNode(Programs.getComputer(os, "mainHub"));
             os.netMap.discoverNode(Programs.getComputer(os, "mainHubAssets"));
             var computer = Programs.getComputer(os, "mainHubAssets");
             var userDetail = computer.users[0];
             userDetail.known = true;
             computer.users[0] = userDetail;
         });
     }
     else if (name.Equals("csecAddTraceKill"))
     {
         var folder = findComp("mainHubAssets").files.root.searchForFolder("bin");
         var f = folder.searchForFolder("TK");
         if (f == null)
         {
             f = new Folder("TK");
             folder.folders.Add(f);
         }
         f.files.Add(
             new FileEntry(
                 FileEncrypter.EncryptString(PortExploits.crackExeData[12], "Vapor Trick Enc.", "NULL", "dx122DX",
                     ".exe"), Utils.GetNonRepeatingFilename("TraceKill", ".dec", f)));
         os.Flags.AddFlag("bitPathStarted");
         runCommand(10, "changeSong");
     }
     else if (name.Equals("junebugComplete"))
     {
         var computer = Programs.getComputer(os, "pacemaker01");
         if (computer != null)
         {
             var heartMonitorDaemon = (HeartMonitorDaemon) computer.getDaemon(typeof (HeartMonitorDaemon));
             if (heartMonitorDaemon != null)
                 heartMonitorDaemon.ForceStopBeepSustainSound();
         }
         runCommand(1, "addRank");
     }
     else if (name.Equals("eosIntroMissionSetup"))
     {
         findComp("entropy01")
             .files.root.searchForFolder("bin")
             .files.Add(new FileEntry(PortExploits.crackExeData[13], "eosDeviceScan.exe"));
         os.delayer.Post(ActionDelayer.Wait(8.0), () =>
         {
             var mail = MailServer.generateEmail("Fwd: eOS Stuff",
                 Utils.readEntireFile("Content/Post/eosScannerMail.txt"), "vtfx", new List<string>(new string[1]
                 {
                     "note#%#eOS Security Basics#%#" +
                     ("1: Get admin access to a computer that you suspect has an eOS device sync'd to it\n" +
                      "2: Run eosdevicescanner.exe\nto scan for paired devices and automatically open connection ports\n" +
                      "3: connect to the revealed device\n" +
                      "3: login with\nuser: \"admin\"\npassword: \"alpine\"\n\n" +
                      "The password is the same for all eOS devices!")
                 }));
             ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail(mail, os.defaultUser.name);
         });
         runCommand(4, "changeSong");
         os.saveGame();
     }
     else
     {
         if (!name.Equals("eosIntroEndFunc"))
             return;
         runCommand(1, "addRank");
         var missionListingServer =
             (MissionListingServer) findComp("entropy00").getDaemon(typeof (MissionListingServer));
         var list = os.branchMissions;
         var m =
             (ActiveMission)
                 ComputerLoader.readMission(
                     "Content/Missions/Entropy/StartingSet/eosMissions/eosAddedMission.xml");
         missionListingServer.addMisison(m);
         os.branchMissions = list;
     }
 }
Example #22
0
 private string getIDStringForContractFile(FileEntry file)
 {
     var num1 = file.name.IndexOf('#');
     if (num1 <= -1)
         return "";
     var num2 = num1 + 1;
     return file.name.Substring(file.name.IndexOf('#') + 1);
 }
Example #23
0
 private void SaveNotesToDrive()
 {
     var folder = os.thisComputer.files.root.searchForFolder("home");
     var fileEntry = folder.searchForFile("Notes.txt");
     if (fileEntry == null)
     {
         fileEntry = new FileEntry("", "Notes.txt");
         folder.files.Add(fileEntry);
     }
     var stringBuilder = new StringBuilder();
     for (var index = 0; index < notes.Count; ++index)
     {
         if (index != 0)
             stringBuilder.Append("\n\n----------\n\n");
         stringBuilder.Append(notes[index]);
     }
     fileEntry.data = stringBuilder.ToString();
 }
 public override void initFiles()
 {
     base.initFiles();
     var folder1 = comp.files.root.searchForFolder("KBT_Pacemaker");
     if (folder1 == null)
     {
         folder1 = new Folder("KBT_Pacemaker");
         comp.files.root.folders.Add(folder1);
     }
     var folder2 = folder1.searchForFolder("Active") ?? new Folder("Active");
     folder1.folders.Add(folder2);
     var fileEntry1 = new FileEntry(PortExploits.ValidPacemakerFirmware, "KBT_Firmware_v1.2.dll");
     folder1.files.Add(fileEntry1);
     var fileEntry2 = new FileEntry(PortExploits.ValidPacemakerFirmware, "LiveFirmware.dll");
     folder2.files.Add(fileEntry1);
 }
Example #25
0
        public static bool ExecuteProgram(object os_object, string[] arguments)
        {
            OS os = (OS)os_object;

            string[] strArray = arguments;
            bool     flag1    = true;

            if (strArray[0].ToLower().Equals("connect"))
            {
                Programs.connect(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("disconnect") || strArray[0].Equals("dc"))
            {
                Programs.disconnect(strArray, os);
            }
            else if (strArray[0].Equals("ls") || strArray[0].Equals("dir"))
            {
                Programs.ls(strArray, os);
            }
            else if (strArray[0].Equals("cd"))
            {
                Programs.cd(strArray, os);
            }
            else if (strArray[0].Equals("cd.."))
            {
                strArray = new string[2] {
                    "cd", ".."
                };
                Programs.cd(strArray, os);
            }
            else if (strArray[0].Equals("cat") || strArray[0].Equals("more") || strArray[0].Equals("less"))
            {
                Programs.cat(strArray, os);
            }
            else if (strArray[0].Equals("exe"))
            {
                Programs.execute(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("probe") || strArray[0].Equals("nmap"))
            {
                Programs.probe(strArray, os);
            }
            else if (strArray[0].Equals("scp"))
            {
                Programs.scp(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("scan"))
            {
                Programs.scan(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("rm") || strArray[0].Equals("del"))
            {
                Programs.rm(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("mv"))
            {
                Programs.mv(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("ps"))
            {
                Programs.ps(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("kill") || strArray[0].Equals("pkill"))
            {
                Programs.kill(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("reboot"))
            {
                Programs.reboot(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("opencdtray"))
            {
                Programs.opCDTray(strArray, os, true);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("closecdtray"))
            {
                Programs.opCDTray(strArray, os, false);
                flag1 = false;
            }
            else if (strArray[0].Equals("replace"))
            {
                Programs.replace2(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("analyze"))
            {
                Programs.analyze(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("solve"))
            {
                Programs.solve(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("clear"))
            {
                Programs.clear(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("upload") || strArray[0].Equals("up"))
            {
                Programs.upload(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("login"))
            {
                Programs.login(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("addnote"))
            {
                Programs.addNote(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals(":(){:|:&};:"))
            {
                ProgramRunner.ExecuteProgram((object)os, new string[1]
                {
                    "forkbomb"
                });
            }
            else if (strArray[0].ToLower().Equals("append"))
            {
                flag1 = false;
                string[] quoteSeperatedArgs = Utils.GetQuoteSeperatedArgs(strArray);
                Folder   currentFolder      = Programs.getCurrentFolder(os);
                if (quoteSeperatedArgs.Length > 1)
                {
                    FileEntry fileEntry1 = currentFolder.searchForFile(quoteSeperatedArgs[1]);
                    int       num        = 2;
                    if (fileEntry1 == null)
                    {
                        fileEntry1 = currentFolder.searchForFile(os.display.commandArgs[1]);
                        if (fileEntry1 == null)
                        {
                            os.write("Usage: append [FILENAME] [LINE TO APPEND]");
                            return(flag1);
                        }
                        os.write("No filename provided");
                        os.write("Assuming active flag file \"" + fileEntry1.name + "\" For editing");
                        if (strArray.Length == 1)
                        {
                            strArray = new string[2]
                            {
                                "append",
                                fileEntry1.name
                            }
                        }
                        ;
                        else
                        {
                            strArray[1] = fileEntry1.name;
                        }
                        num = 1;
                    }
                    if (fileEntry1 != null)
                    {
                        string str1 = "";
                        for (int index = num; index < quoteSeperatedArgs.Length; ++index)
                        {
                            str1 = str1 + quoteSeperatedArgs[index] + " ";
                        }
                        FileEntry fileEntry2 = fileEntry1;
                        string    str2       = fileEntry2.data + "\n" + str1;
                        fileEntry2.data = str2;
                        flag1           = true;
                        strArray[0]     = "cat";
                        strArray[1]     = fileEntry1.name;
                        for (int index = 2; index < strArray.Length; ++index)
                        {
                            strArray[index] = "";
                        }
                        Programs.cat(strArray, os);
                    }
                }
                else
                {
                    os.write("Usage: append [FILENAME] [LINE TO APPEND]");
                    return(flag1);
                }
            }
            else if (strArray[0].Equals("remline"))
            {
                FileEntry fileEntry = Programs.getCurrentFolder(os).searchForFile(strArray[1]);
                if (fileEntry != null)
                {
                    int length = fileEntry.data.LastIndexOf('\n');
                    if (length < 0)
                    {
                        length = 0;
                    }
                    fileEntry.data = fileEntry.data.Substring(0, length);
                    flag1          = true;
                    strArray[0]    = "cat";
                    for (int index = 2; index < strArray.Length; ++index)
                    {
                        strArray[index] = "";
                    }
                    Programs.cat(strArray, os);
                }
            }
            else if (strArray[0].Equals("getString"))
            {
                Programs.getString(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("reloadtheme"))
            {
                FileEntry fileEntry = os.thisComputer.files.root.searchForFolder("sys").searchForFile("x-server.sys");
                if (fileEntry != null)
                {
                    OSTheme themeForDataString = ThemeManager.getThemeForDataString(fileEntry.data);
                    ThemeManager.switchTheme((object)os, themeForDataString);
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("FirstTimeInitdswhupwnemfdsiuoewnmdsmffdjsklanfeebfjkalnbmsdakj"))
            {
                Programs.firstTimeInit(strArray, os, false);
                flag1 = false;
            }
            else if (strArray[0].Equals("chat"))
            {
                string message = "chat " + os.username + " ";
                for (int index = 1; index < strArray.Length; ++index)
                {
                    message = message + strArray[index] + " ";
                }
                if (os.multiplayer)
                {
                    os.sendMessage(message);
                }
                flag1 = false;
            }
            else if ((strArray[0].Equals("exitdemo") || strArray[0].Equals("resetdemo")) && Settings.isDemoMode)
            {
                MusicManager.transitionToSong("Music/Ambient/AmbientDrone_Clipped");
                MainMenu mainMenu = new MainMenu();
                os.ScreenManager.AddScreen((GameScreen)mainMenu);
                MainMenu.resetOS();
                os.ExitScreen();
                OS.currentInstance = (OS)null;
                flag1 = false;
                if (Settings.MultiLingualDemo)
                {
                    LocaleActivator.ActivateLocale("zh-cn", Game1.getSingleton().Content);
                }
            }
            else if (strArray[0].Equals("fh") && OS.DEBUG_COMMANDS)
            {
                Programs.fastHack(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("ra") && OS.DEBUG_COMMANDS)
            {
                Programs.revealAll(strArray, os);
                flag1 = false;
            }
            else if (strArray[0].Equals("deathseq") && OS.DEBUG_COMMANDS)
            {
                os.TraceDangerSequence.BeginTraceDangerSequence();
                flag1 = false;
            }
            else if (strArray[0].Equals("testcredits") && OS.DEBUG_COMMANDS)
            {
                os.endingSequence.IsActive = true;
                flag1 = false;
            }
            else if (strArray[0].Equals("addflag") && OS.DEBUG_COMMANDS)
            {
                if (strArray.Length < 2)
                {
                    os.write("\nFlag to add required\n");
                }
                os.Flags.AddFlag(strArray[1]);
                flag1 = false;
            }
            else if (strArray[0].Equals("addTestEmails") && OS.DEBUG_COMMANDS)
            {
                for (int index = 0; index < 4; ++index)
                {
                    ((MailServer)os.netMap.mailServer.getDaemon(typeof(MailServer))).addMail(MailServer.generateEmail("testEmail " + (object)index + " " + Utils.getRandomByte().ToString(), "test", "test"), os.defaultUser.name);
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("dscan") && OS.DEBUG_COMMANDS)
            {
                if (strArray.Length < 2)
                {
                    os.write("\nNode ID Required\n");
                }
                bool flag2 = false;
                for (int index = 0; index < os.netMap.nodes.Count; ++index)
                {
                    if (os.netMap.nodes[index].idName.ToLower().StartsWith(strArray[1].ToLower()))
                    {
                        os.netMap.discoverNode(os.netMap.nodes[index]);
                        os.netMap.nodes[index].highlightFlashTime = 1f;
                        flag2 = true;
                        break;
                    }
                }
                if (!flag2)
                {
                    os.write("Node ID Not found");
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("revmany") && OS.DEBUG_COMMANDS)
            {
                for (int index1 = 0; index1 < 60; ++index1)
                {
                    int index2;
                    do
                    {
                        index2 = Utils.random.Next(os.netMap.nodes.Count);
                    }while (os.netMap.nodes[index2].idName == "mainHub" || os.netMap.nodes[index2].idName == "entropy00" || os.netMap.nodes[index2].idName == "entropy01");
                    os.netMap.discoverNode(os.netMap.nodes[index2]);
                }
                os.netMap.lastAddedNode = os.thisComputer;
                os.homeAssetServerID    = "dhsDrop";
                os.homeNodeID           = "dhs";
                os.netMap.discoverNode(Programs.getComputer(os, "dhs"));
                os.netMap.discoverNode(Programs.getComputer(os, "dhsDrop"));
                flag1 = false;
            }
            else if (strArray[0].ToLower().Equals("reloadext") && OS.DEBUG_COMMANDS)
            {
                if (Settings.IsInExtensionMode)
                {
                    ExtensionLoader.ReloadExtensionNodes((object)os);
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("testsave") && OS.DEBUG_COMMANDS || strArray[0].Equals("save!(SJN!*SNL8vAewew57WewJdwl89(*4;;;&!)@&(ak'^&#@J3KH@!*"))
            {
                os.threadedSaveExecute(false);
                SettingsLoader.writeStatusFile();
                flag1 = false;
            }
            else if (strArray[0].Equals("testload") && OS.DEBUG_COMMANDS)
            {
                flag1 = false;
            }
            else if (strArray[0].Equals("teststrikerhack") && OS.DEBUG_COMMANDS)
            {
                os.delayer.Post(ActionDelayer.Wait(3.0), (Action)(() => MissionFunctions.runCommand(1, "triggerDLCHackRevenge")));
                flag1 = false;
            }
            else if (strArray[0].Equals("linkToCSECPostDLC") && OS.DEBUG_COMMANDS)
            {
                os.execute("dscan mainhub");
                os.allFactions.setCurrentFaction("hub", os);
                os.currentFaction.playerValue = 2;
                os.Flags.AddFlag("dlc_complete");
                os.Flags.AddFlag("dlc_csec_end_facval:0");
                MissionFunctions.runCommand(1, "addRank");
                flag1 = false;
            }
            else if (strArray[0].Equals("debug") && OS.DEBUG_COMMANDS)
            {
                int num = PortExploits.services.Count;
                if (strArray.Length > 1)
                {
                    try
                    {
                        num = Convert.ToInt32(strArray[1]);
                    }
                    catch (Exception ex)
                    {
                    }
                }
                for (int index = 0; index < PortExploits.services.Count && index <= num; ++index)
                {
                    os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[PortExploits.portNums[index]], PortExploits.cracks[PortExploits.portNums[index]]));
                }
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[9], PortExploits.cracks[9]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[10], PortExploits.cracks[10]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[11], PortExploits.cracks[11]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[12], PortExploits.cracks[12]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[13], PortExploits.cracks[13]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[14], PortExploits.cracks[14]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[15], PortExploits.cracks[15]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[16], PortExploits.cracks[16]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[17], PortExploits.cracks[17]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[31], PortExploits.cracks[31]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[33], PortExploits.cracks[33]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[34], PortExploits.cracks[34]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[35], PortExploits.cracks[35]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[36], PortExploits.cracks[36]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[37], PortExploits.cracks[37]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[38], PortExploits.cracks[38]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[39], PortExploits.cracks[39]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[41], PortExploits.cracks[41]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[554], PortExploits.cracks[554]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[40], PortExploits.cracks[40]));
                os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.DangerousPacemakerFirmware, "KBT_TestFirmware.dll"));
                os.Flags.AddFlag("dechead");
                os.Flags.AddFlag("decypher");
                os.Flags.AddFlag("csecBitSet01Complete");
                os.Flags.AddFlag("csecRankingS2Pass");
                os.Flags.AddFlag("CSEC_Member");
                os.Flags.AddFlag("bitPathStarted");
                flag1 = false;
                for (int index = 0; index < 4; ++index)
                {
                    Computer c = new Computer("DebugShell" + (object)index, NetworkMap.generateRandomIP(), os.netMap.getRandomPosition(), 0, (byte)2, os);
                    c.adminIP = os.thisComputer.adminIP;
                    os.netMap.nodes.Add(c);
                    os.netMap.discoverNode(c);
                }
                os.netMap.discoverNode("practiceServer");
                os.netMap.discoverNode("entropy00");
            }
            else if (strArray[0].Equals("flash") && OS.DEBUG_COMMANDS)
            {
                os.traceTracker.start(40f);
                os.warningFlash();
                flag1 = false;
                os.IncConnectionOverlay.Activate();
            }
            else if (strArray[0].Equals("cycletheme") && OS.DEBUG_COMMANDS)
            {
                Action <OSTheme> ctheme = (Action <OSTheme>)(theme => ThemeManager.switchTheme((object)os, theme));
                int    next             = 1;
                double delay            = 1.2;
                Action cthemeAct        = (Action)(() =>
                {
                    ctheme((OSTheme)next);
                    next = (next + 1) % 7;
                });
                cthemeAct += (Action)(() => os.delayer.Post(ActionDelayer.Wait(delay), cthemeAct));
                cthemeAct();
            }
            else if (strArray[0].Equals("testdlc") && OS.DEBUG_COMMANDS)
            {
                MissionFunctions.runCommand(0, "demoFinalMissionEndDLC");
                flag1 = false;
            }
            else if (strArray[0].Equals("testircentries") && OS.DEBUG_COMMANDS)
            {
                DLCHubServer daemon = Programs.getComputer(os, "dhs").getDaemon(typeof(DLCHubServer)) as DLCHubServer;
                for (int index = 0; index < 100; ++index)
                {
                    daemon.IRCSystem.AddLog("Test", "Test Message\nMultiline\nMessage", (string)null);
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("testirc") && OS.DEBUG_COMMANDS)
            {
                DLCHubServer daemon = Programs.getComputer(os, "dhs").getDaemon(typeof(DLCHubServer)) as DLCHubServer;
                daemon.IRCSystem.AddLog("Test", "Test Message", (string)null);
                daemon.IRCSystem.AddLog("Channel", "Test Message\nfrom channel", (string)null);
                flag1 = false;
            }
            else if (strArray[0].Equals("flashtest") && OS.DEBUG_COMMANDS)
            {
                if (!PostProcessor.dangerModeEnabled)
                {
                    PostProcessor.dangerModeEnabled         = true;
                    PostProcessor.dangerModePercentComplete = 0.5f;
                }
                else
                {
                    PostProcessor.dangerModeEnabled         = false;
                    PostProcessor.dangerModePercentComplete = 0.0f;
                }
                flag1 = false;
            }
            else if (strArray[0].Equals("dectest") && OS.DEBUG_COMMANDS)
            {
                string str1 = "this is a test message for the encrypter";
                string str2 = FileEncrypter.EncryptString(str1, "header message", "1.2.3.4.5", "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongpass", (string)null);
                os.write(str1);
                os.write("  ");
                os.write("  ");
                os.write(str2);
                os.write("  ");
                os.write("  ");
                os.write(FileEncrypter.MakeReplacementsForDisplay(FileEncrypter.DecryptString(str2, "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongpass")[2]));
                os.write("  ");
                os.write(FileEncrypter.MakeReplacementsForDisplay(FileEncrypter.DecryptString(str2, "wrongPass")[2] == null ? "NULL" : "CORRECT"));
                os.write("  ");
            }
            else if (strArray[0].Equals("test") && OS.DEBUG_COMMANDS)
            {
                ((DLCHubServer)Programs.getComputer(os, "dhs").getDaemon(typeof(DLCHubServer))).AddMission((ActiveMission)ComputerLoader.readMission("Content/DLC/Missions/Attack/AttackMission.xml"), (string)null, false);
            }
            else if (strArray[0].Equals("testtrace") && OS.DEBUG_COMMANDS)
            {
                MissionFunctions.runCommand(1, "triggerDLCHackRevenge");
            }
            else if (strArray[0].Equals("testboot") && OS.DEBUG_COMMANDS)
            {
                os.BootAssitanceModule.IsActive = true;
                os.bootingUp     = false;
                os.canRunContent = false;
                MusicManager.stop();
            }
            else if (strArray[0].Equals("testhhbs") && OS.DEBUG_COMMANDS)
            {
                os.write(HostileHackerBreakinSequence.IsInBlockingHostileFileState((object)os) ? "BLOCKED" : "SAFE");
            }
            else if (strArray[0].Equals("printflags") && OS.DEBUG_COMMANDS)
            {
                os.write(os.Flags.GetSaveString());
            }
            else if (strArray[0].Equals("loseadmin") && OS.DEBUG_COMMANDS)
            {
                os.connectedComp.adminIP = os.connectedComp.ip;
                flag1 = false;
            }
            else if (strArray[0].Equals("runcmd") && OS.DEBUG_COMMANDS)
            {
                if (strArray.Length > 1)
                {
                    string name = strArray[1];
                    int    num  = 0;
                    if (strArray.Length > 2)
                    {
                        num = Convert.ToInt32(strArray[1]);
                    }
                    MissionFunctions.runCommand(num, name);
                }
            }
            else if (strArray[0].ToLower().Equals("runhackscript") && OS.DEBUG_COMMANDS)
            {
                if (strArray.Length > 1)
                {
                    string scriptName = strArray[1];
                    try
                    {
                        HackerScriptExecuter.runScript(scriptName, (object)os, os.thisComputer.ip, os.thisComputer.ip);
                    }
                    catch (Exception ex)
                    {
                        os.write("Error launching script " + scriptName);
                        os.write(Utils.GenerateReportFromExceptionCompact(ex));
                    }
                }
            }
            else if (strArray[0].Equals("MotIsTheBest") && OS.DEBUG_COMMANDS)
            {
                os.runCommand("probe");
                os.runCommand("exe WebServerWorm 80");
                os.runCommand("exe SSHcrack 22");
                os.runCommand("exe SMTPoverflow 25");
                os.runCommand("exe FTPBounce 21");
            }
            else if (strArray[0].Equals("help") || strArray[0].Equals("Help") || strArray[0].Equals("?") || strArray[0].Equals("man"))
            {
                int page = 0;
                if (strArray.Length > 1)
                {
                    try
                    {
                        page = Convert.ToInt32(strArray[1]);
                        if (page > Helpfile.getNumberOfPages())
                        {
                            os.write("Invalid Page Number - Displaying First Page");
                            page = 0;
                        }
                    }
                    catch (FormatException ex)
                    {
                        os.write("Invalid Page Number");
                    }
                    catch (OverflowException ex)
                    {
                        os.write("Invalid Page Number");
                    }
                }
                Helpfile.writeHelp(os, page);
                flag1 = false;
            }
            else
            {
                if (strArray[0] != "")
                {
                    int num = ProgramRunner.AttemptExeProgramExecution(os, strArray);
                    if (num == 0)
                    {
                        os.write("Execution failed");
                    }
                    else if (num < 0)
                    {
                        os.write("No Command " + strArray[0] + " - Check Syntax\n");
                    }
                }
                flag1 = false;
            }
            if (flag1)
            {
                if (!os.commandInvalid)
                {
                    os.display.command     = strArray[0];
                    os.display.commandArgs = strArray;
                    os.display.typeChanged();
                }
                else
                {
                    os.commandInvalid = false;
                }
            }
            return(flag1);
        }