private void generateMainframe() { mainframe = new Computer(getFullName() + " Central Mainframe", getAddress(), getLocation(), baseSecurityLevel + 2, 3, os); mainframe.idName = baseID + "MF"; servers.Add(mainframe); }
public override void disconnectionDetected(Computer c, OS os) { base.disconnectionDetected(c, os); for (var index = 0; index < c.ports.Count; ++index) c.closePort(c.ports[index], "LOCAL_ADMIN"); if (c.firewall != null) { c.firewall.resetSolutionProgress(); c.firewall.solved = false; } if (c.hasProxy) { c.proxyActive = true; c.proxyOverloadTicks = c.startingOverloadTicks; } var time = 20.0*Utils.random.NextDouble(); Action action = () => { if (os.connectedComp != null && !(os.connectedComp.ip != c.ip)) return; for (var index = 0; index < c.ports.Count; ++index) c.closePort(c.ports[index], "LOCAL_ADMIN"); if (ResetsPassword) c.setAdminPassword(PortExploits.getRandomPassword()); c.adminIP = c.ip; if (c.firewall == null) return; c.firewall.resetSolutionProgress(); }; if (IsSuper) action(); else os.delayer.Post(ActionDelayer.Wait(time), action); }
/// <summary> /// Gets the EOS Devices sorted by retType. /// </summary> /// <returns>The EOS Devices.</returns> /// <param name="comp">The Computer.</param> /// <param name="retType">Determines how to sort the devices.</param> public static Dictionary <string, Hacknet.Computer> GetEOSDevicesBy(this Hacknet.Computer comp, RetrieveType retType) { var res = new Dictionary <string, Hacknet.Computer>(); if (comp.attatchedDeviceIDs != null) { foreach (var id in comp.attatchedDeviceIDs.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)) { var c = comp.GetNetworkMap().GetComputerById(id); if (c != null) { switch (retType) { case RetrieveType.ID: res[id] = c; break; case RetrieveType.ADDRESS: res[c.ip] = c; break; case RetrieveType.NAME: res[c.name] = c; break; case RetrieveType.INDEX: res[c.GetNetworkMap().nodes.IndexOf(c).ToString()] = c; break; } } } } return(res); }
public PorthackHeartDaemon(Computer c, OS os) : base(c, "Porthack.Heart", os) { name = "Porthack.Heart"; SpinDownEffect = os.content.Load<SoundEffect>("SFX/TraceKill"); glowSoundEffect = os.content.Load<SoundEffect>("SFX/Ending/PorthackSpindown"); }
public static bool AssignTo(Instance ins, Hacknet.Computer c, bool replace = false) { if (!compToInst.ContainsKey(c)) { compToInst.Add(c, new List <Instance>()); } var sameDisplay = compToInst[c].FirstOrDefault((i) => i.Port.PortDisplay == ins.Port.PortDisplay); if (c.PortRemapping.ContainsKey(ins.Port.PortDisplay) && !compToInst[c].Contains(ins) && replace || sameDisplay == null) { if (replace) { c.ports.Remove(ExeInfoManager.GetExecutableInfo(ins.Port.PortDisplay).PortNumber); c.PortRemapping.Remove(ins.Port.PortDisplay); } else { return(false); } } if (!compToInst[c].Contains(ins) && sameDisplay == null) { compToInst[c].Add(ins); return(true); } if (sameDisplay != null && replace) { compToInst[c].Remove(sameDisplay); compToInst[c].Add(ins); ins.activeComputer = c; return(true); } return(false); }
public PointClickerDaemon(Computer computer, string serviceName, OS opSystem) : base(computer, serviceName, opSystem) { InitGameSettings(); InitLogoSettings(); InitRest(); }
public Daemon(Computer computer, string serviceName, OS opSystem) { name = serviceName; isListed = true; comp = computer; os = opSystem; }
/// <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); }
public AcademicDatabaseDaemon(Computer c, string serviceName, OS os) : base(c, serviceName, os) { themeColor = new Color(53, 96, 156); backThemeColor = new Color(27, 58, 102); darkThemeColor = new Color(12, 20, 40, 100); init(); }
public LoadComputerXmlReadEvent(Hacknet.Computer com, XmlReader red, string fnam, bool prevNetmap, bool prevDaeInit, bool fromSave) : base(com) { FromSave = fromSave; Reader = red; Filename = fnam; PreventNetmapAdd = prevNetmap; PreventDaemonInit = prevDaeInit; }
public MissionHubServer(Computer c, string serviceName, string group, OS _os) : base(c, serviceName, _os) { groupName = group; decorationPanel = TextureBank.load("Sprites/HubDecoration", os.content); decorationPanelSide = TextureBank.load("Sprites/HubDecorationSide", os.content); lockIcon = TextureBank.load("Lock", os.content); }
public static T AddDaemon <T>(this Hacknet.Computer comp, T daemon, Hacknet.OS os = null) where T : Hacknet.Daemon { daemon.comp = comp ?? daemon.comp; daemon.os = os ?? daemon.os ?? Utility.ClientOS; comp.daemons.Add(daemon); return(daemon); }
public DeathRowDatabaseDaemon(Computer c, string serviceName, OS os) : base(c, serviceName, os) { if (Logo == null) Logo = os.content.Load<Texture2D>("Sprites/DeathRowLogo"); if (Circle != null) return; Circle = os.content.Load<Texture2D>("Sprites/ThinCircleOutline"); }
public static bool RemoveFrom(Instance ins, Hacknet.Computer c) { if (!compToInst.ContainsKey(c) || !compToInst[c].Contains(ins)) { return(false); } c.PortRemapping.Remove(ins.Port.PortDisplay); return(compToInst[c].Remove(ins)); }
public SongChangerDaemon(Computer c, OS os) : base(c, "Music Changer", os) { topEffect = new MovingBarsEffect(); botEffect = new MovingBarsEffect { IsInverted = true }; }
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]"); }
public override void LoadContent() { base.LoadContent(); infoBar = new Rectangle(bounds.X, bounds.Y, bounds.Width, INFOBAR_HEIGHT); os.shells.Add(this); os.shellIPs.Add(targetIP); compThisShellIsRunningOn = Programs.getComputer(os, targetIP); compThisShellIsRunningOn.log(os.thisComputer.ip + "_Opened_#SHELL"); }
/// <summary> /// Determines whether the vanilla port is open. /// </summary> /// <returns><c>true</c>, if the port exists and is open, <c>false</c> otherwise.</returns> /// <param name="comp">The Computer</param> /// <param name="info">The ExecutableInfo to search by</param> public static bool IsVanillaPortOpen(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info) { var i = comp.ports.IndexOf(info.PortNumber); if (i < 0) { return(false); } return(comp.portsOpen[i] >= 1); }
/// <summary> /// Adds a vanilla port by ExecutableInfo. /// </summary> /// <returns><c>true</c>, if vanilla port was added, <c>false</c> otherwise.</returns> /// <param name="comp">The Computer</param> /// <param name="info">The ExecutableInfo for the port</param> /// <param name="unlocked">If set to <c>true</c> then sets the port to be unlocked.</param> public static bool AddVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info, bool unlocked = false) { if (info.IsEmpty) { return(false); } comp.ports.Add(info.PortNumber); comp.portsOpen.Add(unlocked ? (byte)1 : (byte)0); return(true); }
public static Instance GetInstanceIn(Hacknet.Computer c, Type type) { Instance r = null; if (compToInst.ContainsKey(c)) { r = compToInst[c].Find(i => i.Port == type); } return(r); }
/// <summary> /// Gets a read-only list of modded ports. /// </summary> /// <returns>The list of modded ports.</returns> /// <param name="comp">The Computer</param> public static IList <Port.Instance> GetModdedPortList(this Hacknet.Computer comp) { List <Port.Instance> res; Port.Instance.compToInst.TryGetValue(comp, out res); if (res == null) { res = new List <Port.Instance>(); } return(res.AsReadOnly()); }
public BoatMail(Computer c, string name, OS os) : base(c, name, os) { oddLine = Color.White; evenLine = Color.White; setThemeColor(new Color(155, 155, 230)); seperatorLineColor = new Color(22, 22, 22, 150); panel = TextureBank.load("BoatmailHeader", os.content); logo = TextureBank.load("BoatmailLogo", os.content); textColor = Color.Black; }
public override void LoadContent() { base.LoadContent(); var num = PortExploits.passwords.Count/3; textIndex = new int[3]; textIndex[0] = 0; textIndex[1] = num; textIndex[2] = 2*num; target = Programs.getComputer(os, targetIP); os.write("Porthack Initialized -- Running..."); }
public void start(float t) { if (active) return; startingTimer = t; timer = t; active = true; os.warningFlash(); target = os.connectedComp == null ? os.thisComputer : os.connectedComp; Console.WriteLine("Warning flash"); }
public static UserDetail AddUserDetail(this Hacknet.Computer comp, string user = null, string password = null, byte type = 1) { if (string.IsNullOrEmpty(password)) { password = PortExploits.getRandomPassword(); } var detail = new UserDetail(user, password, type); comp.users.Add(detail); return(detail); }
public WebServerDaemon(Computer computer, string serviceName, OS opSystem, string pageFileLocation = "Content/Web/BaseImageWebPage.html") : base(computer, serviceName, opSystem) { if (pageFileLocation == null) return; webPageFileLocation = pageFileLocation; if (!(webPageFileLocation != "Content/Web/BaseImageWebPage.html")) return; BaseWebpageData = null; }
public UploadServerDaemon(Computer computer, string serviceName, Color themeColor, OS opSystem, string foldername = null, bool needsAuthentication = false) : base(computer, serviceName, opSystem) { arrow = os.content.Load<Texture2D>("Arrow"); this.themeColor = themeColor; lightThemeColor = Color.Lerp(themeColor, Color.White, 0.4f); darkThemeColor = Color.Lerp(themeColor, Color.Black, 0.8f); Foldername = foldername; if (Foldername == null) Foldername = "Drop"; this.needsAuthentication = needsAuthentication; }
/// <summary> /// Retrieves a List of Daemon.Instance whose interface Type is exactly modInterface. /// </summary> /// /// <param name="modInterface">The exact Type to find</param> public static List <Daemon.Instance> GetModdedDaemonList(this Hacknet.Computer comp, Type modInterface) { var result = new List <Daemon.Instance>(); foreach (var d in comp.daemons) { if ((d as Daemon.Instance)?.Interface?.GetType() == modInterface) { result.Add(d as Daemon.Instance); } } return(result); }
/// <summary> /// Retrieves a List of daemons exactly of Daemon from the Computer /// </summary> /// /// <param name="daemonType">The exact Type to search for</param> public static List <Hacknet.Daemon> GetDaemonList(this Hacknet.Computer comp, Type daemonType) { var result = new List <Hacknet.Daemon>(); foreach (var d in comp.daemons) { if (d.GetType() == daemonType) { result.Add(d); } } return(result); }
/// <summary> /// Retrieves a List of mod Daemon.Instance whose interface Type is or is derived from T /// </summary> /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam> public static List <Daemon.Instance> GetModdedDaemonList <T>(this Hacknet.Computer comp) where T : Daemon.IInterface { var result = new List <Daemon.Instance>(); foreach (var d in comp.daemons) { if ((d as Daemon.Instance)?.Interface is T) { result.Add(d as Daemon.Instance); } } return(result); }
/// <summary> /// Adds a modded Daemon via the interface id string to the Computer. /// </summary> /// <returns>The modded Daemon instance.</returns> /// <param name="comp">The Computer</param> /// <param name="interfaceId">Interface Identifier.</param> /// <param name="input">The input for the LoadInstance interface function.</param> public static Daemon.Instance AddModdedDaemon(this Hacknet.Computer comp, string interfaceId, Dictionary <string, string> input = null) { var i = Daemon.Instance.CreateInstance(interfaceId, comp, input); if (i == null) { return(null); } comp.daemons.Add(i); return(i); }
public HeartMonitorDaemon(Computer c, OS os) : base(c, "Remote Monitor", os) { blufEffect = os.content.Load<Effect>("Shaders/DOFBlur"); blufEffect.CurrentTechnique = blufEffect.Techniques["SmoothGaussBlur"]; Heart = os.content.Load<Texture2D>("Sprites/Icons/Heart"); OxyIcon = os.content.Load<Texture2D>("Sprites/Icons/O2Img"); WarnIcon = os.content.Load<Texture2D>("Sprites/Icons/CautionIcon"); beepSound = os.content.Load<SoundEffect>("SFX/HeartMonitorBeep"); beepSustainSound = os.content.Load<SoundEffect>("SFX/HeartMonitorSustain").CreateInstance(); beepSustainSound.IsLooped = true; beepSustainSound.Volume = volume; SetUpMonitors(); }
/// <summary> /// Adds a Daemon via generics to the Computer. /// </summary> /// <returns>The created Daemon.</returns> /// <param name="comp">The Computer</param> /// <param name="input">The input for the constructor.</param> public static T AddDaemon <T>(this Hacknet.Computer comp, params object[] input) where T : Hacknet.Daemon { if (input[0] != comp) { var list = input.ToList(); list.Insert(0, comp); input = list.ToArray(); } var result = Utility.Create <T>(input); comp.daemons.Add(result); return(result); }
/// <summary> /// Opens a mod port. Doesn't add a port /// </summary> /// <param name="comp">The Computer.</param> /// <param name="port">The Port.Type to search for.</param> /// <param name="ipFrom">The ip responsible for the change.</param> public static void OpenModPort(this Hacknet.Computer comp, Port.Type port, string ipFrom = null) { var i = port.GetWithin(comp); if (i == null) { return; } i.Unlocked |= !comp.silent; if (!string.IsNullOrEmpty(ipFrom)) { comp.log(ipFrom + " Opened Port#" + port.PortName + "/" + port.PortDisplay); } comp.sendNetworkMessage("cPortOpen " + comp.ip + " " + ipFrom + " " + port); }
public static void RemapVanillaPort(this Hacknet.Computer comp, int selectedPort, int remap) { if (remap == 0) { comp.PortRemapping.Remove(selectedPort); } else if (comp.PortRemapping.ContainsKey(selectedPort)) { comp.PortRemapping[selectedPort] = remap; } else if (comp.GetDisplayPortNumberFromCodePort(selectedPort) != remap) { comp.PortRemapping.Add(selectedPort, remap); } }
/// <summary> /// Removes a vanilla port by ExecutableInfo. /// </summary> /// <returns><c>true</c>, if vanilla port was found and removed, <c>false</c> otherwise.</returns> /// <param name="comp">The Computer</param> /// <param name="info">The ExecutableInfo for the port</param> public static bool RemoveVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info) { if (info.IsEmpty) { return(false); } var index = comp.ports.IndexOf(info.PortNumber); if (index < 0) { return(false); } comp.ports.RemoveAt(index); comp.portsOpen.RemoveAt(index); return(true); }
public MailServer(Computer c, string name, OS os) : base(c, name, os) { state = 0; panel = os.content.Load<Texture2D>("Panel"); corner = os.content.Load<Texture2D>("Corner"); unopenedIcon = os.content.Load<Texture2D>("UnopenedMail"); buttonSound = os.content.Load<SoundEffect>("SFX/Bip"); panelRect = new Rectangle(); evenLine = new Color(80, 81, 83); oddLine = new Color(58, 58, 58); senderDarkeningColor = new Color(0, 0, 0, 100); seperatorLineColor = Color.Transparent; textColor = Color.White; responders = new List<MailResponder>(); }
/// <summary> /// Opens a vanilla port. Doesn't add a port /// </summary> /// <param name="comp">The Computer.</param> /// <param name="info">The ExecutableInfo to search for.</param> /// <param name="ipFrom">The ip responsible for the change.</param> public static void OpenVanillaPort(this Hacknet.Computer comp, ExeInfoManager.ExecutableInfo info, string ipFrom = null) { var i = comp.ports.IndexOf(info.PortNumber); if (i < 0) { return; } if (!comp.silent) { comp.portsOpen[i] = 1; } if (!string.IsNullOrEmpty(ipFrom)) { comp.log(ipFrom + " Opened Port#" + info.PortNumber); } comp.sendNetworkMessage("cPortOpen " + comp.ip + " " + ipFrom + " " + info.PortNumber); }
public MessageBoardDaemon(Computer c, OS os) : base(c, "Message Board", os) { if (Images == null) { Images = new Dictionary<MessageBoardPostImage, Texture2D>(); Images.Add(MessageBoardPostImage.Academic, os.content.Load<Texture2D>("Sprites/Academic_Logo")); Images.Add(MessageBoardPostImage.Sun, os.content.Load<Texture2D>("Sprites/Sun")); Images.Add(MessageBoardPostImage.Snake, os.content.Load<Texture2D>("Sprites/Snake")); Images.Add(MessageBoardPostImage.Circle, os.content.Load<Texture2D>("CircleOutline")); Images.Add(MessageBoardPostImage.Duck, os.content.Load<Texture2D>("Sprites/Duck")); Images.Add(MessageBoardPostImage.Page, os.content.Load<Texture2D>("Sprites/Page")); Images.Add(MessageBoardPostImage.Speech, os.content.Load<Texture2D>("Sprites/SpeechBubble")); Images.Add(MessageBoardPostImage.Mod, os.content.Load<Texture2D>("Sprites/Hammer")); Images.Add(MessageBoardPostImage.Chip, os.content.Load<Texture2D>("Sprites/Chip")); } threadsPanel = new ScrollableSectionedPanel(415, GuiData.spriteBatch.GraphicsDevice); }
/// <summary> /// Adds a EOS Device connection represented by device /// </summary> /// <param name="comp">The Computer.</param> /// <param name="device">The Computer device to link to.</param> public static void AddEOSDevice(this Hacknet.Computer comp, Hacknet.Computer device) { if (comp.attatchedDeviceIDs == null) { comp.attatchedDeviceIDs = device.idName; } else { comp.attatchedDeviceIDs += ',' + device.idName; } if (!comp.GetNetworkMap().nodes.Contains(device)) { comp.GetNetworkMap().nodes.Add(device); } device.AddLink(comp); }
public EOSDeviceScannerExe(Rectangle location, OS operatingSystem, string[] p) : base(location, operatingSystem) { name = "eOS_DeviceScanner"; ramCost = 300; IdentifierName = "eOS Device Scanner"; targetComp = os.connectedComp; if (targetComp == null) targetComp = os.thisComputer; locations.Add(new Vector2(Utils.rand(), Utils.rand())); locations.Add(new Vector2(Utils.rand(), Utils.rand())); if (!(targetComp.adminIP != os.thisComputer.ip)) return; isError = true; errorMessage = "ADMIN ACCESS\nREQUIRED FOR SCAN"; IsComplete = true; for (var index = 0; index < 30; ++index) locations.Add(new Vector2(Utils.rand(), Utils.rand())); }
public MissionListingServer(Computer c, string serviceName, string group, OS _os, bool _isPublic = false, bool _isAssigner = false) : base(c, serviceName, _os) { groupName = group; topBar = os.content.Load<Texture2D>("Panel"); corner = os.content.Load<Texture2D>("Corner"); if (group.Equals("Entropy")) { themeColor = new Color(3, 102, 49); logo = os.content.Load<Texture2D>("EntropyLogo"); } else if (group.Equals("NetEdu")) { themeColor = new Color(119, 104, 160); logo = os.content.Load<Texture2D>("Sprites/Academic_logo"); } else if (group.Equals("Kellis Biotech")) { themeColor = new Color(106, 176, byte.MaxValue); logo = os.content.Load<Texture2D>("Sprites/KellisLogo"); } else { themeColor = new Color(204, 163, 27); logo = os.content.Load<Texture2D>("SlashbotLogo"); } logoRect = new Rectangle(0, 0, 64, 64); isPublic = _isPublic; missionAssigner = _isAssigner; state = !isPublic ? 0 : 1; missions = new List<ActiveMission>(); branchMissions = new List<List<ActiveMission>>(); if (isPublic) listingTitle = group + " News"; else listingTitle = "Available Contracts"; }
/// <summary> /// Retrieves a List of Daemons whose Type is or is derived from T, pulled from Computer /// </summary> /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam> public static List <T> GetDaemonList <T>(this Hacknet.Computer comp) where T : Hacknet.Daemon => comp.daemons.Select((arg) => arg as T).ToList();
/// <summary> /// Closes a mod port. Doesn't add a port /// </summary> /// <param name="comp">The Computer.</param> /// <param name="id">The Type id to search for.</param> /// <param name="ipFrom">The ip responsible for the change.</param> public static void CloseModPort(this Hacknet.Computer comp, string id, string ipFrom = null) => comp.CloseModPort(Port.Handler.GetPort(id), ipFrom);
/// <summary> /// Closes a vanilla port. Doesn't add a port /// </summary> /// <param name="comp">The Computer.</param> /// <param name="portNum">The port number to search for.</param> /// <param name="ipFrom">The ip responsible for the change.</param> public static void CloseVanillaPort(this Hacknet.Computer comp, int portNum, string ipFrom = null) => comp.CloseVanillaPort(ExeInfoManager.GetExecutableInfo(portNum), ipFrom);
public static Computer load(XmlReader reader, OS os) { while (reader.Name != "computer") reader.Read(); reader.MoveToAttribute("name"); var compName = reader.ReadContentAsString(); reader.MoveToAttribute("ip"); var compIP = reader.ReadContentAsString(); reader.MoveToAttribute("type"); var compType = (byte) reader.ReadContentAsInt(); reader.MoveToAttribute("spec"); var str1 = reader.ReadContentAsString(); reader.MoveToAttribute("id"); var str2 = reader.ReadContentAsString(); string str3 = null; if (reader.MoveToAttribute("devices")) str3 = reader.ReadContentAsString(); string str4 = null; if (reader.MoveToAttribute("icon")) str4 = reader.ReadContentAsString(); while (reader.Name != "location") reader.Read(); reader.MoveToAttribute("x"); var x = reader.ReadContentAsFloat(); reader.MoveToAttribute("y"); var y = reader.ReadContentAsFloat(); while (reader.Name != "security") reader.Read(); reader.MoveToAttribute("level"); var seclevel = reader.ReadContentAsInt(); reader.MoveToAttribute("traceTime"); var num1 = reader.ReadContentAsFloat(); reader.MoveToAttribute("portsToCrack"); var num2 = reader.ReadContentAsInt(); reader.MoveToAttribute("adminIP"); var str5 = reader.ReadContentAsString(); var time = -1f; if (reader.MoveToAttribute("proxyTime")) time = reader.ReadContentAsFloat(); while (reader.Name != "admin") reader.Read(); reader.MoveToAttribute("type"); var str6 = reader.ReadContentAsString(); reader.MoveToAttribute("resetPass"); var flag1 = reader.ReadContentAsBoolean(); reader.MoveToAttribute("isSuper"); var flag2 = reader.ReadContentAsBoolean(); Administrator administrator = null; switch (str6) { case "fast": administrator = new FastBasicAdministrator(); break; case "basic": administrator = new BasicAdministrator(); break; } if (administrator != null) administrator.ResetsPassword = flag1; if (administrator != null) administrator.IsSuper = flag2; while (reader.Name != "links") reader.Read(); var strArray = reader.ReadElementContentAsString().Split(); Firewall firewall = null; while (reader.Name != "portsOpen" && reader.Name != "firewall") reader.Read(); if (reader.Name == "firewall") firewall = Firewall.load(reader); while (reader.Name != "portsOpen") reader.Read(); var portsList = reader.ReadElementContentAsString(); var computer = new Computer(compName, compIP, new Vector2(x, y), seclevel, compType, os); computer.firewall = firewall; computer.admin = administrator; if (time > 0.0) { computer.addProxy(time); } else { computer.hasProxy = false; computer.proxyActive = false; } while (reader.Name != "users") reader.Read(); computer.users.Clear(); while (!(reader.Name == "users") || reader.NodeType != XmlNodeType.EndElement) { if (reader.Name == "user") { var userDetail = UserDetail.loadUserDetail(reader); if (userDetail.name.ToLower() == "admin") computer.adminPass = userDetail.pass; computer.users.Add(userDetail); } reader.Read(); } while (reader.Name != "daemons") reader.Read(); reader.Read(); while (!(reader.Name == "daemons") || reader.NodeType != XmlNodeType.EndElement) { if (reader.Name == "MailServer") { reader.MoveToAttribute("name"); var name = reader.ReadContentAsString(); var mailServer = new MailServer(computer, name, os); computer.daemons.Add(mailServer); if (reader.MoveToAttribute("color")) { var newThemeColor = Utils.convertStringToColor(reader.ReadContentAsString()); mailServer.setThemeColor(newThemeColor); } } else if (reader.Name == "MissionListingServer") { reader.MoveToAttribute("name"); var serviceName = reader.ReadContentAsString(); reader.MoveToAttribute("group"); var group = reader.ReadContentAsString(); reader.MoveToAttribute("public"); var _isPublic = reader.ReadContentAsString().ToLower().Equals("true"); reader.MoveToAttribute("assign"); var _isAssigner = reader.ReadContentAsString().ToLower().Equals("true"); var missionListingServer = new MissionListingServer(computer, serviceName, group, os, _isPublic, _isAssigner); computer.daemons.Add(missionListingServer); } else if (reader.Name == "AddEmailServer") { reader.MoveToAttribute("name"); var serviceName = reader.ReadContentAsString(); var addEmailDaemon = new AddEmailDaemon(computer, serviceName, os); computer.daemons.Add(addEmailDaemon); } else if (reader.Name == "MessageBoard") { reader.MoveToAttribute("name"); var str7 = reader.ReadContentAsString(); var messageBoardDaemon = new MessageBoardDaemon(computer, os); messageBoardDaemon.name = str7; computer.daemons.Add(messageBoardDaemon); } else if (reader.Name == "WebServer") { reader.MoveToAttribute("name"); var serviceName = reader.ReadContentAsString(); reader.MoveToAttribute("url"); var pageFileLocation = reader.ReadContentAsString(); var webServerDaemon = new WebServerDaemon(computer, serviceName, os, pageFileLocation); computer.daemons.Add(webServerDaemon); } else if (reader.Name == "OnlineWebServer") { reader.MoveToAttribute("name"); var serviceName = reader.ReadContentAsString(); reader.MoveToAttribute("url"); var url = reader.ReadContentAsString(); var onlineWebServerDaemon = new OnlineWebServerDaemon(computer, serviceName, os); onlineWebServerDaemon.setURL(url); computer.daemons.Add(onlineWebServerDaemon); } else if (reader.Name == "AcademicDatabse") { reader.MoveToAttribute("name"); var serviceName = reader.ReadContentAsString(); var academicDatabaseDaemon = new AcademicDatabaseDaemon(computer, serviceName, os); computer.daemons.Add(academicDatabaseDaemon); } else if (reader.Name == "MissionHubServer") { var missionHubServer = new MissionHubServer(computer, "unknown", "unknown", os); computer.daemons.Add(missionHubServer); } else if (reader.Name == "DeathRowDatabase") { var rowDatabaseDaemon = new DeathRowDatabaseDaemon(computer, "Death Row Database", os); computer.daemons.Add(rowDatabaseDaemon); } else if (reader.Name == "MedicalDatabase") { var medicalDatabaseDaemon = new MedicalDatabaseDaemon(computer, os); computer.daemons.Add(medicalDatabaseDaemon); } else if (reader.Name == "HeartMonitor") { var str7 = "UNKNOWN"; if (reader.MoveToAttribute("patient")) str7 = reader.ReadContentAsString(); computer.daemons.Add(new HeartMonitorDaemon(computer, os) { PatientID = str7 }); } else if (reader.Name.Equals("PointClicker")) { var pointClickerDaemon = new PointClickerDaemon(computer, "Point Clicker!", os); computer.daemons.Add(pointClickerDaemon); } else if (reader.Name.Equals("ispSystem")) { var ispDaemon = new ISPDaemon(computer, os); computer.daemons.Add(ispDaemon); } else if (reader.Name.Equals("porthackheart")) { var porthackHeartDaemon = new PorthackHeartDaemon(computer, os); computer.daemons.Add(porthackHeartDaemon); } else if (reader.Name.Equals("SongChangerDaemon")) { var songChangerDaemon = new SongChangerDaemon(computer, os); computer.daemons.Add(songChangerDaemon); } else if (reader.Name == "UploadServerDaemon") { string str7; var input = str7 = ""; var foldername = str7; var serviceName = str7; if (reader.MoveToAttribute("name")) serviceName = reader.ReadContentAsString(); if (reader.MoveToAttribute("foldername")) foldername = reader.ReadContentAsString(); if (reader.MoveToAttribute("color")) input = reader.ReadContentAsString(); var needsAuthentication = false; if (reader.MoveToAttribute("needsAuh")) needsAuthentication = reader.ReadContentAsBoolean(); var themeColor = Color.White; if (input != "") themeColor = Utils.convertStringToColor(input); var uploadServerDaemon = new UploadServerDaemon(computer, serviceName, themeColor, os, foldername, needsAuthentication); computer.daemons.Add(uploadServerDaemon); } reader.Read(); } computer.files = FileSystem.load(reader); computer.traceTime = num1; computer.portsNeededForCrack = num2; computer.adminIP = str5; computer.idName = str2; computer.icon = str4; computer.attatchedDeviceIDs = str3; for (var index = 0; index < strArray.Length; ++index) { if (strArray[index] != "") computer.links.Add(Convert.ToInt32(strArray[index])); } if (portsList.Length > 0) ComputerLoader.loadPortsIntoComputer(portsList, computer); if (str1 == "mail") os.netMap.mailServer = computer; else if (str1 == "player") os.thisComputer = computer; return computer; }
private static Computer addWebsiteChangeRequirements(Computer c, OS os) { var webServerDaemon = new WebServerDaemon(c, MissionGenerationParser.Target + " Web Server", os, "Content/Web/BaseImageWebPage.html"); c.daemons.Add(webServerDaemon); c.initDaemons(); if (customKeysWereSet && customFileData != null) webServerDaemon.generateBaseCorporateSite(MissionGenerationParser.Target, customFileData); else webServerDaemon.generateBaseCorporateSite(MissionGenerationParser.Target, "Content/Web/BaseCorporatePage.html"); MissionGenerationParser.File = "index.html"; MissionGenerationParser.Path = "web"; return c; }
/// <summary> /// Sorts EOS Devices by names /// </summary> /// <see cref="GetEOSDevicesBy"/> public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByName(this Hacknet.Computer comp) => comp.GetEOSDevicesBy(RetrieveType.NAME);
/// <summary> /// Retrieves the first Daemon.Instance whose interface Type is exactly modInterface. /// </summary> /// <param name="modInterface">The exact Type to find</param> public static Daemon.Instance GetModdedDaemon(this Hacknet.Computer comp, Type modInterface) => comp.GetModdedDaemonList(modInterface).ElementAtOrDefault(0);
public static bool ExecuteProgram(object os_object, string[] arguments) { var os = (OS) os_object; var strArray = arguments; var flag1 = true; if (strArray[0].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("less")) Programs.cat(strArray, os); else if (strArray[0].Equals("exe")) { Programs.execute(strArray, os); flag1 = false; } else if (strArray[0].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].Equals("scan")) { Programs.scan(strArray, os); flag1 = false; } else if (strArray[0].Equals("rm")) { 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].Equals("kill")) { Programs.kill(strArray, os); flag1 = false; } else if (strArray[0].Equals("reboot")) { Programs.reboot(strArray, os); flag1 = false; } else if (strArray[0].Equals("openCDTray")) { Programs.opCDTray(strArray, os, true); flag1 = false; } else if (strArray[0].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].Equals("analyze")) { Programs.analyze(strArray, os); flag1 = false; } else if (strArray[0].Equals("solve")) { Programs.solve(strArray, os); flag1 = false; } else if (strArray[0].Equals("clear")) { Programs.clear(strArray, os); flag1 = false; } else if (strArray[0].Equals("upload") || strArray[0].Equals("up")) { Programs.upload(strArray, os); flag1 = false; } else if (strArray[0].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(":(){:|:&};:")) ExecuteProgram(os, new string[1] { "forkbomb" }); else if (strArray[0].Equals("append")) { var fileEntry1 = Programs.getCurrentFolder(os).searchForFile(strArray[1]); if (fileEntry1 != null) { var str1 = ""; for (var index = 2; index < strArray.Length; ++index) str1 = str1 + strArray[index] + " "; var fileEntry2 = fileEntry1; var str2 = fileEntry2.data + "\n" + str1; fileEntry2.data = str2; flag1 = true; strArray[0] = "cat"; for (var index = 2; index < strArray.Length; ++index) strArray[index] = ""; Programs.cat(strArray, os); } } else if (strArray[0].Equals("remline")) { var fileEntry = Programs.getCurrentFolder(os).searchForFile(strArray[1]); if (fileEntry != null) { var length = fileEntry.data.LastIndexOf('\n'); if (length < 0) length = 0; fileEntry.data = fileEntry.data.Substring(0, length); flag1 = true; strArray[0] = "cat"; for (var 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].Equals("FirstTimeInitdswhupwnemfdsiuoewnmdsmffdjsklanfeebfjkalnbmsdakj")) { Programs.firstTimeInit(strArray, os); flag1 = false; } else if (strArray[0].Equals("chat")) { var message = "chat " + os.username + " "; for (var 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"); var mainMenu = new MainMenu(); os.ScreenManager.AddScreen(mainMenu); MainMenu.resetOS(); os.ExitScreen(); flag1 = false; } 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 (var index = 0; index < 4; ++index) ((MailServer) os.netMap.mailServer.getDaemon(typeof (MailServer))).addMail( MailServer.generateEmail( string.Concat("testEmail ", 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"); var flag2 = false; for (var index = 0; index < os.netMap.nodes.Count; ++index) { if (os.netMap.nodes[index].idName.StartsWith(strArray[1])) { 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("testsave") && OS.DEBUG_COMMANDS || strArray[0].Equals("save!(SJN!*SNL8vAewew57WewJdwl89(*4;;;&!)@&(ak'^&#@J3KH@!*")) { os.threadedSaveExecute(); SettingsLoader.writeStatusFile(); flag1 = false; } else if (strArray[0].Equals("testload") && OS.DEBUG_COMMANDS) flag1 = false; else if (strArray[0].Equals("debug") && OS.DEBUG_COMMANDS) { var num = PortExploits.services.Count; if (strArray.Length > 1) { try { num = Convert.ToInt32(strArray[1]); } catch (Exception ex) { } } for (var 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.DangerousPacemakerFirmware, "KBT_TestFirmware.dll")); os.Flags.AddFlag("dechead"); os.Flags.AddFlag("decypher"); os.Flags.AddFlag("csecBitSet01Complete"); os.Flags.AddFlag("csecRankingS2Pass"); flag1 = false; 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.netMap.discoverNode("practiceServer"); os.netMap.discoverNode("entropy00"); } else if (strArray[0].Equals("flash") && OS.DEBUG_COMMANDS) { os.traceTracker.start(20f); os.warningFlash(); flag1 = false; os.IncConnectionOverlay.Activate(); } else if (strArray[0].Equals("testRevealNodes") && OS.DEBUG_COMMANDS) { for (var index = 0; index < os.netMap.nodes.Count; ++index) { if (Utils.random.NextDouble() < 0.01) os.netMap.discoverNode(os.netMap.nodes[index]); } } else if (strArray[0].Equals("dectest") && OS.DEBUG_COMMANDS) { var str1 = "this is a test message for the encrypter"; var str2 = FileEncrypter.EncryptString(str1, "header message", "1.2.3.4.5", "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooongpass", 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) HackerScriptExecuter.runScript("ThemeHack.txt", os); 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"))) { var 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] != "") { var num = 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; }
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; }
public override void Draw(float t) { base.Draw(t); drawOutline(); drawTarget("app:"); var rectangle = Utils.InsetRectangle(GetContentAreaDest(), 1); var amount = os.warningFlashTimer/OS.WARNING_FLASH_TIME; var minHeight = 2f; if (amount > 0.0) minHeight += amount*(rectangle.Height - minHeight); var drawColor = Color.Lerp(Utils.AddativeWhite*0.5f, Utils.AddativeRed, amount); bars.Draw(spriteBatch, GetContentAreaDest(), minHeight, 4f, 1f, drawColor); switch (state) { case SequencerExeState.Unavaliable: spriteBatch.Draw(Utils.white, rectangle, Color.Black*0.5f); var dest = Utils.InsetRectangle(rectangle, 6); if (!isExiting) TextItem.doFontLabelToSize(dest, "LINK UNAVAILABLE", GuiData.titlefont, Utils.AddativeWhite); var destinationRectangle1 = dest; destinationRectangle1.Y += destinationRectangle1.Height - 20; destinationRectangle1.Height = 20; if (isExiting) break; GuiData.spriteBatch.Draw(Utils.white, destinationRectangle1, Color.Black*0.5f); if ( !Button.doButton(32711803, destinationRectangle1.X, destinationRectangle1.Y, destinationRectangle1.Width, destinationRectangle1.Height, "Exit", os.lockedColor)) break; isExiting = true; break; case SequencerExeState.AwaitingActivation: var height = 30; var destinationRectangle2 = new Rectangle(this.bounds.X + 1, this.bounds.Y + this.bounds.Height/2 - height, this.bounds.Width - 2, height*2); spriteBatch.Draw(Utils.white, destinationRectangle2, Color.Black*0.92f); if ( !Button.doButton(8310101, this.bounds.X + 10, this.bounds.Y + this.bounds.Height/2 - height/2, this.bounds.Width - 20, height, "ACTIVATE", os.highlightColor)) break; stateTimer = 0.0f; state = SequencerExeState.SpinningUp; bars.MinLineChangeTime = 0.1f; bars.MaxLineChangeTime = 1f; originalTheme = ThemeManager.currentTheme; MusicManager.FADE_TIME = 0.6f; oldSongName = MusicManager.currentSongName; MusicManager.transitionToSong("Music\\Roller_Mobster_Clipped"); MediaPlayer.IsRepeating = false; targetComp = Programs.getComputer(os, targetID); var webServerDaemon = (WebServerDaemon) targetComp.getDaemon(typeof (WebServerDaemon)); if (webServerDaemon == null) break; webServerDaemon.LoadWebPage("index.html"); break; case SequencerExeState.SpinningUp: var bounds = rectangle; bounds.Height = (int) (bounds.Height*(stateTimer/(double) SPIN_UP_TIME)); bounds.Y = rectangle.Y + rectangle.Height - bounds.Height + 1; bounds.Width += 4; bars.Draw(spriteBatch, bounds, minHeight, 4f, 1f, os.brightLockedColor); break; case SequencerExeState.Active: spriteBatch.Draw(Utils.white, GetContentAreaDest(), Color.Black*0.5f); TextItem.doFontLabelToSize(GetContentAreaDest(), " G O G O G O ", GuiData.titlefont, Color.Lerp(Utils.AddativeRed, os.brightLockedColor, Math.Min(1f, stateTimer/2f))); DrawActiveState(); break; } }
/// <summary> /// Sorts EOS Devices by ips /// </summary> /// <see cref="GetEOSDevicesBy"/> public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByIp(this Hacknet.Computer comp) => comp.GetEOSDevicesBy(RetrieveType.ADDRESS);
/// <summary> /// Retrieves the first mod Daemon.Instance whose interface Type is or is derived from T. /// </summary> /// <typeparam name="T">The Type or derivative of the type to search for in the Daemon List</typeparam> public static Daemon.Instance GetModdedDaemon <T>(this Hacknet.Computer comp) where T : Daemon.IInterface => comp.GetModdedDaemonList <T>().ElementAtOrDefault(0);
/// <summary> /// Sorts EOS Devices by NetworkMap indexes /// </summary> /// <see cref="GetEOSDevicesBy"/> public static Dictionary <string, Hacknet.Computer> GetEOSDevicesByIndex(this Hacknet.Computer comp) => comp.GetEOSDevicesBy(RetrieveType.INDEX);
public static Folder getFolderAtDepth(Computer c, int depth, List<int> path) { var folder = c.files.root; if (path.Count > 0) { for (var index = 0; index < depth; ++index) { if (folder.folders.Count > path[index]) folder = folder.folders[path[index]]; } } return folder; }
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; } }
/// <summary> /// Opens a vanilla port. Doesn't add a port /// </summary> /// <param name="comp">The Computer.</param> /// <param name="portName">The port name to search for.</param> /// <param name="ipFrom">The ip responsible for the change.</param> public static void OpenVanillaPort(this Hacknet.Computer comp, string portName, string ipFrom = null) => comp.OpenVanillaPort(ExeInfoManager.GetExecutableInfo(portName), ipFrom);
public static object generateComputer(int secLevel, string name = null) { if (name == null) name = NameGenerator.generateName(); var computer = new Computer(name, NetworkMap.generateRandomIP(), OS.currentInstance.netMap.getRandomPosition(), secLevel, 2, OS.currentInstance); if (computer.traceTime <= 0.0) computer.traceTime = 10f*Computer.BASE_TRACE_TIME; return computer; }
public Texture2D GetComputerImage(Computer comp) { if (comp.icon != null && compAltIcons.ContainsKey(comp.icon)) return compAltIcons[comp.icon]; if (comp.securityLevel < computers.Count) return computers[comp.securityLevel]; return defaultComputer; }