public override void loadInit()
 {
     root = comp.files.root.searchForFolder("academic_data");
     entries = root.searchForFolder("entry_cache");
     var fileEntry = root.searchForFile("info.txt");
     infoText = fileEntry != null ? fileEntry.data : "DESCRIPTION FILE NOT FOUND";
 }
示例#2
0
        /// <summary>
        /// Creates the EOS Device connected to Computer.
        /// </summary>
        /// <returns>The created EOS Device.</returns>
        /// <param name="comp">The Computer.</param>
        /// <param name="name">The device's name.</param>
        /// <param name="ip">The device's ip.</param>
        /// <param name="icon">The device's icon.</param>
        /// <param name="location">The device's NetworkMap position.</param>
        /// <param name="password">The device's password, by game default should be alpine.</param>
        /// <param name="vanillaPorts">The device's closed vanilla port numbers.</param>
        /// <param name="portCracksRequired">The device's cracked ports required to unlock.</param>
        /// <param name="eosFolder">The device's eos folder.</param>
        /// <param name="modPorts">The device's closed modded Port.Type List.</param>
        public static Hacknet.Computer CreateEOSDeviceOn(this Hacknet.Computer comp,
                                                         string name               = "Unregistered eOS Device",
                                                         string ip                 = null,
                                                         string icon               = "ePhone",
                                                         Vector2?location          = null,
                                                         string password           = "******",
                                                         List <int> vanillaPorts   = null,
                                                         int portCracksRequired    = 2,
                                                         Hacknet.Folder eosFolder  = null,
                                                         List <Port.Type> modPorts = null)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (icon == null)
            {
                throw new ArgumentNullException(nameof(icon));
            }
            if (password == null)
            {
                throw new ArgumentNullException(nameof(password));
            }

            var c = new Hacknet.Computer(name, comp.idName + "_eos", location ??
                                         comp.location + Corporation.getNearbyNodeOffset(comp.location,
                                                                                         Utils.random.Next(12),
                                                                                         12,
                                                                                         comp.GetNetworkMap(),
                                                                                         0f), 0, 5, comp.os)
            {
                icon = icon
            };

            c.setAdminPassword(password);
            vanillaPorts = vanillaPorts ?? new List <int>(new int[] { 22, 3659 });
            foreach (var p in vanillaPorts)
            {
                c.AddVanillaPort(p);
            }
            if (modPorts != null)
            {
                foreach (var p in modPorts)
                {
                    c.AddModPort(p);
                }
            }
            c.portsNeededForCrack = portCracksRequired;
            if (eosFolder != null)
            {
                c.files.root.folders.Add(eosFolder);
            }
            else
            {
                EOSComp.GenerateEOSFilesystem(c);
            }
            comp.AddEOSDevice(c);
            return(c);
        }
示例#3
0
 private void InitializeFiles(string filename)
 {
     targetComputer = os.thisComputer;
     if (os.connectedComp != null)
         targetComputer = os.connectedComp;
     destFolder = Programs.getCurrentFolder(os);
     targetFilename = filename;
     destFilename = filename.Replace(".dec", "[NUMBER][EXT]");
 }
示例#4
0
 public FileSystem()
 {
     root = new Folder("/");
     root.folders.Add(new Folder("home"));
     root.folders.Add(new Folder("log"));
     root.folders.Add(new Folder("bin"));
     root.folders.Add(new Folder("sys"));
     generateSystemFiles();
 }
 public override void loadInit()
 {
     base.loadInit();
     root = comp.files.root.searchForFolder("MsgBoard");
     missionFolder = root.searchForFolder("listings");
     closedMissionsFolder = root.searchForFolder("closed");
     if (closedMissionsFolder == null)
     {
         closedMissionsFolder = new Folder("closed");
         root.folders.Add(closedMissionsFolder);
     }
     if (!missionAssigner)
     {
         for (var index = 0; index < missionFolder.files.Count; ++index)
         {
             try
             {
                 var str1 = missionFolder.files[index].name.Replace("_", " ");
                 var str2 = missionFolder.files[index].data;
                 missions.Add(new ActiveMission(null, null, new MailServer.EMailData())
                 {
                     postingTitle = str1,
                     postingBody = str2
                 });
             }
             catch (Exception ex)
             {
                 var num = 0 + 1;
             }
         }
     }
     else
     {
         var list1 = os.branchMissions;
         for (var index = 0; index < missionFolder.files.Count; ++index)
         {
             try
             {
                 var data = missionFolder.files[index].data;
                 var contractRegistryNumber = 0;
                 os.branchMissions.Clear();
                 var activeMission =
                     (ActiveMission) MissionSerializer.restoreMissionFromFile(data, out contractRegistryNumber);
                 var list2 = new List<ActiveMission>();
                 list2.AddRange(os.branchMissions.ToArray());
                 branchMissions.Add(list2);
                 missions.Add(activeMission);
             }
             catch (Exception ex)
             {
                 var num = 0 + 1;
             }
         }
         os.branchMissions = list1;
     }
 }
示例#6
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);
 }
 public override void initFiles()
 {
     base.initFiles();
     rootFolder = new Folder("ImageBoard");
     threadsFolder = new Folder("Threads");
     rootFolder.folders.Add(threadsFolder);
     comp.files.root.folders.Add(rootFolder);
     for (var index = 0; index < ThreadsToAdd.Count; ++index)
         AddThread(ThreadsToAdd[index]);
     ThreadsToAdd.Clear();
 }
 public override void initFiles()
 {
     base.initFiles();
     root = new Folder("dr_database");
     records = new Folder("records");
     root.folders.Add(records);
     comp.files.root.folders.Add(root);
     root.files.Add(new FileEntry(
         Utils.readEntireFile("Content/Post/DeathRowServerInfo.txt").Replace('\t', ' '), "ServerDetails.txt"));
     LoadRecords(null);
 }
 public override void initFiles()
 {
     base.initFiles();
     recordsFolder = new Folder("Medical");
     comp.files.root.folders.Add(recordsFolder);
     for (var index = 0; index < People.all.Count; ++index)
     {
         var fileMedicalRecord = new FileMedicalRecord(People.all[index]);
         recordsFolder.files.Add(new FileEntry(fileMedicalRecord.ToString(), fileMedicalRecord.GetFileName()));
     }
     var dataEntry = Utils.readEntireFile("Content/Post/MedicalDatabaseInfo.txt");
     var folder = comp.files.root.searchForFolder("home");
     if (folder == null)
         return;
     folder.files.Add(new FileEntry(dataEntry, "MedicalDatabaseInfo.txt"));
 }
示例#10
0
 public override void initFiles()
 {
     root = new Folder("ContractHub");
     missionsFolder = new Folder("Contracts");
     listingsFolder = new Folder("Listings");
     listingArchivesFolder = new Folder("Archives");
     missionsFolder.folders.Add(listingsFolder);
     missionsFolder.folders.Add(listingArchivesFolder);
     usersFolder = new Folder("Users");
     root.folders.Add(missionsFolder);
     root.folders.Add(usersFolder);
     root.files.Add(generateConfigFile());
     root.files.Add(new FileEntry(Computer.generateBinaryString(1024), "net64.sys"));
     populateUserList();
     loadInitialContracts();
     comp.files.root.folders.Add(root);
 }
示例#11
0
 public static Folder GenerateEOSFolder()
 {
     var folder1 = new Folder("eos");
     var folder2 = new Folder("apps");
     var folder3 = new Folder("system");
     var folder4 = new Folder("notes");
     var folder5 = new Folder("mail");
     folder1.folders.Add(folder2);
     folder1.folders.Add(folder4);
     folder1.folders.Add(folder5);
     folder1.folders.Add(folder3);
     folder3.files.Add(new FileEntry(Computer.generateBinaryString(1024), "core.sys"));
     folder3.files.Add(new FileEntry(Computer.generateBinaryString(1024), "runtime.bin"));
     var num = 4 + Utils.random.Next(8);
     for (var index = 0; index < num; ++index)
         folder2.folders.Add(EOSAppGenerator.GetAppFolder());
     return folder1;
 }
 public override void initFiles()
 {
     root = comp.files.root.searchForFolder("academic_data");
     if (root == null)
     {
         root = new Folder("academic_data");
         comp.files.root.folders.Add(root);
     }
     entries = new Folder("entry_cache");
     root.folders.Add(entries);
     var dataEntry = "Welcome to the International Academic Database\n" +
                     "This public access server provides centralized access to academic records" +
                     " from every internationally recognized University in the world.\n" +
                     "Our database is managed and maintained by the administrators of this secure terminal, " +
                     "with additions from select leading universities that contribute to the database.\n" +
                     "If you are the Vice Chancellor of a university that wishes to contribute to this database " +
                     "and be internationally recognized, email our administrators at [email protected]";
     root.files.Add(new FileEntry(dataEntry, "info.txt"));
     infoText = dataEntry;
 }
示例#13
0
 public override void initFiles()
 {
     base.initFiles();
     root = comp.files.root.searchForFolder(Foldername);
     if (root == null)
     {
         root = new Folder(Foldername);
         comp.files.root.folders.Add(root);
     }
     storageFolder = root.searchForFolder("Uploads");
     if (storageFolder == null)
     {
         storageFolder = new Folder("Uploads");
         root.folders.Add(storageFolder);
     }
     root.files.Add(
         new FileEntry(
             "You are authenticated for open file uploading to this server.\nUse the \"upload [LOCAL_FILENAME]\" command to upload files\n\n\nREMINDER: Files downloaded with [scp] are downloaded to ~/home \n(or ~/bin for executables).\nuploads from there need their path proceeded as such:  home/[FILENAME]\nThe Tab key can be used to autocomplete paths and names of local files to upload.",
             "Server_Message.txt"));
     uploadFileCountLastFrame = storageFolder.files.Count;
 }
示例#14
0
        public string checkOSBootFiles(string bootString)
        {
            this.BootLoadErrors = "";
            Folder folder    = this.os.thisComputer.files.root.searchForFolder("sys");
            bool   flag      = true;
            string newValue1 = "ERROR: " + LocaleTerms.Loc("Unable to Load System file os-config.sys") + "\n";

            if (folder.containsFile("os-config.sys"))
            {
                newValue1 = "Loaded os-config.sys : System Config Initialized";
            }
            else
            {
                this.os.failBoot();
                flag = false;
                CrashModule crashModule = this;
                string      str         = crashModule.BootLoadErrors + newValue1 + " \n";
                crashModule.BootLoadErrors = str;
            }
            bootString = bootString.Replace("[OSBoot1]", newValue1);
            string newValue2 = "ERROR: " + LocaleTerms.Loc("Unable to Load System file bootcfg.dll") + "\n";

            if (folder.containsFile("bootcfg.dll"))
            {
                newValue2 = "Loaded bootcfg.dll : Boot Config Module Loaded";
            }
            else
            {
                this.os.failBoot();
                flag = false;
                CrashModule crashModule = this;
                string      str         = crashModule.BootLoadErrors + newValue2 + " \n";
                crashModule.BootLoadErrors = str;
            }
            bootString = bootString.Replace("[OSBoot2]", newValue2);
            string newValue3 = "ERROR: " + LocaleTerms.Loc("Unable to Load System file netcfgx.dll") + "\n";

            if (folder.containsFile("netcfgx.dll"))
            {
                newValue3 = "Loaded netcfgx.dll : Network Config Module Loaded";
            }
            else
            {
                this.os.failBoot();
                flag = false;
                CrashModule crashModule = this;
                string      str         = crashModule.BootLoadErrors + newValue3 + " \n";
                crashModule.BootLoadErrors = str;
            }
            bootString = bootString.Replace("[OSBoot3]", newValue3);
            string newValue4 = "ERROR: " + LocaleTerms.Loc("Unable to Load System file x-server.sys") + "\nERROR: " + LocaleTerms.Loc("Locate and restore a valid x-server file in ~/sys/ folder to restore UX functionality") + "\nERROR: " + LocaleTerms.Loc("Consider examining reports in ~/log/ for problem cause and source") + "\nERROR: " + LocaleTerms.Loc("System UX resources unavailable -- defaulting to terminal mode") + "\n .\n .\n .\n";

            if (folder.containsFile("x-server.sys"))
            {
                newValue4 = "Loaded x-server.sys : UX Graphics Module Loaded";
                ThemeManager.switchTheme((object)this.os, ThemeManager.getThemeForDataString(folder.searchForFile("x-server.sys").data));
                this.graphicsErrorsDetected = false;
            }
            else
            {
                this.os.graphicsFailBoot();
                flag = false;
                this.graphicsErrorsDetected = true;
                CrashModule crashModule = this;
                string      str         = crashModule.BootLoadErrors + newValue4 + " \n";
                crashModule.BootLoadErrors = str;
            }
            bootString = bootString.Replace("[OSBootTheme]", newValue4);
            if (flag)
            {
                if (this.os.Flags.HasFlag("BootFailure") && !this.os.Flags.HasFlag("BootFailureThemeSongChange") && ThemeManager.currentTheme != OSTheme.HacknetBlue)
                {
                    this.os.Flags.AddFlag("BootFailureThemeSongChange");
                    if (MusicManager.isPlaying)
                    {
                        MusicManager.stop();
                    }
                    MusicManager.loadAsCurrentSong("Music\\The_Quickening");
                }
                this.os.sucsesfulBoot();
            }
            else
            {
                this.os.Flags.AddFlag("BootFailure");
            }
            return(bootString);
        }
 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);
 }
 public override void loadInit()
 {
     base.loadInit();
     root = comp.files.root.searchForFolder("dr_database");
     records = root.searchForFolder("records");
 }
 public override void loadInit()
 {
     base.loadInit();
     recordsFolder = comp.files.root.searchForFolder("Medical");
 }
 public override void loadInit()
 {
     base.loadInit();
     rootFolder  = comp.files.root.searchForFolder("PointClicker");
     savesFolder = rootFolder.searchForFolder("Saves");
 }
示例#19
0
 public static string GetNonRepeatingFilename(string filename, string extension, Folder f)
 {
     var str = filename;
     var num = 0;
     bool flag;
     do
     {
         flag = true;
         for (var index = 0; index < f.files.Count; ++index)
         {
             if (f.files[index].name == str + extension)
             {
                 ++num;
                 str = string.Concat(filename, "(", num, ")");
                 flag = false;
                 break;
             }
         }
     } while (!flag);
     return str + extension;
 }
示例#20
0
 public void addJunkEmails(Folder f)
 {
     if (!shouldGenerateJunk)
         return;
     var num = Utils.random.Next(10);
     for (var index = 0; index < num; ++index)
         f.files.Add(new FileEntry(generateEmail("Re: Junk", BoatMail.JunkEmail, "admin@" + comp.name),
             "Re:_Junk#" + OS.currentElapsedTime));
 }
示例#21
0
 public static Folder getFolderFromNavigationPath(List<int> path, Folder startFolder, OS os)
 {
     var folder1 = startFolder;
     var folder2 = startFolder;
     for (var index = 0; index < path.Count; ++index)
     {
         if (path[index] <= -1)
             folder1 = folder2;
         else if (folder1.folders.Count > path[index])
         {
             folder2 = folder1;
             folder1 = folder1.folders[path[index]];
         }
         else
         {
             os.write("Invalid Path");
             return folder1;
         }
     }
     return folder1;
 }
示例#22
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;
     }
 }
示例#23
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;
 }
示例#24
0
 public override void loadInit()
 {
     root = comp.files.root.searchForFolder("web");
 }
示例#25
0
 public void initFilesystem()
 {
     rootPath = new List<int>();
     accountsPath = new List<int>();
     root = comp.files.root.searchForFolder("mail");
     if (root == null)
     {
         root = new Folder("mail");
         comp.files.root.folders.Add(root);
     }
     rootPath.Add(comp.files.root.folders.IndexOf(root));
     accountsPath.Add(comp.files.root.folders.IndexOf(root));
     accounts = new Folder("accounts");
     accountsPath.Add(0);
     root.folders.Add(accounts);
 }
示例#26
0
 public static Condition FileDeleted(Folder f, string filename)
 {
     return x => !f.containsFile(filename);
 }
示例#27
0
 public void viewInbox(UserDetail newUser)
 {
     userFolder = null;
     state = 3;
     for (var index1 = 0; index1 < comp.users.Count; ++index1)
     {
         if (comp.users[index1].name.Equals(newUser.name))
         {
             user = comp.users[index1];
             for (var index2 = 0; index2 < accounts.folders.Count; ++index2)
             {
                 if (accounts.folders[index2].name.Equals(user.name))
                 {
                     userFolder = accounts.folders[index2];
                     break;
                 }
             }
             break;
         }
     }
     comp.currentUser = user;
     var folder = userFolder;
 }
示例#28
0
 public override void loadInit()
 {
     base.loadInit();
     root = comp.files.root.searchForFolder("mail");
     accounts = root.searchForFolder("accounts");
 }
示例#29
0
 private void doFolderGui(int width, int height, int indexOffset, Folder f, int recItteration)
 {
     for (var i = 0; i < f.folders.Count; ++i)
     {
         if (Button.doButton(300000 + i + indexOffset, x, y, width, height, "/" + f.folders[i].name, new Color?()))
         {
             var num = 0;
             for (var index = 0; index < os.navigationPath.Count - recItteration; ++index)
             {
                 Action action = () => os.runCommand("cd ..");
                 if (num > 0)
                     os.delayer.Post(ActionDelayer.Wait(num*1.0), action);
                 else
                     action();
                 ++num;
             }
             Action action1 = () => os.runCommand("cd " + f.folders[i].name);
             if (num > 0)
                 os.delayer.Post(ActionDelayer.Wait(num*1.0), action1);
             else
                 action1();
         }
         y += height + 2;
         x += 30;
         if (os.navigationPath.Count - 1 >= recItteration && os.navigationPath[recItteration] == i)
             doFolderGui(width - 30, height, indexOffset + 10000*(i + 1), f.folders[i], recItteration + 1);
         x -= 30;
     }
     for (var index1 = 0; index1 < f.files.Count; ++index1)
     {
         if (Button.doButton(400000 + index1 + indexOffset/2 + (index1 + 1)*indexOffset, x, y, width, height,
             f.files[index1].name, new Color?()))
         {
             for (var index2 = 0; index2 < os.navigationPath.Count - recItteration; ++index2)
                 os.runCommand("cd ..");
             os.runCommand("cat " + f.files[index1].name);
         }
         y += height + 2;
     }
     if (f.folders.Count != 0 || f.files.Count != 0)
         return;
     TextItem.doFontLabel(new Vector2(x, y), "-Empty-", GuiData.tinyfont, new Color?(), width, height);
     y += height + 2;
 }
示例#30
0
 public override void userAdded(string name, string pass, byte type)
 {
     base.userAdded(name, pass, type);
     if (type != 0 && type != 1 && type != 2)
         return;
     var folder = new Folder(name);
     folder.files.Add(new FileEntry("Username: "******"\nPassword: "******"AccountInfo"));
     var f = new Folder("inbox");
     addJunkEmails(f);
     folder.folders.Add(f);
     folder.folders.Add(new Folder("sent"));
     accounts.folders.Add(folder);
 }
示例#31
0
 public override void loadInit()
 {
     base.loadInit();
     root = comp.files.root.searchForFolder("ContractHub");
     missionsFolder = root.searchForFolder("Contracts");
     listingsFolder = missionsFolder.searchForFolder("Listings");
     listingArchivesFolder = missionsFolder.searchForFolder("Archives");
     usersFolder = root.searchForFolder("Users");
     var fileEntry = root.searchForFile("settings.sys");
     if (fileEntry != null)
         loadFromConfigFileData(fileEntry.data);
     loadListingMissionsFromFiles();
 }
示例#32
0
 public void doLoginDisplay(Rectangle bounds, SpriteBatch sb)
 {
     var num1 = bounds.X + 20;
     var num2 = bounds.Y + 100;
     var strArray = os.displayCache.Split(new string[1]
     {
         "#$#$#$$#$&$#$#$#$#"
     }, StringSplitOptions.None);
     var text1 = "";
     var text2 = "";
     var num3 = -1;
     var num4 = 0;
     if (strArray[0].Equals("loginData"))
     {
         text1 = !(strArray[1] != "") ? os.terminal.currentLine : strArray[1];
         if (strArray.Length > 2)
         {
             num4 = 1;
             text2 = strArray[2];
             if (text2.Equals(""))
             {
                 for (var index = 0; index < os.terminal.currentLine.Length; ++index)
                     text2 += "*";
             }
             else
             {
                 var str = "";
                 for (var index = 0; index < text2.Length; ++index)
                     str += "*";
                 text2 = str;
             }
         }
         if (strArray.Length > 3)
         {
             num4 = 2;
             num3 = Convert.ToInt32(strArray[3]);
         }
     }
     var destinationRectangle = GuiData.tmpRect;
     destinationRectangle.X = bounds.X + 2;
     destinationRectangle.Y = num2;
     destinationRectangle.Height = 200;
     destinationRectangle.Width = bounds.Width - 4;
     sb.Draw(Utils.white, destinationRectangle, num3 == 0 ? os.lockedColor : os.indentBackgroundColor);
     if (num3 != 0 && num3 != -1)
     {
         for (var index1 = 0; index1 < comp.users.Count; ++index1)
         {
             if (comp.users[index1].name.Equals(text1))
             {
                 user = comp.users[index1];
                 for (var index2 = 0; index2 < accounts.folders.Count; ++index2)
                 {
                     if (accounts.folders[index2].name.Equals(user.name))
                     {
                         userFolder = accounts.folders[index2];
                         break;
                     }
                 }
                 break;
             }
         }
         state = 3;
     }
     destinationRectangle.Height = 22;
     var num5 = num2 + 30;
     var vector2 = TextItem.doMeasuredLabel(new Vector2(num1, num5), "Login ", textColor);
     if (num3 == 0)
     {
         var num6 = num1 + (int) vector2.X;
         TextItem.doLabel(new Vector2(num6, num5), "Failed", os.brightLockedColor);
         num1 = num6 - (int) vector2.X;
     }
     var num7 = num5 + 60;
     if (num4 == 0)
     {
         destinationRectangle.Y = num7;
         sb.Draw(Utils.white, destinationRectangle, os.subtleTextColor);
     }
     sb.DrawString(GuiData.smallfont, "username :"******"password :"******"Back", os.indentBackgroundColor))
             state = 0;
         if (!Button.doButton(123456, x + 75, y1, 70, 30, "Retry", os.indentBackgroundColor))
             return;
         os.displayCache = "";
         os.execute("login");
         do
             ; while (os.displayCache.Equals(""));
         os.display.command = name;
     }
     else
     {
         var y2 = y1 + 65;
         for (var index = 0; index < comp.users.Count; ++index)
         {
             if (comp.users[index].known && validUser(comp.users[index].type))
             {
                 if (Button.doButton(123457 + index, x, y2, 300, 25,
                     "User: "******" Pass: " + comp.users[index].pass,
                     os.darkBackgroundColor))
                     forceLogin(comp.users[index].name, comp.users[index].pass);
                 y2 += 27;
             }
         }
     }
 }
示例#33
0
 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);
 }
示例#34
0
 public override void initFiles()
 {
     base.initFiles();
     initFilesystem();
     for (var index = 0; index < 10; ++index)
         comp.users.Add(new UserDetail(UsernameGenerator.getName()));
     for (var index = 0; index < comp.users.Count; ++index)
     {
         var userDetail = comp.users[index];
         if (userDetail.type == 1 || userDetail.type == 0 || userDetail.type == 2)
         {
             var folder = new Folder(userDetail.name);
             folder.files.Add(new FileEntry("Username: "******"\nPassword: "******"AccountInfo"));
             var f = new Folder("inbox");
             addJunkEmails(f);
             folder.folders.Add(f);
             folder.folders.Add(new Folder("sent"));
             accounts.folders.Add(folder);
         }
     }
     if (setupComplete == null)
         return;
     setupComplete();
 }