├── .gitattributes ├── .gitignore ├── AlienFXManagedWrapper3.5.dll ├── DebugMod.sln ├── DebugMod ├── AccessBypass.cs ├── AlwaysActiveAdmin.cs ├── Commands.cs ├── DebugApp.cs ├── DebugDaemon.cs ├── DebugMod.cs ├── DebugMod.csproj ├── LongVariables.cs └── Properties │ └── AssemblyInfo.cs ├── LICENSE ├── PathfinderPatcher.exe ├── README.md ├── Steamworks.NET.dll ├── VersionFile.txt └── lib ├── .gitignore ├── Cecil.Import_LICENSE ├── Cecil_LICENSE.txt ├── Mono.Cecil.Inject.dll ├── Mono.Cecil.dll └── Pathfinder.dll /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /AlienFXManagedWrapper3.5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/AlienFXManagedWrapper3.5.dll -------------------------------------------------------------------------------- /DebugMod.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26403.7 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DebugMod", "DebugMod\DebugMod.csproj", "{8B86A3C8-3234-405D-BA3C-0E58DA65D8AF}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {8B86A3C8-3234-405D-BA3C-0E58DA65D8AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {8B86A3C8-3234-405D-BA3C-0E58DA65D8AF}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {8B86A3C8-3234-405D-BA3C-0E58DA65D8AF}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {8B86A3C8-3234-405D-BA3C-0E58DA65D8AF}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /DebugMod/AccessBypass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Reflection; 6 | using System.Globalization; 7 | 8 | namespace DebugMod 9 | { 10 | internal static class AccessBypass 11 | { 12 | internal static T GetPrivateField(this object obj, string name) 13 | { 14 | BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; 15 | Type type = obj.GetType(); 16 | FieldInfo field = type.GetField(name, flags); 17 | return (T)field.GetValue(obj); 18 | } 19 | internal static T GetPrivateProperty(this object obj, string name) 20 | { 21 | BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; 22 | Type type = obj.GetType(); 23 | PropertyInfo property = type.GetProperty(name, flags); 24 | return (T)property.GetValue(obj, null); 25 | } 26 | internal static void SetPrivateField(this object obj, string name, object value) 27 | { 28 | BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; 29 | Type type = obj.GetType(); 30 | FieldInfo field = type.GetField(name, flags); 31 | field.SetValue(obj, value); 32 | } 33 | 34 | internal static void SetPrivateProperty(this object obj, string name, object value) 35 | { 36 | BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; 37 | Type type = obj.GetType(); 38 | PropertyInfo field = type.GetProperty(name, flags); 39 | field.SetValue(obj, value, null); 40 | } 41 | 42 | internal static T CallPrivateMethod(this object obj, string methodName, params object[] parameters) 43 | { 44 | BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic; 45 | Type type = obj.GetType(); 46 | MethodInfo method = type.GetMethod(methodName, flags); 47 | return (T)method.Invoke(obj, parameters); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /DebugMod/AlwaysActiveAdmin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using Hacknet; 6 | 7 | namespace DebugMod 8 | { 9 | class AlwaysActiveAdmin : Administrator 10 | { 11 | public override void disconnectionDetected(Computer c, OS os) 12 | { 13 | base.disconnectionDetected(c, os); 14 | for (int index = 0; index < c.ports.Count; ++index) 15 | c.closePort(c.ports[index], "LOCAL_ADMIN"); 16 | if (c.firewall != null) 17 | { 18 | c.firewall.resetSolutionProgress(); 19 | c.firewall.solved = false; 20 | } 21 | if (c.hasProxy) 22 | { 23 | c.proxyActive = true; 24 | c.proxyOverloadTicks = c.startingOverloadTicks; 25 | } 26 | Action action = (Action)(() => 27 | { 28 | if (os.connectedComp != null && !(os.connectedComp.ip != c.ip)) 29 | return; 30 | for (int index = 0; index < c.ports.Count; ++index) 31 | c.closePort(c.ports[index], "LOCAL_ADMIN"); 32 | if (this.ResetsPassword) 33 | c.setAdminPassword(PortExploits.getRandomPassword()); 34 | c.adminIP = c.ip; 35 | if (c.firewall != null) 36 | c.firewall.resetSolutionProgress(); 37 | }); 38 | action(); 39 | double time; 40 | if (c.securityLevel == 0) 41 | { 42 | time = 60; 43 | } else if (c.securityLevel == 2) { 44 | time = 50.5; 45 | } else if (c.securityLevel == 4) 46 | { 47 | time = 25; 48 | } else 49 | { 50 | time = 10; 51 | } 52 | os.delayer.Post(ActionDelayer.Wait(time), action); 53 | os.timerExpired(); 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /DebugMod/Commands.cs: -------------------------------------------------------------------------------- 1 | using Hacknet; 2 | using Microsoft.Xna.Framework.Audio; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using XNA = Microsoft.Xna.Framework; 8 | using System.Reflection; 9 | using Microsoft.Xna.Framework; 10 | using Pathfinder; 11 | using Pathfinder.Port; 12 | 13 | namespace DebugMod 14 | { 15 | static class Commands 16 | { 17 | 18 | public static bool OpenAllPorts(OS os, List args) 19 | { 20 | Computer computer = os.connectedComp; 21 | foreach (var port in computer.ports) 22 | { 23 | if (!computer.isPortOpen(port)) 24 | computer.openPort(port, os.thisComputer.ip); 25 | } 26 | return false; 27 | } 28 | public static bool CloseAllPorts(OS os, List args) 29 | { 30 | Computer computer = os.connectedComp; 31 | foreach (var port in computer.ports) 32 | { 33 | if (computer.isPortOpen(port)) 34 | computer.closePort(port, os.thisComputer.ip); 35 | } 36 | return false; 37 | } 38 | public static bool BypassProxy(OS os, List args) 39 | { 40 | Computer computer = os.connectedComp; 41 | computer.proxyActive = false; 42 | return false; 43 | } 44 | 45 | public static bool SolveFirewall(OS os, List args) 46 | { 47 | Computer computer = os.connectedComp; 48 | computer.firewall.solved = true; 49 | return false; 50 | } 51 | 52 | public static bool GetAdmin(OS os, List args) 53 | { 54 | Computer computer = os.connectedComp; 55 | computer.adminIP = os.thisComputer.ip; 56 | return false; 57 | } 58 | 59 | public static bool DeathSeq(OS os, List args) 60 | { 61 | os.TraceDangerSequence.BeginTraceDangerSequence(); 62 | return false; 63 | } 64 | public static bool CancelDeathSeq(OS os, List args) 65 | { 66 | os.TraceDangerSequence.CancelTraceDangerSequence(); 67 | return false; 68 | } 69 | 70 | public static bool SetHomeNodeServer(OS os, List args) 71 | { 72 | os.homeNodeID = os.connectedComp.idName; 73 | return false; 74 | } 75 | public static bool SetHomeAssetServer(OS os, List args) 76 | { 77 | os.homeAssetServerID = os.connectedComp.idName; 78 | return false; 79 | } 80 | public static bool Debug(OS os, List args) 81 | { 82 | int num = PortExploits.services.Count; 83 | for (int index = 0; index < PortExploits.services.Count && index < num; ++index) 84 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[PortExploits.portNums[index]], PortExploits.cracks[PortExploits.portNums[index]])); 85 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[9], PortExploits.cracks[9])); 86 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[10], PortExploits.cracks[10])); 87 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[11], PortExploits.cracks[11])); 88 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[12], PortExploits.cracks[12])); 89 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[13], PortExploits.cracks[13])); 90 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[14], PortExploits.cracks[14])); 91 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[15], PortExploits.cracks[15])); 92 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[16], PortExploits.cracks[16])); 93 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[17], PortExploits.cracks[17])); 94 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[31], PortExploits.cracks[31])); 95 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[33], PortExploits.cracks[33])); 96 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[34], PortExploits.cracks[34])); 97 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[35], PortExploits.cracks[35])); 98 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[36], PortExploits.cracks[36])); 99 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[37], PortExploits.cracks[37])); 100 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[38], PortExploits.cracks[38])); 101 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.crackExeData[39], PortExploits.cracks[39])); 102 | os.thisComputer.files.root.folders[2].files.Add(new FileEntry(PortExploits.DangerousPacemakerFirmware, "KBT_TestFirmware.dll")); 103 | return false; 104 | } 105 | public static bool LoseAdmin(OS os, List args) 106 | { 107 | Computer computer = os.connectedComp; 108 | computer.adminIP = os.connectedComp.ip; 109 | return false; 110 | } 111 | public static bool RevealAll(OS os, List args) 112 | { 113 | for (int index = 0; index < os.netMap.nodes.Count; ++index) 114 | os.netMap.visibleNodes.Add(index); 115 | 116 | 117 | return false; 118 | } 119 | public static bool AddIRCMessage(OS os, List args) 120 | { 121 | string computer = args[1]; 122 | string author = args[2]; 123 | string message = args[3]; 124 | if (args.Count < 3) 125 | { 126 | os.write("Usage: addIRCMessage (ComputerID) (Author) (Message)"); 127 | return false; 128 | } 129 | 130 | DLCHubServer IRC = Programs.getComputer(os, computer).getDaemon(typeof(DLCHubServer)) as DLCHubServer; 131 | IRC.IRCSystem.AddLog(author, message, null); 132 | return false; 133 | } 134 | public static bool StrikerAttack(OS os, List args) 135 | { 136 | HackerScriptExecuter.runScript("DLC/ActionScripts/Hackers/SystemHack.txt", (object)os, (string)null); 137 | return false; 138 | } 139 | public static bool ThemeAttack(OS os, List args) 140 | { 141 | HackerScriptExecuter.runScript("HackerScripts/ThemeHack.txt", (object)os, (string)null); 142 | return false; 143 | } 144 | public static bool CallThePoliceSoTheyCanTraceYou(OS os, List args) 145 | { 146 | os.traceTracker.start(100f); 147 | return false; 148 | } 149 | public static bool ReportYourselfToFBI(OS os, List args) 150 | { 151 | os.traceTracker.start(20f); 152 | return false; 153 | } 154 | public static bool TraceYourselfIn(OS os, List args) 155 | { 156 | string TraceTimeInput = args[1]; 157 | float TraceTime; 158 | try 159 | { 160 | int IsNumber = Convert.ToInt32(args[1]); 161 | } 162 | catch 163 | { 164 | os.write("Usage: TraceYourselfIn: (TimeInSeconds)"); 165 | return false; 166 | } 167 | float.TryParse(TraceTimeInput, out TraceTime); 168 | os.traceTracker.start(TraceTime); 169 | return false; 170 | } 171 | public static bool WarningFlash(OS os, List args) 172 | { 173 | SoundEffect sound = os.content.Load("SFX/beep"); 174 | os.warningFlash(); 175 | sound.Play(); 176 | return false; 177 | } 178 | public static bool StopTrace(OS os, List args) 179 | { 180 | os.traceTracker.stop(); 181 | return false; 182 | } 183 | public static bool HideDisplay(OS os, List args) 184 | { 185 | os.display.visible = false; 186 | return false; 187 | } 188 | public static bool HideNetMap(OS os, List args) 189 | { 190 | os.netMap.visible = false; 191 | return false; 192 | } 193 | public static bool HideTerminal(OS os, List args) 194 | { 195 | os.terminal.visible = false; 196 | return false; 197 | } 198 | public static bool HideRAM(OS os, List args) 199 | { 200 | os.ram.visible = false; 201 | return false; 202 | } 203 | public static bool ShowDisplay(OS os, List args) 204 | { 205 | os.display.visible = true; 206 | return false; 207 | } 208 | public static bool ShowNetMap(OS os, List args) 209 | { 210 | os.netMap.visible = true; 211 | return false; 212 | } 213 | public static bool ShowTerminal(OS os, List args) 214 | { 215 | os.terminal.visible = true; 216 | return false; 217 | } 218 | public static bool ShowRAM(OS os, List args) 219 | { 220 | os.ram.visible = true; 221 | return false; 222 | } 223 | public static bool GetUniversalAdmin(OS os, List args) 224 | { 225 | List computerListExtensionExtensionExtension = os.netMap.nodes; 226 | List visbleCompsExtensionExtensionExtension = os.netMap.visibleNodes; 227 | string str = os.thisComputer.ip; 228 | for (int index = 0; index < computerListExtensionExtensionExtension.Count; ++index) 229 | { 230 | computerListExtensionExtensionExtension[index].adminIP = os.thisComputer.ip; 231 | } 232 | return false; 233 | } 234 | public static bool HackComputer(OS os, List args) 235 | { 236 | Computer computer = os.connectedComp; 237 | int RAMAvailable = os.ramAvaliable; 238 | 239 | return false; 240 | } 241 | public static bool ChangeUserDetails(OS os, List args) 242 | { 243 | Computer computer = os.connectedComp; 244 | string oldUser = args[1]; 245 | string newUser = args[2]; 246 | string newPass = args[3]; 247 | if (args.Count < 3) 248 | { 249 | os.write("Usage: changeUserDetails (NewPassword)"); 250 | return false; 251 | } 252 | for (int index = 0; index < computer.users.Count; ++index) 253 | { 254 | if (computer.users[index].name.ToLower().Equals(oldUser)) 255 | computer.users[index] = new UserDetail(newUser, newPass, (byte)0); 256 | UserDetail user = computer.users[index]; 257 | user.known = true; 258 | } 259 | return false; 260 | } 261 | public static bool GenerateExampleAcadmicRecord(OS os, List args) 262 | { 263 | Computer computer = os.thisComputer; 264 | Folder folder = os.thisComputer.files.root.searchForFolder("home"); 265 | string File = "FULL NAME HERE\n\n--------------------\nDEGREE HERE\nUNIVERSITY HERE\nGPA HERE"; 266 | folder.files.Add(new FileEntry(File, "FULL NAME HERE")); 267 | return false; 268 | } 269 | public static bool GenerateExampleMedicalRecord(OS os, List args) 270 | { 271 | Computer computer = os.thisComputer; 272 | Folder folder = os.thisComputer.files.root.searchForFolder("home"); 273 | string File = "FIRST NAME HERE\n--------------------\nLAST NAME HERE\n--------------------\nmale OR female\n--------------------\nDATE OF BIRTH HERE TIME OF BIRTH HERE\n--------------------\nMedical Record\nDate of Birth :: DATE OF BIRTH HERE TIME OF BIRTH HERE\nBlood Type :: BLOOD TYPE HERE\nHeight :: HEIGHT HERE IN CM\n Allergies :: ALLERGIES HERE\nActive Prescriptions :: ACTIVE PRESCRIPTSION HERE\nRecorded Visits :: RECORDED VISTS HERE\nNotes :: NOTES HERE"; 274 | folder.files.Add(new FileEntry(File, "LASTNAMEHERE FIRSTNAMEHERE")); 275 | return false; 276 | } 277 | public static bool ExecuteHack(OS os, List args) 278 | { 279 | string HackerScript = args[1]; 280 | if (args.Count < 0) 281 | { 282 | os.write("Usage: executeHack (HackerScriptLocation)\nHacker script must be in Content/HackerScripts"); 283 | return false; 284 | } 285 | HackerScriptExecuter.runScript("HackerScripts/" + HackerScript, (string)null); 286 | return false; 287 | } 288 | public static bool DeleteWhitelistDLL(OS os, List args) 289 | { 290 | Computer computer = Programs.getComputer(os, args[1]); 291 | List FolderPath = new List(); 292 | FolderPath.Add(5); 293 | Folder folder = computer.files.root.searchForFolder("Whitelist"); 294 | for (int index = 0; index < folder.files.Count; ++index) 295 | { 296 | if (folder.files[index].name.Equals("authenticator.dll")) 297 | { 298 | folder.files.Remove(folder.files[index]); 299 | os.execute("connect " + computer.ip); 300 | } 301 | } 302 | return false; 303 | } 304 | public static bool ChangeMusic(OS os, List args) 305 | { 306 | string SongInput = args[1]; 307 | string Song = args[1].Replace("/", "\\"); 308 | if (Song == SongInput) 309 | { 310 | Song = args[1].Replace("\\", "\\"); 311 | } 312 | MusicManager.playSongImmediatley(Song); 313 | return false; 314 | } 315 | public static bool CrashComputer(OS os, List args) 316 | { 317 | Computer computer = os.connectedComp; 318 | computer.crash(os.thisComputer.ip); 319 | return false; 320 | } 321 | public static bool AddProxy(OS os, List args) 322 | { 323 | string ProxyTimeInput = args[1]; 324 | float ProxyTime; 325 | float.TryParse(ProxyTimeInput, out ProxyTime); 326 | Computer computer = os.connectedComp; 327 | if (args.Count < 0) 328 | { 329 | os.write("Usage: addProxy (Time)"); 330 | return false; 331 | } 332 | computer.addProxy(ProxyTime); 333 | return false; 334 | } 335 | public static bool AddFirewall(OS os, List args) 336 | { 337 | string Solution = args[1]; 338 | string LevelInput = args[2]; 339 | string AdditionalTimeInput = args[3]; 340 | int Level = Convert.ToInt32(LevelInput); 341 | float AdditionalTime; 342 | float.TryParse(AdditionalTimeInput, out AdditionalTime); 343 | Computer computer = os.connectedComp; 344 | if (args.Count == 1 && args[1] != null) 345 | { 346 | computer.addFirewall(Level); 347 | } 348 | else if (args.Count == 2 && args[1] != null && args[2] != null) 349 | { 350 | computer.addFirewall(Level, Solution); 351 | } 352 | else if (args.Count == 3 && args[1] != null && args[2] != null && args[3] != null) 353 | { 354 | computer.addFirewall(Level, Solution, AdditionalTime); 355 | } 356 | else 357 | { 358 | os.write("Usage: addFirewall (Level) [Solution] [AdditionalTime]"); 359 | } 360 | return false; 361 | } 362 | public static bool AddUser(OS os, List args) 363 | { 364 | string Username = args[1]; 365 | string Password = args[2]; 366 | string TypeInput = args[3]; 367 | byte Type = Convert.ToByte(TypeInput); 368 | Computer computer = os.connectedComp; 369 | if (args.Count < 3) 370 | { 371 | os.write("Usage: addUser (Username) (Password) (Type)"); 372 | return false; 373 | } 374 | computer.addNewUser(os.thisComputer.ip, Username, Password, Type); 375 | return false; 376 | } 377 | /*public static bool OpenPort(OS os, List args) 378 | { 379 | int port = Convert.ToInt32(args[1]); 380 | string ip = os.thisComputer.ip; 381 | Computer computer = os.connectedComp; 382 | Console.WriteLine(computer.ports); 383 | if (port == 22) 384 | { 385 | computer.openPort(22, ip); 386 | } 387 | else if (port == 21) 388 | { 389 | computer.openPort(21, ip); 390 | } 391 | else if (port == 25) 392 | { 393 | computer.openPort(25, ip); 394 | } 395 | else if (port == 80) 396 | { 397 | computer.openPort(80, ip); 398 | } 399 | else if (port == 1433) 400 | { 401 | computer.openPort(1433, ip); 402 | } 403 | else if (port == 3724) 404 | { 405 | computer.openPort(3724, ip); 406 | } 407 | else if (port == 104) 408 | { 409 | computer.openPort(104, ip); 410 | } 411 | else if (port == 3659) 412 | { 413 | computer.openPort(3659, ip); 414 | } 415 | else if (port == 192) 416 | { 417 | computer.openPort(192, ip); 418 | } 419 | else if (port == 6881) 420 | { 421 | computer.openPort(6881, ip); 422 | } 423 | else if (port == 443) 424 | { 425 | computer.openPort(443, ip); 426 | } 427 | else if (port == 9418) 428 | { 429 | computer.openPort(9418, ip); 430 | } 431 | return false; 432 | } 433 | public static bool ClosePort(OS os, List args) 434 | { 435 | int port = Convert.ToInt32(args[1]); 436 | string ip = os.thisComputer.ip; 437 | Computer computer = os.connectedComp; 438 | Console.WriteLine(computer.ports); 439 | if (port == 22) 440 | { 441 | computer.closePort(22, ip); 442 | } 443 | else if (port == 21) 444 | { 445 | computer.closePort(21, ip); 446 | } 447 | else if (port == 25) 448 | { 449 | computer.closePort(25, ip); 450 | } 451 | else if (port == 80) 452 | { 453 | computer.closePort(80, ip); 454 | } 455 | else if (port == 1433) 456 | { 457 | computer.closePort(1433, ip); 458 | } 459 | else if (port == 3724) 460 | { 461 | computer.closePort(3724, ip); 462 | } 463 | else if (port == 104) 464 | { 465 | computer.closePort(104, ip); 466 | } 467 | else if (port == 3659) 468 | { 469 | computer.closePort(3659, ip); 470 | } 471 | else if (port == 192) 472 | { 473 | computer.closePort(192, ip); 474 | } 475 | else if (port == 6881) 476 | { 477 | computer.closePort(6881, ip); 478 | } 479 | else if (port == 443) 480 | { 481 | computer.closePort(443, ip); 482 | } 483 | else if (port == 9418) 484 | { 485 | computer.closePort(9418, ip); 486 | } 487 | return false; 488 | } */ 489 | public static bool OpenPort(OS os, List args) 490 | { 491 | Computer computer = os.connectedComp; 492 | if (args.Count < 1) 493 | { 494 | os.write("Usage: openPort (PortToopen)"); 495 | return false; 496 | } 497 | int port = Convert.ToInt32(args[1]); 498 | string ip = os.thisComputer.ip; 499 | computer.openPort(port, ip); 500 | return false; 501 | } 502 | public static bool ClosePort(OS os, List args) 503 | { 504 | Computer computer = os.connectedComp; 505 | if (args.Count < 1) 506 | { 507 | os.write("Usage: closePort (PortToClose)\n"); 508 | return false; 509 | } 510 | int port = Convert.ToInt32(args[1]); 511 | string ip = os.thisComputer.ip; 512 | computer.closePort(port, ip); 513 | return false; 514 | } 515 | public static bool RemoveProxy(OS os, List args) 516 | { 517 | Computer computer = os.connectedComp; 518 | computer.hasProxy = false; 519 | return false; 520 | } 521 | public static bool RemoveFirewall(OS os, List args) 522 | { 523 | Computer computer = os.connectedComp; 524 | computer.firewall = null; 525 | return false; 526 | } 527 | public static bool AddComputer(OS os, List args) 528 | { 529 | if (args.Count < 5) 530 | { 531 | os.write("Usage: addComputer (Name) (IP) (SecurityLevel) (CompType) (ID)"); 532 | return false; 533 | } 534 | try 535 | { 536 | int IsNumber = Convert.ToInt32(args[3]); 537 | byte IsByte = Convert.ToByte(args[4]); 538 | } 539 | catch 540 | { 541 | os.write("Usage: addComputer (Name) (IP) (SecurityLevel) (CompType) (ID)"); 542 | return false; 543 | } 544 | string Name = args[1]; 545 | string IP = args[2]; 546 | int SecurityLevel = Convert.ToInt32(args[3]); 547 | byte CompType = Convert.ToByte(args[4]); 548 | string ID = args[5]; 549 | Computer computer = new Computer(Name, IP, os.netMap.getRandomPosition(), SecurityLevel, CompType, os); 550 | computer.idName = ID; 551 | os.netMap.nodes.Add(computer); // If you are adding a new computer, you must add the object to nodes list 552 | return false; 553 | } 554 | public static bool DefineComputer(OS os, List args) 555 | { 556 | Computer computer = Programs.getComputer(os, args[1]); 557 | string Action = args[2]; 558 | string ActionArgs = args[3]; 559 | 560 | if (Action == "tracetime") 561 | { 562 | float TraceTime; 563 | float.TryParse(ActionArgs, out TraceTime); 564 | computer.traceTime = TraceTime; 565 | } 566 | else if (Action == "isadminsuper") 567 | { 568 | bool TrueOrFalse; 569 | bool.TryParse(ActionArgs, out TrueOrFalse); 570 | computer.admin.IsSuper = TrueOrFalse ? true : false; 571 | } 572 | return false; 573 | } 574 | public static bool PlaySFX(OS os, List args) 575 | { 576 | SoundEffect sound = os.content.Load(args[1]); 577 | sound.Play(); 578 | return false; 579 | } 580 | public static bool GetMoreRAM(OS os, List args) 581 | { 582 | os.totalRam = 2048; 583 | return false; 584 | } 585 | public static bool SetFaction(OS os, List args) 586 | { 587 | string factionInput = args[1]; 588 | if (factionInput == "entropy") 589 | { 590 | os.allFactions.setCurrentFaction("entropy", os); 591 | } 592 | else if (factionInput == "csec") 593 | { 594 | os.allFactions.setCurrentFaction("hub", os); 595 | } 596 | else if (factionInput == "bibliotheque") 597 | { 598 | os.allFactions.setCurrentFaction("Bibliotheque", os); 599 | } 600 | else 601 | { 602 | os.write("Usage: setFaction entropy/csec"); 603 | } 604 | return false; 605 | } 606 | public static bool TracedBehind250Proxies(OS os, List args) 607 | { 608 | os.traceTracker.start(500f); 609 | return false; 610 | } 611 | public static bool OxygencraftStorageFaciltyCache(OS os, List args) // Don't tell anyone about this command, keep it a secret 612 | { 613 | Computer computer = new Computer("oxygencraft Storage Facility", "4825.18.385.2956", os.netMap.getRandomPosition(), 2000, 2, os); 614 | computer.idName = "oxyStorageCache"; 615 | computer.adminPass = "edhufguHUFHJGHLRWEHU32867837@!^&*$^&#@^&74"; 616 | computer.admin.IsSuper = true; 617 | computer.admin.ResetsPassword = true; 618 | computer.addFirewall(25, "ijijUFERHUHUGR2184327567uGgyregyhwuiEHUT43UHI887328", 15); 619 | computer.portsNeededForCrack = 13; 620 | computer.addProxy(3600); 621 | computer.HasTracker = true; 622 | computer.traceTime = 45f; 623 | computer.ports.Add(1433); 624 | computer.ports.Add(104); 625 | computer.ports.Add(3724); 626 | computer.ports.Add(443); 627 | computer.ports.Add(6881); 628 | computer.ports.Add(192); 629 | computer.ports.Add(3659); 630 | computer.ports.Add(9418); 631 | for (int index = 0; index < computer.users.Count; ++index) 632 | { 633 | if (computer.users[index].name.ToLower().Equals("admin")) 634 | { 635 | UserDetail user = computer.users[index]; 636 | if (os.username == "oxygencraft" || os.username == "oxygencraft2" || os.username == "oxygencraft3" || os.username == "oxygencraft4") 637 | { 638 | user.known = true; 639 | } 640 | } 641 | } 642 | Folder bin = computer.files.root.searchForFolder("bin"); 643 | bin.files.Add(new FileEntry(PortExploits.crackExeData[25], Utils.GetNonRepeatingFilename("SMTPoverflow", ".exe", bin))); 644 | bin.files.Add(new FileEntry(PortExploits.crackExeData[22], Utils.GetNonRepeatingFilename("SSHCrack", ".exe", bin))); 645 | bin.files.Add(new FileEntry(PortExploits.crackExeData[21], Utils.GetNonRepeatingFilename("FTPBounce", ".exe", bin))); 646 | bin.files.Add(new FileEntry(PortExploits.crackExeData[211], Utils.GetNonRepeatingFilename("FTPSprint", ".exe", bin))); 647 | bin.files.Add(new FileEntry(PortExploits.crackExeData[80], Utils.GetNonRepeatingFilename("WebServerWorm", ".exe", bin))); 648 | bin.files.Add(new FileEntry(PortExploits.crackExeData[1433], Utils.GetNonRepeatingFilename("SQL_MemCorrupt", ".exe", bin))); 649 | bin.files.Add(new FileEntry(PortExploits.crackExeData[104], Utils.GetNonRepeatingFilename("KBT_PortTest", ".exe", bin))); 650 | bin.files.Add(new FileEntry(PortExploits.crackExeData[3724], Utils.GetNonRepeatingFilename("WoWHack", ".exe", bin))); 651 | bin.files.Add(new FileEntry(PortExploits.crackExeData[443], Utils.GetNonRepeatingFilename("SSLTrojan", ".exe", bin))); 652 | bin.files.Add(new FileEntry(PortExploits.crackExeData[6881], Utils.GetNonRepeatingFilename("TorrentStreamInjector", ".exe", bin))); 653 | bin.files.Add(new FileEntry(PortExploits.crackExeData[192], Utils.GetNonRepeatingFilename("PacificPortcrusher", ".exe", bin))); 654 | bin.files.Add(new FileEntry(PortExploits.crackExeData[3659], Utils.GetNonRepeatingFilename("confloodEOS", ".exe", bin))); 655 | bin.files.Add(new FileEntry(PortExploits.crackExeData[9418], Utils.GetNonRepeatingFilename("GitTunnel", ".exe", bin))); 656 | bin.files.Add(new FileEntry(PortExploits.crackExeData[4], Utils.GetNonRepeatingFilename("SecurityTracer", ".exe", bin))); 657 | bin.files.Add(new FileEntry(PortExploits.crackExeData[9], Utils.GetNonRepeatingFilename("Decypher", ".exe", bin))); 658 | bin.files.Add(new FileEntry(PortExploits.crackExeData[10], Utils.GetNonRepeatingFilename("DECHead", ".exe", bin))); 659 | bin.files.Add(new FileEntry(PortExploits.crackExeData[11], Utils.GetNonRepeatingFilename("Clock", ".exe", bin))); 660 | bin.files.Add(new FileEntry(PortExploits.crackExeData[12], Utils.GetNonRepeatingFilename("TraceKill", ".exe", bin))); 661 | bin.files.Add(new FileEntry(PortExploits.crackExeData[13], Utils.GetNonRepeatingFilename("eosDeviceScan", ".exe", bin))); 662 | bin.files.Add(new FileEntry(PortExploits.crackExeData[14], Utils.GetNonRepeatingFilename("themechanger", ".exe", bin))); 663 | bin.files.Add(new FileEntry(PortExploits.crackExeData[15], Utils.GetNonRepeatingFilename("hacknet", ".exe", bin))); 664 | bin.files.Add(new FileEntry(PortExploits.crackExeData[16], Utils.GetNonRepeatingFilename("HexClock", ".exe", bin))); 665 | bin.files.Add(new FileEntry(PortExploits.crackExeData[17], Utils.GetNonRepeatingFilename("Sequencer", ".exe", bin))); 666 | bin.files.Add(new FileEntry(PortExploits.crackExeData[31], Utils.GetNonRepeatingFilename("KaguyaTrials", ".exe", bin))); 667 | bin.files.Add(new FileEntry(PortExploits.crackExeData[32], Utils.GetNonRepeatingFilename("SignalScramble", ".exe", bin))); 668 | bin.files.Add(new FileEntry(PortExploits.crackExeData[33], Utils.GetNonRepeatingFilename("MemForensics", ".exe", bin))); 669 | bin.files.Add(new FileEntry(PortExploits.crackExeData[34], Utils.GetNonRepeatingFilename("MemDumpGenerator", ".exe", bin))); 670 | bin.files.Add(new FileEntry(PortExploits.crackExeData[35], Utils.GetNonRepeatingFilename("NetMapOrganizer", ".exe", bin))); 671 | bin.files.Add(new FileEntry(PortExploits.crackExeData[36], Utils.GetNonRepeatingFilename("ComShell", ".exe", bin))); 672 | bin.files.Add(new FileEntry(PortExploits.crackExeData[37], Utils.GetNonRepeatingFilename("DNotes", ".exe", bin))); 673 | bin.files.Add(new FileEntry(PortExploits.crackExeData[38], Utils.GetNonRepeatingFilename("ClockV2", ".exe", bin))); 674 | bin.files.Add(new FileEntry(PortExploits.crackExeData[39], Utils.GetNonRepeatingFilename("TuneSwap", ".exe", bin))); 675 | bin.files.Add(new FileEntry(PortExploits.DangerousPacemakerFirmware, Utils.GetNonRepeatingFilename("PacemakerDangerous", ".dll", bin))); 676 | bin.files.Add(new FileEntry(PortExploits.ValidPacemakerFirmware, Utils.GetNonRepeatingFilename("PacemakerWorking", ".dll", bin))); 677 | bin.files.Add(new FileEntry(PortExploits.ValidAircraftOperatingDLL, Utils.GetNonRepeatingFilename("747FlightSystem", ".dll", bin))); 678 | os.netMap.nodes.Add(computer); 679 | return false; 680 | } 681 | public static bool DisableEmailIcon(OS os, List args) 682 | { 683 | os.DisableEmailIcon = true; 684 | return false; 685 | } 686 | public static bool EnableEmailIcon(OS os, List args) 687 | { 688 | os.DisableEmailIcon = false; 689 | return false; 690 | } 691 | public static bool NodeRestore(OS os, List args) 692 | { 693 | DLC1SessionUpgrader.ReDsicoverAllVisibleNodesInOSCache(os); 694 | return false; 695 | } 696 | public static bool AddRestoreCircle(OS os, List args) 697 | { 698 | Computer computer = Programs.getComputer(os, args[1]); 699 | SFX.addCircle(computer.getScreenSpacePosition(), Utils.AddativeWhite * 0.4f, 70f); 700 | return false; 701 | } 702 | public static bool WhitelistBypass(OS os, List args) 703 | { 704 | Computer computer = Programs.getComputer(os, args[1]); 705 | Folder folder = computer.files.root.searchForFolder("Whitelist"); 706 | for (int index = 0; index < folder.files.Count; ++index) 707 | { 708 | if (folder.files[index].name.Equals("list.txt") || folder.files[index].name.Equals("source.txt")) 709 | { 710 | folder.files.Remove(folder.files[index]); 711 | folder.files.Add(new FileEntry(os.thisComputer.ip, "list.txt")); 712 | os.execute("connect " + computer.ip); 713 | } 714 | } 715 | return false; 716 | } 717 | public static bool SetTheme(OS os, List args) 718 | { 719 | OSTheme Theme; 720 | string ThemeInput = args[1]; 721 | if (ThemeInput == "TerminalOnly") 722 | { 723 | Theme = OSTheme.TerminalOnlyBlack; 724 | ThemeManager.switchTheme(os, Theme); 725 | } 726 | else if (ThemeInput == "Blue") 727 | { 728 | Theme = OSTheme.HacknetBlue; 729 | ThemeManager.switchTheme(os, Theme); 730 | } 731 | else if (ThemeInput == "Teal") 732 | { 733 | Theme = OSTheme.HacknetTeal; 734 | ThemeManager.switchTheme(os, Theme); 735 | } 736 | else if (ThemeInput == "Yellow") 737 | { 738 | Theme = OSTheme.HacknetYellow; 739 | ThemeManager.switchTheme(os, Theme); 740 | } 741 | else if (ThemeInput == "Green") 742 | { 743 | Theme = OSTheme.HackerGreen; 744 | ThemeManager.switchTheme(os, Theme); 745 | } 746 | else if (ThemeInput == "White") 747 | { 748 | Theme = OSTheme.HacknetWhite; 749 | ThemeManager.switchTheme(os, Theme); 750 | } 751 | else if (ThemeInput == "Purple") 752 | { 753 | Theme = OSTheme.HacknetPurple; 754 | ThemeManager.switchTheme(os, Theme); 755 | } 756 | else if (ThemeInput == "Mint") 757 | { 758 | Theme = OSTheme.HacknetMint; 759 | ThemeManager.switchTheme(os, Theme); 760 | } 761 | else if (ThemeInput == "Colamaeleon") 762 | { 763 | Theme = OSTheme.Colamaeleon; 764 | ThemeManager.switchTheme(os, Theme); 765 | } 766 | else if (ThemeInput == "GreenCompact") 767 | { 768 | Theme = OSTheme.GreenCompact; 769 | ThemeManager.switchTheme(os, Theme); 770 | } 771 | else if (ThemeInput == "Riptide") 772 | { 773 | Theme = OSTheme.Riptide; 774 | ThemeManager.switchTheme(os, Theme); 775 | } 776 | else if (ThemeInput == "Riptide2") 777 | { 778 | Theme = OSTheme.Riptide2; 779 | ThemeManager.switchTheme(os, Theme); 780 | } 781 | else 782 | { 783 | os.write("Usage: setTheme: (Theme)\nValid Options: TerminalOnly,Blue,Teal,Yellow,Green,White,Purple,Mint,Colamaeleon,GreenCompact,Riptide,Riptide2"); 784 | } 785 | return false; 786 | } 787 | public static bool SetCustomTheme(OS os, List args) 788 | { 789 | ThemeManager.switchTheme(os, args[1]); 790 | return false; 791 | } 792 | public static bool LinkComputer(OS os, List args) 793 | { 794 | Computer computer = Programs.getComputer(os, args[1]); 795 | Computer computer2 = Programs.getComputer(os, args[2]); 796 | try 797 | { 798 | string IsComputer = computer2.adminPass; 799 | } 800 | catch 801 | { 802 | os.write("Usage: linkComputer: (SourceIP) (RemoteIP)"); 803 | } 804 | computer.links.Add(os.netMap.nodes.IndexOf(computer2)); 805 | return false; 806 | } 807 | public static bool UnlinkComputer(OS os, List args) 808 | { 809 | Computer computer1 = Programs.getComputer(os, args[1]); 810 | Computer computer2 = Programs.getComputer(os, args[2]); 811 | computer1.links.Remove(os.netMap.nodes.IndexOf(computer2)); 812 | return false; 813 | } 814 | public static bool LoseAllNodes(OS os, List args) 815 | { 816 | for (int index = 1; index < os.netMap.nodes.Count; ++index) 817 | { 818 | Computer computer = os.netMap.nodes[index]; 819 | XNA.Vector2 Pos = computer.getScreenSpacePosition(); 820 | List ImpactEffects = new List(); 821 | ImpactEffects.Add(new TraceKillExe.PointImpactEffect() 822 | { 823 | location = Pos, 824 | scaleModifier = (float)(3.0 + (computer.securityLevel > 2 ? 1.0 : 0.0)), 825 | cne = new ConnectedNodeEffect(os, true), 826 | timeEnabled = 0.0f, 827 | HasHighlightCircle = true 828 | }); 829 | os.netMap.visibleNodes.Remove(index); 830 | } 831 | return false; 832 | } 833 | public static bool LoseNode(OS os, List args) 834 | { 835 | Computer computer = Programs.getComputer(os, args[1]); 836 | int CompToRemove = os.netMap.nodes.IndexOf(computer); 837 | XNA.Vector2 Pos = computer.getScreenSpacePosition(); 838 | List ImpactEffects = new List(); 839 | ImpactEffects.Add(new TraceKillExe.PointImpactEffect() 840 | { 841 | location = Pos, 842 | scaleModifier = (float)(3.0 + (computer.securityLevel > 2 ? 1.0 : 0.0)), 843 | cne = new ConnectedNodeEffect(os, true), 844 | timeEnabled = 0.0f, 845 | HasHighlightCircle = true 846 | }); 847 | os.netMap.visibleNodes.Remove(CompToRemove); 848 | return false; 849 | } 850 | public static bool RevealNode(OS os, List args) 851 | { 852 | Computer computer = Programs.getComputer(os, args[1]); 853 | int CompToReveal = os.netMap.nodes.IndexOf(computer); 854 | os.netMap.visibleNodes.Add(CompToReveal); 855 | return false; 856 | } 857 | public static bool RemoveComputer(OS os, List args) 858 | { 859 | Computer computer = Programs.getComputer(os, args[1]); 860 | int CompToRemove = os.netMap.nodes.IndexOf(computer); 861 | XNA.Vector2 Pos = computer.getScreenSpacePosition(); 862 | List ImpactEffects = new List(); 863 | ImpactEffects.Add(new TraceKillExe.PointImpactEffect() 864 | { 865 | location = Pos, 866 | scaleModifier = (float)(3.0 + (computer.securityLevel > 2 ? 1.0 : 0.0)), 867 | cne = new ConnectedNodeEffect(os, true), 868 | timeEnabled = 0.0f, 869 | HasHighlightCircle = true 870 | }); 871 | os.netMap.visibleNodes.Remove(CompToRemove); 872 | os.netMap.nodes.Remove(computer); 873 | return false; 874 | } 875 | public static bool ResetIP(OS os, List args) 876 | { 877 | Computer computer = Programs.getComputer(os, args[1]); 878 | computer.ip = NetworkMap.generateRandomIP(); 879 | return false; 880 | } 881 | public static bool ResetPlayerCompIP(OS os, List args) 882 | { 883 | os.thisComputerIPReset(); 884 | return false; 885 | } 886 | public static bool SetIP(OS os, List args) 887 | { 888 | Computer computer = Programs.getComputer(os, args[1]); 889 | computer.ip = args[2]; 890 | return false; 891 | } 892 | public static bool ShowFlags(OS os, List args) 893 | { 894 | os.write(os.Flags.GetSaveString()); 895 | return false; 896 | } 897 | public static bool AddFlag(OS os, List args) 898 | { 899 | os.Flags.AddFlag(args[1]); 900 | return false; 901 | } 902 | public static bool RemoveFlag(OS os, List args) 903 | { 904 | os.Flags.RemoveFlag(args[1]); 905 | return false; 906 | } 907 | public static bool AuthenticateToIRC(OS os, List args) 908 | { 909 | os.Flags.RemoveFlag("DLC_Player_IRC_Authenticated"); 910 | return false; 911 | } 912 | public static bool AddAgentToIRC(OS os, List args) 913 | { 914 | Computer computerobject = Programs.getComputer(os, args[1]); 915 | if (args.Count < 6) 916 | { 917 | os.write("Usage: addAgentToIRC (NameORIDORIP) (AgentName) (AgentPassword) (AgentColourRed) (AgentColourBlue) (AgentColourGreen)"); 918 | return false; 919 | } 920 | try 921 | { 922 | string IsComp = computerobject.adminIP; 923 | int IsNum = Convert.ToInt32(args[4]); 924 | int IsNum2 = Convert.ToInt32(args[5]); 925 | int IsNum3 = Convert.ToInt32(args[6]); 926 | if (args[2] == null || args[3] == null || args[4] == null || args[5] == null || args[6] == null) 927 | { 928 | int ThrowError = Convert.ToInt32("a"); 929 | } 930 | } 931 | catch 932 | { 933 | os.write("Usage: addAgentToIRC (NameORIDORIP) (AgentName) (AgentPassword) (AgentColourRed) (AgentColourBlue) (AgentColourGreen)"); 934 | return false; 935 | } 936 | string computer = computerobject.idName; 937 | DLCHubServer IRC = Programs.getComputer(os, computer).getDaemon(typeof(DLCHubServer)) as DLCHubServer; 938 | XNA.Color colour = new XNA.Color(Convert.ToInt32(args[4]), Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); 939 | IRC.AddAgent(args[2], args[3], colour); 940 | return false; 941 | } 942 | public static bool SetCompPorts(OS os, List args) 943 | { 944 | Computer computer = Programs.getComputer(os, args[1]); 945 | ComputerLoader.loadPortsIntoComputer(args[2], computer); 946 | return false; 947 | } 948 | public static bool AddCustomPortToComp(OS os, List args) 949 | { 950 | 951 | return false; 952 | } 953 | public static bool RemoveCustomPortFromComp(OS os, List args) 954 | { 955 | Computer computer = Programs.getComputer(os, args[1]); 956 | Pathfinder.Game.Computer.Extensions.GetModdedPortList(computer); 957 | return false; 958 | } 959 | public static bool AddSongChangerDaemon(OS os, List args) 960 | { 961 | Computer computer = Programs.getComputer(os, args[1]); 962 | SongChangerDaemon daemon = new SongChangerDaemon(computer, os); 963 | computer.daemons.Add(daemon); 964 | return false; 965 | } 966 | public static bool AddRicerConnectDaemon(OS os, List args) 967 | { 968 | Computer computer = Programs.getComputer(os, args[1]); 969 | CustomConnectDisplayDaemon daemon = new CustomConnectDisplayDaemon(computer, os); 970 | computer.daemons.Add(daemon); 971 | return false; 972 | } 973 | public static bool AddDLCCreditsDaemon(OS os, List args) 974 | { 975 | Computer computer = Programs.getComputer(os, args[1]); 976 | DLCCreditsDaemon daemon = new DLCCreditsDaemon(computer, os); 977 | computer.daemons.Add(daemon); 978 | return false; 979 | } 980 | public static bool AddIRCDaemon(OS os, List args) 981 | { 982 | Computer computer = Programs.getComputer(os, args[1]); 983 | IRCDaemon daemon = new IRCDaemon(computer, os, args[2]); 984 | computer.daemons.Add(daemon); 985 | return false; 986 | } 987 | public static bool AddISPDaemon(OS os, List args) 988 | { 989 | Computer computer = Programs.getComputer(os, args[1]); 990 | ISPDaemon daemon = new ISPDaemon(computer, os); 991 | computer.daemons.Add(daemon); 992 | return false; 993 | } 994 | public static bool Quit(OS os, List args) 995 | { 996 | Game1.getSingleton().Exit(); 997 | return false; 998 | } 999 | public static bool DeleteLogs(OS os, List args) 1000 | { 1001 | Computer computer = Programs.getComputer(os, args[1]); 1002 | //Console.WriteLine("Computer object obtained"); 1003 | Folder folder = computer.files.root.searchForFolder("log"); 1004 | //Console.WriteLine("Folder object obtained"); 1005 | folder.files.Clear(); 1006 | //Console.WriteLine("Deleted all logs"); 1007 | return false; 1008 | } 1009 | public static bool ForkbombProof(OS os, List args) 1010 | { 1011 | os.totalRam = 1000000000; 1012 | return false; 1013 | } 1014 | public static bool ChangeCompIcon(OS os, List args) 1015 | { 1016 | Computer computer = Programs.getComputer(os, args[1]); 1017 | computer.icon = args[2]; 1018 | return false; 1019 | } 1020 | public static bool RemoveSongChangerDaemon(OS os, List args) 1021 | { 1022 | Computer computer = Programs.getComputer(os, args[1]); 1023 | Daemon daemon = computer.getDaemon(typeof(SongChangerDaemon)); 1024 | computer.daemons.Remove(daemon); 1025 | return false; 1026 | } 1027 | public static bool RemoveRicerConnectDaemon(OS os, List args) 1028 | { 1029 | Computer computer = Programs.getComputer(os, args[1]); 1030 | Daemon daemon = computer.getDaemon(typeof(CustomConnectDisplayDaemon)); 1031 | computer.daemons.Remove(daemon); 1032 | return false; 1033 | } 1034 | public static bool RemoveDLCCreditsDaemon(OS os, List args) 1035 | { 1036 | Computer computer = Programs.getComputer(os, args[1]); 1037 | Daemon daemon = computer.getDaemon(typeof(DLCCreditsDaemon)); 1038 | computer.daemons.Remove(daemon); 1039 | return false; 1040 | } 1041 | public static bool RemoveIRCDaemon(OS os, List args) 1042 | { 1043 | Computer computer = Programs.getComputer(os, args[1]); 1044 | Daemon daemon = computer.getDaemon(typeof(IRCDaemon)); 1045 | computer.daemons.Remove(daemon); 1046 | return false; 1047 | } 1048 | public static bool RemoveISPDaemon(OS os, List args) 1049 | { 1050 | Computer computer = Programs.getComputer(os, args[1]); 1051 | Daemon daemon = computer.getDaemon(typeof(ISPDaemon)); 1052 | computer.daemons.Remove(daemon); 1053 | return false; 1054 | } 1055 | public static bool ForkbombVirus(OS os, List args) // Bugged 1056 | { 1057 | for (int index = 1; index < os.netMap.nodes.Count; ++index) 1058 | os.netMap.nodes[index].crash(os.thisComputer.ip); 1059 | 1060 | 1061 | 1062 | return false; 1063 | } 1064 | public static bool InstallInviolabilty(OS os, List args) 1065 | { 1066 | Computer computer = Programs.getComputer(os, args[1]); 1067 | computer.portsNeededForCrack = 9999999; 1068 | return false; 1069 | } 1070 | public static bool RemoveAllDaemons(OS os, List args) 1071 | { 1072 | Computer computer = Programs.getComputer(os, args[1]); 1073 | computer.daemons.Clear(); 1074 | return false; 1075 | } 1076 | public static bool ShowIPNamesAndID(OS os, List args) 1077 | { 1078 | Computer computer = Programs.getComputer(os, args[1]); 1079 | os.write("ID: " + computer.idName); 1080 | os.write("Name: " + computer.name); 1081 | os.write("IP: " + computer.ip); 1082 | return false; 1083 | } 1084 | public static bool SummonDebugModDaemonComp(OS os, List args) 1085 | { 1086 | Computer computer = new Computer("DebugMod Comp", NetworkMap.generateRandomIP(), os.netMap.getRandomPosition(), 50000, 2, os); 1087 | computer.idName = "debugMod"; 1088 | os.netMap.nodes.Add(computer); 1089 | Dictionary dict = new Dictionary(); 1090 | Pathfinder.Game.Computer.Extensions.AddModdedDaemon(computer, "DebugModDaemon"); 1091 | os.execute("connect " + computer.ip); 1092 | return false; 1093 | } 1094 | public static bool ChangeAdmin(OS os, List args) 1095 | { 1096 | Computer computer = Programs.getComputer(os, args[1]); 1097 | if (args[2] == "basic") 1098 | { 1099 | computer.admin = new BasicAdministrator(); 1100 | } 1101 | else if (args[2] == "fastbasic") 1102 | { 1103 | computer.admin = new FastBasicAdministrator(); 1104 | } 1105 | else if (args[2] == "fastprogress") 1106 | { 1107 | computer.admin = new FastProgressOnlyAdministrator(); 1108 | } 1109 | else if (args[2] == "alwaysactive") 1110 | { 1111 | computer.admin = new AlwaysActiveAdmin(); 1112 | } 1113 | else if (args[2] == "none") 1114 | { 1115 | computer.admin = null; 1116 | } 1117 | else 1118 | { 1119 | os.write("Usage: changeAdmin (IDORIPORName) (Admin)"); 1120 | os.write("Valid options: basic,fastbasic,fastprogress,alwaysactive,none"); 1121 | } 1122 | return false; 1123 | } 1124 | public static bool ViewAdmin(OS os, List args) 1125 | { 1126 | Computer computer = Programs.getComputer(os, args[1]); 1127 | if (computer.admin == new BasicAdministrator()) 1128 | { 1129 | os.write("Basic Admin"); 1130 | } 1131 | else if (computer.admin == new FastBasicAdministrator()) 1132 | { 1133 | os.write("Fast Basic Admin"); 1134 | } 1135 | else if (computer.admin == new FastProgressOnlyAdministrator()) 1136 | { 1137 | os.write("Fast Progress Admin"); 1138 | } 1139 | else if (computer.admin == new AlwaysActiveAdmin()) 1140 | { 1141 | os.write("Always Active Admin"); 1142 | } 1143 | else 1144 | { 1145 | os.write("You may of entered the computer incorrectly or there is no admin for the computer."); 1146 | os.write("Usage: viewAdmin (IPORIDORName)"); 1147 | } 1148 | return false; 1149 | } 1150 | 1151 | public static bool ReplayPlaneMission(OS os, List args) 1152 | { 1153 | Computer DHS = Programs.getComputer(os, "dhs"); 1154 | Computer CrashPlane = Programs.getComputer(os, "dair_crash"); 1155 | Computer SecondaryPlane = Programs.getComputer(os, "dair_secondary"); 1156 | Folder DHSFolder = DHS.files.root.searchForFolder("HomeBase"); 1157 | Folder CrashPlaneFolder = CrashPlane.files.root.searchForFolder("FlightSystems"); 1158 | Folder SecondaryPlaneFolder = SecondaryPlane.files.root.searchForFolder("FlightSystems"); 1159 | AircraftDaemon CrashPlaneDaemon = ((AircraftDaemon)CrashPlane.getDaemon(typeof(AircraftDaemon))); 1160 | AircraftDaemon SecondaryPlaneDaemon = ((AircraftDaemon)SecondaryPlane.getDaemon(typeof(AircraftDaemon))); 1161 | if (!os.Flags.HasFlag("dlc_complete") && args.Count == 1) 1162 | { 1163 | os.write("You have not completed the dlc yet, if you want spoilers and wish to continue, type this command:"); 1164 | os.write("replayPlaneMission y"); 1165 | return false; 1166 | } 1167 | os.homeAssetServerID = "dhsDrop"; 1168 | os.homeNodeID = "dhs"; 1169 | os.currentMission = null; 1170 | os.delayer.RunAllDelayedActions(); 1171 | os.IsInDLCMode = true; 1172 | os.allFactions.setCurrentFaction("Bibliotheque", os); 1173 | DLCHubServer dlcHubServer = (DLCHubServer)Programs.getComputer(os, "dhs").getDaemon(typeof(DLCHubServer)); 1174 | os.currentFaction.playerValue = 1; 1175 | int num = 10; 1176 | for (int index = 0; index < num; ++index) 1177 | { 1178 | MissionFunctions.runCommand(1, "addRankSilent"); 1179 | if (index + 1 < num) 1180 | { 1181 | os.delayer.RunAllDelayedActions(); 1182 | dlcHubServer.DelayedActions.InstantlyResolveAllActions(os); 1183 | dlcHubServer.ClearAllActiveMissions(); 1184 | } 1185 | } 1186 | os.mailicon.isEnabled = false; 1187 | CrashPlane.ip = "209.15.13.134"; 1188 | SecondaryPlane.ip = "208.73.211.70"; 1189 | if (!CrashPlaneFolder.containsFile("747FlightOps.dll")) 1190 | { 1191 | CrashPlaneFolder.files.Add(new FileEntry(PortExploits.ValidAircraftOperatingDLL, "747FlightOps.dll")); 1192 | } 1193 | if (!SecondaryPlaneFolder.containsFile("747FlightOps.dll")) 1194 | { 1195 | SecondaryPlaneFolder.files.Add(new FileEntry(PortExploits.ValidAircraftOperatingDLL, "747FlightOps.dll")); 1196 | } 1197 | CrashPlaneDaemon.IsInCriticalFirmwareFailure = false; 1198 | CrashPlaneDaemon.CurrentAltitude = 30000; 1199 | SecondaryPlaneDaemon.IsInCriticalFirmwareFailure = false; 1200 | SecondaryPlaneDaemon.CurrentAltitude = 30000; 1201 | DHSFolder.files.Remove(DHSFolder.files[1]); 1202 | DHSFolder.files.Add(new FileEntry(LongVariables.IRCLog(os), "active.log")); 1203 | os.Flags.RemoveFlag("dlc_complete"); 1204 | os.Flags.RemoveFlag("dlc_complete_FromUnknown"); 1205 | os.Flags.RemoveFlag("dlc_complete_FromCSEC"); 1206 | os.Flags.RemoveFlag("dlc_complete_FromEntropy"); 1207 | os.Flags.RemoveFlag("DLC_PlaneCrashResponseTriggered"); 1208 | os.Flags.RemoveFlag("DLC_DoubleCrashResponseTriggered"); 1209 | os.Flags.RemoveFlag("DLC_PlaneSaveResponseTriggered"); 1210 | os.Flags.RemoveFlag("DLC_PlaneResult"); 1211 | os.Flags.RemoveFlag("AircraftInfoOverlayDeactivated"); 1212 | os.Flags.RemoveFlag("AircraftInfoOverlayActivated"); 1213 | ComputerLoader.loadMission("Content/DLC/Missions/Airline2/Missions/AirlineMission2_Player.xml"); 1214 | for (int index = 0; index < os.netMap.visibleNodes.Count; index++) 1215 | { 1216 | string str = os.PreDLCVisibleNodesCache + (os.PreDLCVisibleNodesCache.Length > 0 ? (object)"," : (object)"") + (object)os.netMap.visibleNodes[index]; 1217 | os.PreDLCVisibleNodesCache = str; 1218 | } 1219 | os.execute("loseAllNodes"); 1220 | while (!os.Flags.HasFlag("AircraftInfoOverlayDeactivated")) 1221 | { 1222 | 1223 | } 1224 | DLC1SessionUpgrader.EndDLCSection(os); 1225 | return false; 1226 | } 1227 | public static bool ReplayPlaneMissionSecondary(OS os, List args) 1228 | { 1229 | Hacknet.Misc.SessionAccelerator.AccelerateSessionToDLCEND(os); 1230 | return false; 1231 | } 1232 | public static bool TellPeopleYouAreGonnaHackThemOnline(Hacknet.OS os, List args) 1233 | { 1234 | os.traceTracker.start(200f); 1235 | return false; 1236 | } 1237 | public static bool MyFatherIsCCC(OS os, List args) 1238 | { 1239 | os.traceTracker.start(5f); 1240 | return false; 1241 | } 1242 | public static bool CantTouchThis(OS os, List args) 1243 | { 1244 | os.traceTracker.start(99999f); 1245 | return false; 1246 | } 1247 | public static bool ViewFaction(OS os, List args) 1248 | { 1249 | os.write(os.currentFaction.name); 1250 | return false; 1251 | } 1252 | public static bool ViewPlayerVal(OS os, List args) 1253 | { 1254 | os.write(Convert.ToString(os.currentFaction.playerValue)); 1255 | return false; 1256 | } 1257 | public static bool KaguyaTrialEffect(OS os, List args) 1258 | { 1259 | int y = 0; 1260 | Rectangle location = new Rectangle(os.ram.bounds.X, y, RamModule.MODULE_WIDTH, (int)OS.EXE_MODULE_HEIGHT); 1261 | DLCIntroExe exe = new DLCIntroExe(location, os, null); 1262 | AccessBypass.CallPrivateMethod(exe, "AddRadialMailLine"); 1263 | return false; 1264 | } 1265 | public static bool KaguyaTrialEffect2(OS os, List args) 1266 | { 1267 | float timeInExplosion = 0f; 1268 | int y = 0; 1269 | Rectangle location = new Rectangle(os.ram.bounds.X, y, RamModule.MODULE_WIDTH, (int)OS.EXE_MODULE_HEIGHT); 1270 | DLCIntroExe exe = new DLCIntroExe(location, os, null); 1271 | AccessBypass.CallPrivateMethod(exe, "UpdateUIFlickerIn"); 1272 | return false; 1273 | } 1274 | public static bool KaguyaTrialEffect3(OS os, List args) 1275 | { 1276 | int y = 0; 1277 | Rectangle location = new Rectangle(os.ram.bounds.X, y, RamModule.MODULE_WIDTH, (int)OS.EXE_MODULE_HEIGHT); 1278 | DLCIntroExe exe = new DLCIntroExe(location, os, null); 1279 | AccessBypass.CallPrivateMethod(exe, "CompleteMailPhaseOut"); 1280 | return false; 1281 | } 1282 | public static bool AntiTrace(OS os, List args) 1283 | { 1284 | while (!os.Flags.HasFlag("Stop_Anti_Trace")) 1285 | { 1286 | os.traceTracker.stop(); 1287 | } 1288 | os.Flags.RemoveFlag("Stop_Anti_Trace"); 1289 | return false; 1290 | } 1291 | public static bool StopAntiTrace(OS os, List args) 1292 | { 1293 | os.Flags.AddFlag("Stop_Anti_Trace"); 1294 | return false; 1295 | } 1296 | public static bool RunHackerScriptFunction(OS os, List args) 1297 | { 1298 | string sourceComp = args[1]; 1299 | string targetComp = args[2]; 1300 | string command = args[3]; 1301 | string[] functionArgs = new string[] { sourceComp, targetComp, command }; 1302 | 1303 | return false; 1304 | } 1305 | public static bool AircraftNuke(OS os, List args) 1306 | { 1307 | Computer computer = Programs.getComputer(os, args[1]); 1308 | //AircraftDaemon computerdaemon = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1309 | AircraftDaemon computerdaemon = new AircraftDaemon(computer, os, "OxyNuke", new Vector2(20f, 20f), new Vector2(50f, 50f), 50f); 1310 | computer.daemons.Add(computerdaemon); 1311 | computerdaemon.isListed = false; 1312 | computerdaemon.IsInCriticalFirmwareFailure = true; 1313 | computerdaemon.CallPrivateMethod("CrashAircraft", null); 1314 | computerdaemon.StartReloadFirmware(); 1315 | return false; 1316 | } 1317 | public static bool AddAircraftDaemon(OS os, List args) 1318 | { 1319 | Computer computer = Programs.getComputer(os, args[1]); 1320 | float float1; 1321 | float float2; 1322 | float float3; 1323 | float float4; 1324 | float float5; 1325 | float.TryParse(args[3], out float1); 1326 | float.TryParse(args[4], out float2); 1327 | float.TryParse(args[5], out float3); 1328 | float.TryParse(args[6], out float4); 1329 | float.TryParse(args[7], out float5); 1330 | Vector2 origin = new Vector2(float1, float2); 1331 | Vector2 dest = new Vector2(float3, float4); 1332 | AircraftDaemon daemon = new AircraftDaemon(computer, os, args[2], origin, dest, float5); 1333 | computer.daemons.Add(daemon); 1334 | return false; 1335 | } 1336 | public static bool SetAircraftAltitude(OS os, List args) 1337 | { 1338 | Computer computer = Programs.getComputer(os, args[1]); 1339 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1340 | aircraft.CurrentAltitude = Convert.ToDouble(args[2]); 1341 | return false; 1342 | } 1343 | public static bool SetAircraftSpeed(OS os, List args) 1344 | { 1345 | Computer computer = Programs.getComputer(os, args[1]); 1346 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1347 | float speed; 1348 | float.TryParse(args[2], out speed); 1349 | aircraft.SetPrivateField("currentAirspeed", speed); 1350 | return false; 1351 | } 1352 | public static bool SetAircraftRateOfClimb(OS os, List args) 1353 | { 1354 | Computer computer = Programs.getComputer(os, args[1]); 1355 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1356 | float climbrate; 1357 | float.TryParse(args[2], out climbrate); 1358 | aircraft.SetPrivateField("rateOfClimb", climbrate); 1359 | return false; 1360 | } 1361 | public static bool SetAircraftFirmwareFailure(OS os, List args) 1362 | { 1363 | Computer computer = Programs.getComputer(os, args[1]); 1364 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1365 | aircraft.IsInCriticalFirmwareFailure = true; 1366 | return false; 1367 | } 1368 | public static bool SetAircraftFirmwareSucessful(OS os, List args) 1369 | { 1370 | Computer computer = Programs.getComputer(os, args[1]); 1371 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1372 | aircraft.IsInCriticalFirmwareFailure = false; 1373 | return false; 1374 | } 1375 | public static bool SetAircraftProgress(OS os, List args) 1376 | { 1377 | Computer computer = Programs.getComputer(os, args[1]); 1378 | AircraftDaemon aircraft = (AircraftDaemon)computer.getDaemon(typeof(AircraftDaemon)); 1379 | float progress; 1380 | float.TryParse(args[2], out progress); 1381 | aircraft.SetPrivateField("FlightProgress", progress); 1382 | return false; 1383 | } 1384 | public static bool KaguyaTrialEffect5(OS os, List args) 1385 | { 1386 | SFX.addCircle(os.mailicon.pos + new Vector2(20f, 6f), Utils.AddativeRed * 0.8f, 100f); 1387 | return false; 1388 | } 1389 | } 1390 | } 1391 | -------------------------------------------------------------------------------- /DebugMod/DebugApp.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using Hacknet; 6 | using Pathfinder; 7 | 8 | namespace DebugMod 9 | { 10 | class DebugAppExe : Pathfinder.Executable.Interface 11 | { 12 | public override string Identifier => "DebugAppExe"; 13 | public override bool NeedsProxyAccess => false; 14 | public override int RamCost => 500; 15 | 16 | public override bool? Update(Pathfinder.Executable.Instance instance, float time) 17 | { 18 | return true; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /DebugMod/DebugDaemon.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using Microsoft.Xna.Framework; 6 | using Microsoft.Xna.Framework.Graphics; 7 | using Pathfinder.Daemon; 8 | using Hacknet; 9 | using Hacknet.Gui; 10 | using Pathfinder; 11 | using Hacknet.UIUtils; 12 | 13 | namespace DebugMod 14 | { 15 | class DebugDaemon : IInterface 16 | { 17 | public string InitialServiceName => "DebugMod"; 18 | private DebugModState State; 19 | private float t = 0f; 20 | private static Color themeColour = new Color(45, 180, 231); 21 | 22 | public void Draw(Instance instance, Rectangle bounds, SpriteBatch sb) // Draws stuff on the screen, will need 23 | { 24 | Rectangle bounds1 = new Rectangle(bounds.X + 40, bounds.Y + 40, bounds.Width - 80, bounds.Height - 80); 25 | t += 1.0f; 26 | if (t > 50.1f) 27 | switch (State) 28 | { 29 | case DebugModState.HomePage: 30 | DrawHome(bounds1, instance, t, sb); 31 | break; 32 | case DebugModState.DebugPage: 33 | DrawDebug(bounds1, instance, t, sb); 34 | break; 35 | case DebugModState.Page1: 36 | DrawPage1(bounds1, instance, t, sb); 37 | break; 38 | case DebugModState.Page2: 39 | break; 40 | case DebugModState.Page3: 41 | break; 42 | case DebugModState.Page4: 43 | break; 44 | case DebugModState.Page5: 45 | break; 46 | case DebugModState.Blank: 47 | DrawPageRequirements(bounds, instance, sb); 48 | break; 49 | } 50 | } 51 | 52 | private void DrawDebug(Rectangle rect, Instance instance, float ticks, SpriteBatch sb) 53 | { 54 | OS os = instance.os; 55 | Color colour = new Color(45, 180, 231); 56 | const string doLabel = "doLabel"; 57 | const string doMeasuredSmallLabel = "doMeasuredSmallLabel"; 58 | const string doMeasuredTinyLabel = "doMeasuredTinyLabel"; 59 | const string doSmallLabel = "doSmallLabel"; 60 | TextItem.doLabel(new Vector2(500f, 400f), doLabel, null); 61 | TextItem.doMeasuredSmallLabel(new Vector2(500f, 500f), doMeasuredSmallLabel, null); 62 | TextItem.doMeasuredTinyLabel(new Vector2(500f, 600f), doMeasuredTinyLabel, null); 63 | TextItem.doSmallLabel(new Vector2(500f, 300f), doSmallLabel, null); 64 | if (Button.doButton(1, 800, 100, 200, 75, "Button", null)) 65 | State = DebugModState.HomePage; 66 | Button.doButton(2, 685, 843, 25, 25, "<-", null); 67 | Button.doButton(2, 733, 843, 25, 25, "->", null); 68 | } 69 | 70 | private void DrawPageRequirements(Rectangle rect, Instance instance, SpriteBatch sb) 71 | { 72 | const string title = "Debug Mod"; 73 | const string newVersion = "New version of Debug Mod is available"; 74 | string newVersionLine2 = "You are currently running: " + DebugMod.version + " New version: " + DebugMod.newVersion; 75 | TextItem.doLabel(new Vector2(280f, 55f), title, null); 76 | if (DebugMod.newVersion != DebugMod.version) 77 | { 78 | TextItem.doSmallLabel(new Vector2(500f, 55f), newVersion, themeColour); 79 | TextItem.doSmallLabel(new Vector2(500f, 70f), newVersionLine2, themeColour); 80 | } 81 | } 82 | 83 | private void DrawHome(Rectangle rect, Instance instance, float ticks, SpriteBatch sb) 84 | { 85 | string text = @"Welcome to the Debug Mod Daemon! This mod started off from an image, you can still find it by looking 86 | up All ports open in Hacknet Steam Artwork. Later, I gave the mod early to someone and decided to do 87 | more and more. After a while, I made the mod public. Ok, enough chatter about the history about this 88 | mod, let's explain how to use this daemon. 89 | 90 | The buttons with -> and <- are the forwards and backwards buttons. These will cycle from page to 91 | page, there are five pages (unknown yet). In one of these pages, there will be a list of commands 92 | you can use (not all are implemented yet or some aren't possible using this daemon). When you 93 | select a command, you will be prompted with some info or the command will execute. If some info is 94 | optional, you can skip it by typing null."; 95 | DrawPageRequirements(rect, instance, sb); 96 | Button.doButton(6, 673, 843, 25, 25, "<-", null); 97 | if (Button.doButton(49, 720, 843, 25, 25, "->", null)) 98 | State = DebugModState.Page1; 99 | TextItem.doSmallLabel(new Vector2(300f, 120f), text, null); 100 | } 101 | 102 | private void DrawPage1(Rectangle rect, Instance instance, float ticks, SpriteBatch sb) 103 | { 104 | OS os = instance.os; 105 | DrawPageRequirements(rect, instance, sb); 106 | if (Button.doButton(593, 673, 843, 25, 25, "<-", null)) 107 | State = DebugModState.HomePage; 108 | Button.doButton(49, 720, 843, 25, 25, "->", null); 109 | //Button.doButton(13, 500, 200, 100, 40, "Button", null); 110 | //Button.doButton(13, 650, 200, 150, 20, "Button", null); Selected 111 | //Button.doButton(13, 750, 400, 150, 60, "Button", null); 112 | if (Button.doButton(13, 300, 125, 150, 20, "Get Universal Admin", themeColour)) 113 | os.execute("getUniversalAdmin"); 114 | if (Button.doButton(4538, 300, 150, 150, 20, "Reveal All Nodes", themeColour)) 115 | os.execute("revealAll"); 116 | if (Button.doButton(132343, 300, 175, 150, 20, "Get More RAM", themeColour)) 117 | os.execute("getMoreRAM"); 118 | if (Button.doButton(1342321, 300, 200, 150, 20, "Delete Whitelist DLL", themeColour)) 119 | //GetInfoTextBox("deleteWhitelistDLL", "IP, ID or Name", rect, instance, sb); 120 | os.write("This is broken for the daemon, try again soon"); 121 | if (Button.doButton(12312, 300, 225, 150, 20, "Forkbomb Proof", themeColour)) 122 | os.execute("forkbombProof"); 123 | if (Button.doButton(1946325, 300, 250, 150, 20, "Debug", themeColour)) 124 | os.execute("debug"); 125 | if (Button.doButton(937264, 300, 275, 150, 20, "Theme Attack", themeColour)) 126 | os.execute("themeAttack"); 127 | if (Button.doButton(174242, 300, 300, 150, 20, "Striker Attack", themeColour)) 128 | os.execute("strikerAttack"); 129 | if (Button.doButton(1342312, 300, 325, 150, 20, "Warning Flash", themeColour)) 130 | os.execute("warningFlash"); 131 | } 132 | 133 | private void GetInfoTextBox(string command, string textBoxTitle, Rectangle rect, Instance instance, SpriteBatch sb) 134 | { 135 | OS os = instance.os; 136 | string textbox = TextBox.doTerminalTextField(18835235, 250, 250, 35, 30, 1, textBoxTitle, GuiData.smallfont); 137 | throw new NotImplementedException(); 138 | if (textbox == null) 139 | { 140 | os.write("IT DOESN'T WORK :("); 141 | } 142 | else 143 | { 144 | os.write("IT WORKS IT WORKS: " + textbox); 145 | } 146 | } 147 | 148 | public void InitFiles(Instance instance) // IDK what this does, maybe creates the files, in that case no 149 | { 150 | throw new NotImplementedException(); 151 | } 152 | 153 | public void LoadInit(Instance instance) // IDK what this does 154 | { 155 | instance.registerAsDefaultBootDaemon(); 156 | } 157 | 158 | public void LoadInstance(Instance instance, Dictionary objects) // IDK what this does 159 | { 160 | 161 | } 162 | 163 | public void OnCreate(Instance instance) // May or may not need this 164 | { 165 | 166 | } 167 | 168 | public void OnNavigatedTo(Instance instance) // Won't need this 169 | { 170 | State = DebugModState.HomePage; 171 | } 172 | 173 | public void OnUserAdded(Instance instance, string name, string pass, byte type) // Won't need this 174 | { 175 | 176 | } 177 | internal void NewCommand() 178 | { 179 | 180 | } 181 | private enum DebugModState { 182 | HomePage, 183 | Page1, 184 | Page2, 185 | Page3, 186 | Page4, 187 | Page5, 188 | DebugPage, 189 | Blank, 190 | } 191 | } 192 | } 193 | -------------------------------------------------------------------------------- /DebugMod/DebugMod.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Command = Pathfinder.Command; 3 | using Hacknet; 4 | using Pathfinder.Event; 5 | using System.Net; 6 | 7 | namespace DebugMod 8 | { 9 | public class DebugMod : Pathfinder.ModManager.IMod 10 | { 11 | public static string version = "2.0-beta2.5c"; 12 | public static string newVersion = GetVersion(); 13 | public string GetIdentifier() 14 | { 15 | return "Debug Mod"; 16 | } 17 | 18 | private static string GetVersion() 19 | { 20 | WebClient client = new WebClient(); 21 | return client.DownloadString("https://raw.githubusercontent.com/oxygencraft/DebugMod/master/VersionFile.txt"); 22 | } 23 | 24 | public string Identifier 25 | { 26 | get 27 | { 28 | return GetIdentifier(); 29 | } 30 | } 31 | 32 | public void Load() 33 | { 34 | Console.WriteLine("Loading Debug Mod"); 35 | } 36 | 37 | public void LoadContent() 38 | { 39 | bool DebugEnabled = true; 40 | Command.Handler.RegisterCommand("openAllPorts", Commands.OpenAllPorts, autoComplete:true); // Works 41 | Command.Handler.RegisterCommand("bypassProxy", Commands.BypassProxy, autoComplete:true); // Works 42 | Command.Handler.RegisterCommand("solveFirewall", Commands.SolveFirewall, autoComplete:true); // Works 43 | Command.Handler.RegisterCommand("getAdmin", Commands.GetAdmin, autoComplete:true); // Works 44 | Command.Handler.RegisterCommand("loseAdmin", Commands.LoseAdmin, autoComplete:true); // Works 45 | 46 | 47 | if (DebugEnabled) 48 | { 49 | Command.Handler.RegisterCommand("startDeathSeq", Commands.DeathSeq, autoComplete:false); // Works 50 | Command.Handler.RegisterCommand("cancelDeathSeq", Commands.CancelDeathSeq, autoComplete:false); // Works 51 | Command.Handler.RegisterCommand("setHomeNodeServer", Commands.SetHomeNodeServer, autoComplete:false); // Works 52 | Command.Handler.RegisterCommand("setHomeAssetServer", Commands.SetHomeAssetServer, autoComplete:false); // Works 53 | Command.Handler.RegisterCommand("debug", Commands.Debug, autoComplete:false); // Works 54 | Command.Handler.RegisterCommand("revealAll", Commands.RevealAll, autoComplete:false); // Works 55 | Command.Handler.RegisterCommand("addIRCMessage", Commands.AddIRCMessage, autoComplete:false); // Works 56 | Command.Handler.RegisterCommand("strikerAttack", Commands.StrikerAttack, autoComplete:false); // Works 57 | Command.Handler.RegisterCommand("themeAttack", Commands.ThemeAttack, autoComplete:false); // Works 58 | Command.Handler.RegisterCommand("callThePoliceSoTheyCanTraceYou", Commands.CallThePoliceSoTheyCanTraceYou, autoComplete:false); // Works 59 | Command.Handler.RegisterCommand("reportYourselfToFBI", Commands.ReportYourselfToFBI, autoComplete:false); // Works 60 | Command.Handler.RegisterCommand("traceYourselfIn", Commands.TraceYourselfIn, autoComplete:false); // Works 61 | Command.Handler.RegisterCommand("warningFlash", Commands.WarningFlash, autoComplete:false); // Works 62 | Command.Handler.RegisterCommand("stopTrace", Commands.StopTrace, autoComplete:false); // Works 63 | Command.Handler.RegisterCommand("hideDisplay", Commands.HideDisplay, autoComplete:false); // Works 64 | Command.Handler.RegisterCommand("hideNetMap", Commands.HideNetMap, autoComplete:false); // Works 65 | Command.Handler.RegisterCommand("hideTerminal", Commands.HideTerminal, autoComplete:false); // Works 66 | Command.Handler.RegisterCommand("hideRAM", Commands.HideRAM, autoComplete:false); // Works 67 | Command.Handler.RegisterCommand("showDisplay", Commands.ShowDisplay, autoComplete:false); // Works 68 | Command.Handler.RegisterCommand("showNetMap", Commands.ShowNetMap, autoComplete:false); // Works 69 | Command.Handler.RegisterCommand("showTerminal", Commands.ShowTerminal, autoComplete:false); // Unknown 70 | Command.Handler.RegisterCommand("showRAM", Commands.ShowRAM, autoComplete:false); // Works 71 | Command.Handler.RegisterCommand("getUniversalAdmin", Commands.GetUniversalAdmin, autoComplete:false); // Works 72 | Command.Handler.RegisterCommand("changeUserDetails", Commands.ChangeUserDetails, autoComplete:false); // Partial 73 | //Command.Handler.RegisterCommand("executeHack", Commands.ExecuteHack, autoComplete:false); 74 | Command.Handler.RegisterCommand("generateExampleAcademicRecord", Commands.GenerateExampleAcadmicRecord, autoComplete:false); // Works 75 | Command.Handler.RegisterCommand("generateExampleMedicalRecord", Commands.GenerateExampleMedicalRecord, autoComplete:false); // Fixed 76 | Command.Handler.RegisterCommand("changeMusic", Commands.ChangeMusic, autoComplete:false); // Fixed 77 | Command.Handler.RegisterCommand("crashComputer", Commands.CrashComputer, autoComplete:false); // Works 78 | Command.Handler.RegisterCommand("addProxy", Commands.AddProxy, autoComplete:false); // Works 79 | Command.Handler.RegisterCommand("addFirewall", Commands.AddFirewall, autoComplete:false); // Works 80 | Command.Handler.RegisterCommand("addUser", Commands.AddUser, autoComplete:false); // Works 81 | Command.Handler.RegisterCommand("openPort", Commands.OpenPort, autoComplete:false); 82 | Command.Handler.RegisterCommand("closeAllPorts", Commands.CloseAllPorts, autoComplete:false); // Works 83 | Command.Handler.RegisterCommand("closePort", Commands.ClosePort, autoComplete:false); // Fixed 84 | Command.Handler.RegisterCommand("removeProxy", Commands.RemoveProxy, autoComplete:false); // Works 85 | Command.Handler.RegisterCommand("playSFX", Commands.PlaySFX, autoComplete:false); // Works 86 | Command.Handler.RegisterCommand("deleteWhitelistDLL", Commands.DeleteWhitelistDLL, autoComplete:false); // Works 87 | Command.Handler.RegisterCommand("addComputer", Commands.AddComputer, autoComplete:false); // Works 88 | Command.Handler.RegisterCommand("getMoreRAM", Commands.GetMoreRAM, autoComplete:false); // Works 89 | Command.Handler.RegisterCommand("setFaction", Commands.SetFaction, autoComplete:false); // Works 90 | Command.Handler.RegisterCommand("tracedBehind250Proxies", Commands.TracedBehind250Proxies, autoComplete:false); // Works 91 | Command.Handler.RegisterCommand("oxygencraftStorageFacilityCache", Commands.OxygencraftStorageFaciltyCache, autoComplete:false); // Don't tell anyone about this command, keep it a secret: Note: Bugged 92 | Command.Handler.RegisterCommand("disableEmailIcon", Commands.DisableEmailIcon, autoComplete:false); // Works 93 | Command.Handler.RegisterCommand("enableEmailIcon", Commands.EnableEmailIcon, autoComplete:false); // Works 94 | Command.Handler.RegisterCommand("nodeRestore", Commands.NodeRestore, autoComplete:false); // Unknown 95 | Command.Handler.RegisterCommand("addWhiteCircle", Commands.AddRestoreCircle, autoComplete:false); // Works 96 | Command.Handler.RegisterCommand("whitelistBypass", Commands.WhitelistBypass, autoComplete:false); // Works 97 | Command.Handler.RegisterCommand("setTheme", Commands.SetTheme, autoComplete:false); // Works 98 | Command.Handler.RegisterCommand("setCustomTheme", Commands.SetCustomTheme, autoComplete:false); // Works 99 | Command.Handler.RegisterCommand("linkComputer", Commands.LinkComputer, autoComplete:false); // Works 100 | Command.Handler.RegisterCommand("unlinkComputer", Commands.UnlinkComputer, autoComplete:false); // Works 101 | Command.Handler.RegisterCommand("loseAllNodes", Commands.LoseAllNodes, autoComplete:false); // Works 102 | Command.Handler.RegisterCommand("loseNode", Commands.LoseNode, autoComplete:false); // Works 103 | Command.Handler.RegisterCommand("revealNode", Commands.RevealNode, autoComplete:false); // Works 104 | Command.Handler.RegisterCommand("removeComputer", Commands.RemoveComputer, autoComplete:false); // Works 105 | Command.Handler.RegisterCommand("resetIP", Commands.ResetIP, autoComplete:false); // Works 106 | Command.Handler.RegisterCommand("resetPlayerCompIP", Commands.ResetPlayerCompIP, autoComplete:false); // Works 107 | Command.Handler.RegisterCommand("setIP", Commands.SetIP, autoComplete:false); // Works 108 | Command.Handler.RegisterCommand("showFlags", Commands.ShowFlags, autoComplete: false); // Works 109 | Command.Handler.RegisterCommand("addFlag", Commands.AddFlag, autoComplete: false); // Works 110 | Command.Handler.RegisterCommand("removeFlag", Commands.RemoveFlag, autoComplete: false); // Works 111 | Command.Handler.RegisterCommand("authenticateToIRC", Commands.AuthenticateToIRC, autoComplete: false); // Works 112 | Command.Handler.RegisterCommand("addAgentToIRC", Commands.AddAgentToIRC, autoComplete: false); // Works 113 | Command.Handler.RegisterCommand("setCompPorts", Commands.SetCompPorts, autoComplete: false); // Works 114 | //Command.Handler.RegisterCommand("removePortFromComp", Commands.RemovePortFromComp, autoComplete: false); Replaced with setCompPorts 115 | Command.Handler.RegisterCommand("addSongChangerDaemon", Commands.AddSongChangerDaemon, autoComplete: false); // Works 116 | Command.Handler.RegisterCommand("addRicerConnectDaemon", Commands.AddRicerConnectDaemon, autoComplete: false); // Works 117 | Command.Handler.RegisterCommand("addDLCCreditsDaemon", Commands.AddDLCCreditsDaemon, autoComplete: false); // Works 118 | //Command.Handler.RegisterCommand("addIRCDaemon", Commands.AddIRCDaemon, autoComplete: false); 119 | Command.Handler.RegisterCommand("addISPDaemon", Commands.AddISPDaemon, autoComplete: false); // Works 120 | Command.Handler.RegisterCommand("quit", Commands.Quit, autoComplete: false); // Works 121 | Command.Handler.RegisterCommand("deleteLogs", Commands.DeleteLogs, autoComplete: false); // Works 122 | Command.Handler.RegisterCommand("forkbombProof", Commands.ForkbombProof, autoComplete: false); // Works 123 | 124 | Command.Handler.RegisterCommand("changeCompIcon", Commands.ChangeCompIcon, autoComplete: false); 125 | Command.Handler.RegisterCommand("removeSongChangerDaemon", Commands.RemoveSongChangerDaemon, autoComplete: false); 126 | Command.Handler.RegisterCommand("removeRicerConnectDaemon", Commands.RemoveRicerConnectDaemon, autoComplete: false); 127 | Command.Handler.RegisterCommand("removeDLCCreditsDaemon", Commands.RemoveDLCCreditsDaemon, autoComplete: false); 128 | //Command.Handler.RegisterCommand("removeIRCDaemon", Commands.RemoveIRCDaemon, autoComplete: false); 129 | Command.Handler.RegisterCommand("removeISPDaemon", Commands.RemoveISPDaemon, autoComplete: false); 130 | Command.Handler.RegisterCommand("forkbombVirus", Commands.ForkbombVirus, autoComplete: false); 131 | Command.Handler.RegisterCommand("installInviolabilty", Commands.InstallInviolabilty, autoComplete: false); 132 | Command.Handler.RegisterCommand("removeAllDaemons", Commands.RemoveAllDaemons, autoComplete: false); 133 | Command.Handler.RegisterCommand("showIPNamesAndID", Commands.ShowIPNamesAndID, autoComplete: false); 134 | Command.Handler.RegisterCommand("changeAdmin", Commands.ChangeAdmin, autoComplete: false); 135 | Command.Handler.RegisterCommand("viewAdmin", Commands.ViewAdmin, autoComplete: false); 136 | Command.Handler.RegisterCommand("tellPeopleYouAreGonnaHackThemOnline", Commands.TellPeopleYouAreGonnaHackThemOnline, autoComplete: false); 137 | Command.Handler.RegisterCommand("myFatherIsCCC", Commands.MyFatherIsCCC, autoComplete: false); 138 | Command.Handler.RegisterCommand("cantTouchThis", Commands.CantTouchThis, autoComplete: false); 139 | Command.Handler.RegisterCommand("replayPlaneMission", Commands.ReplayPlaneMission, autoComplete: false); 140 | Command.Handler.RegisterCommand("replayPlaneMissionSecondary", Commands.ReplayPlaneMissionSecondary, autoComplete: false); 141 | Command.Handler.RegisterCommand("viewFaction", Commands.ViewFaction, autoComplete: false); 142 | Command.Handler.RegisterCommand("viewPlayerVal", Commands.ViewPlayerVal, autoComplete: false); 143 | Command.Handler.RegisterCommand("kaguyaTrialEffect", Commands.KaguyaTrialEffect, autoComplete: false); 144 | Command.Handler.RegisterCommand("kaguyaTrialEffect2", Commands.KaguyaTrialEffect2, autoComplete: false); 145 | Command.Handler.RegisterCommand("kaguyaTrialEffect3", Commands.KaguyaTrialEffect3, autoComplete: false); 146 | Command.Handler.RegisterCommand("summonDebugModDaemonComp", Commands.SummonDebugModDaemonComp, autoComplete: false); 147 | Pathfinder.Daemon.IInterface daemon = new DebugDaemon(); 148 | Pathfinder.Daemon.Handler.RegisterDaemon("DebugModDaemon", daemon); 149 | /*if (version != newVersion) 150 | { 151 | EventManager.RegisterListener(NewUpdateAlert); 152 | } */ 153 | } 154 | } 155 | 156 | public void NewUpdateAlert(OSLoadSaveFileEvent obj) 157 | { 158 | OS os = obj.OS; 159 | double time = 6; 160 | Action action = (Action)(() => 161 | { 162 | os.write("New update of Debug Mod is available"); 163 | os.write("You are currently running: " + version + "New version: " + newVersion); 164 | }); 165 | os.delayer.Post(ActionDelayer.Wait(time), action); 166 | obj.IsCancelled = true; 167 | } 168 | 169 | public void Unload() 170 | { 171 | Console.WriteLine("Unloading Debug Mod"); 172 | } 173 | 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /DebugMod/DebugMod.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {8B86A3C8-3234-405D-BA3C-0E58DA65D8AF} 8 | Library 9 | Properties 10 | DebugMod 11 | DebugMod 12 | v4.5 13 | 512 14 | 15 | 16 | 17 | true 18 | full 19 | false 20 | ..\..\..\..\..\..\..\..\Program Files %28x86%29\Steam\steamapps\common\Hacknet\Mods\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | x86 25 | false 26 | 27 | 28 | 29 | 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | x86 36 | false 37 | 38 | 39 | false 40 | 41 | 42 | 43 | ..\..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Hacknet\FNA.dll 44 | 45 | 46 | ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Hacknet\HacknetPathfinder.exe 47 | 48 | 49 | ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Hacknet\Pathfinder.dll 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 74 | -------------------------------------------------------------------------------- /DebugMod/LongVariables.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | namespace DebugMod 7 | { 8 | class LongVariables 9 | { 10 | public static string IRCLog(Hacknet.OS os) 11 | { 12 | string IRCLogData = @"#11:34//D3f4ult//Man, the spindown time on TorrentStreamInjector is so damn annoying. 13 | #11:35//D3f4ult//The port is saturated just fine after a few seconds, but it hangs around forever. Makes me want to decompile it, but I bet it|##SIQ##|s a mess in there. 14 | #11:35//Coel//That|##SIQ##|s not really a problem though, is it? 15 | #11:35//D3f4ult//??? 16 | #11:35//D3f4ult//It kinda slows me down, and is annoying, how is that not a problem? 17 | #11:35//Coel//ps -|##RAB##| kill the process when it|##SIQ##|s done what you want, what|##SIQ##|s the problem? 18 | #11:35//D3f4ult//... 19 | #11:35//D3f4ult//I actually never even thought of that. Don|##SIQ##|t mind me. 20 | #11:34//Coel//Haha 21 | #11:34//Channel//!ANNOUNCEMENT! 22 | #11:34//Channel//User |##QOT##|" + os.defaultUser.name + @"|##QOT##| added to whitelist. 23 | #11:34//Kaguya//@channel, I|##SIQ##|d like to welcome " + os.defaultUser.name + @"to the fold. 24 | #11:35//Kaguya//@" + os.defaultUser.name + @"- congratulations on beating the trials. 25 | The others are out on assignments right now - there should be time for you to catch up if you want in on this round. 26 | #11:35//Kaguya//You|##SIQ##|re on the team now, so the final contract belongs to you. 27 | #11:35//Kaguya//Contracts are on a first come first served system here - I mostly take care of admin, recon and all that - making sure everyone has stuff to do that builds towards our goals, and everyone has all the tools and info they need to do their work. 28 | #11:35//Kaguya//@Coel, @D3f4ult - introduce yourselves when you|##SIQ##|ve got a sec. 29 | #11:35//Kaguya//In the meantime @" + os.defaultUser.name + @", check out the server and take a look at that last job. 30 | #11:35//Kaguya//Welcome to the team. 31 | #11:35//D3f4ult//Hey @" + os.defaultUser.name + @", good to have you with us. 32 | #11:35//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|The Ricer|##QOT##| 33 | #11:36//Coel//Welcome to the team @" + os.defaultUser.name + @"! 34 | #11:39//D3f4ult//Decryption setup complete! 35 | #11:39//D3f4ult//Unfortunately it|##SIQ##|s not that portable yet - I|##SIQ##|ll get to work building a new shareable .exe for it 36 | #11:39//D3f4ult//But for now just run stuff past me and I|##SIQ##|ll take a look. 37 | #11:38//Coel//I wonder how long it|##SIQ##|ll take until you|##SIQ##|ve spent more time decrypting stuff for us than it|##SIQ##|d have taken you to set this up properly. 38 | #11:38//D3f4ult//Ok, yes I am ashamed of myself, but no I|##SIQ##|m not answering that. It works, it|##SIQ##|ll be better when I|##SIQ##|ve got time. I|##SIQ##|m sure we can all live with that for now -_- 39 | #11:38//Coel//We have to, don|##SIQ##|t we? 40 | #11:38//D3f4ult//-_- 41 | #11:39//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|The Ricer|##QOT##| 42 | #11:39//D3f4ult//Alright, I|##SIQ##|m looking at this SSL stuff, getting it decrypted and packed into something convenient. 43 | #11:39//D3f4ult//It actually looks like most of this is already done for me here - i|##SIQ##|ve seen this trojan style before.. 44 | #11:39//D3f4ult//It|##SIQ##|s a bit untested, but this build is usable if you want to rush into it. I|##SIQ##|ve uploaded it to the drop server (/bin). 45 | #11:39//D3f4ult//!ATTACHMENT:link#%#Bibliotheque DropServer#%#69.58.186.118 46 | #11:39//D3f4ult//!ATTACHMENT:account#%#Bibliotheque DropServer#%#69.58.186.118#%#admin#%#ka2gs69 47 | #11:39//D3f4ult//Ok, so basically this program tunnels through an already opened port to hijack the SSL one. 48 | #11:39//D3f4ult//So you|##SIQ##|ll need to provide it not only the SSL port number, but also a flag to say which port you want to tunnel through, and *THAT* port|##SIQ##|s number. 49 | #11:39//D3f4ult//Current flags are -s, -w and -f, for ssh, http and ftp respectively. 50 | #11:39//D3f4ult//Use it like this 51 | #11:40//D3f4ult//SSLTrojan |##LSB##|SSL NUMBER|##RSB##| |##LSB##|FLAG|##RSB##| |##LSB##|TUNNEL PORT NUMBER|##RSB##| 52 | #11:40//D3f4ult//Summary guide: 53 | #11:40//D3f4ult//!ATTACHMENT:note#%#SSL Trojan Usage#%#SSLTrojan |##LSB##|1|##RSB##| |##LSB##|2|##RSB##| |##LSB##|3|##RSB##| 54 | 1 = Port number of SSL Port 55 | 2 = 56 | |##QOT##|-s|##QOT##| for SSH Tunnel 57 | |##QOT##|-f|##QOT##| for FTP Tunnel 58 | |##QOT##|-w|##QOT##| for HTTP Tunnel 59 | 3 = Port number of the other service you are tunneling through. 60 | I.E: |##QOT##|SSLTrojan 443 -w 80|##QOT##| 61 | #11:40//D3f4ult//Remember - SSLTrojan goes *THROUGH* another port, so that port has to be open first. 62 | #11:40//D3f4ult//@channel - New toys! Read above. 63 | #11:40//Kaguya//Great rundown @D3f4ult - thanks. 64 | #11:40//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|DDOSer on some critical servers|##QOT##| 65 | #11:45//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|DDOSer on some critical servers|##QOT##| 66 | #11:45//Kaguya//@channel ---- UPDATE --- 67 | #11:45//Kaguya//Excellent work on your recent tasks - It|##SIQ##|s time for a team project. 68 | #11:45//Kaguya//I|##SIQ##|m going to have all of you looking at the same network. It|##SIQ##|s not a race or anything, but this is a complex job that I think will benefit from the group|##SIQ##|s collective attention. 69 | #11:46//Kaguya//Missions are up, good luck all! 70 | #11:46//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|The Hermetic Alchemists - " + os.defaultUser.name + @"|##QOT##| 71 | #11:46//Coel//Looks fun 72 | #11:46//D3f4ult//I|##SIQ##|m loving their tree logo thing 73 | #11:46//Coel//Yeah, for such a super secret organization, they sure put a lot of time into making their servers look fancy 74 | #11:51//D3f4ult//@channel I found an encrypted file on |##QOT##|Solve|##QOT##| that you two might be interested in. 75 | #11:51//D3f4ult//Decrypted, it seems to say that the password to |##QOT##|Rebis|##QOT##| is |##QOT##|clarity|##QOT##|. Doesn|##SIQ##|t seem to be working for me for the admin account though? 76 | #11:51//Coel//Thanks for the heads up @D3f4ult 77 | #11:52//Coel//Are you all set for an eOS scanner btw? 78 | #11:52//D3f4ult//Yeah, I|##SIQ##|m all good.. Why? 79 | #11:52//Coel//You|##SIQ##|ll see :P 80 | #11:57//Coel//@channel - can anyone remind me what the default eOS admin pass is? 81 | #11:57//Kaguya//It|##SIQ##|s |##QOT##|alpine|##QOT##| by default. 82 | #11:57//Coel//Thanks 83 | #11:59//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|The Hermetic Alchemists - " + os.defaultUser.name + @"|##QOT##| 84 | #12:00//Coel//! 85 | #12:00//Coel//@" + os.defaultUser.name + @" Nice, didn|##SIQ##|t think you|##SIQ##|d beat me to it. 86 | #12:00//D3f4ult//Honestly, I|##SIQ##|m just going to go right ahead and claim full credit with that clutch decryption effort 87 | #12:00//Coel//@D3f4ult zero doubts in my mind that that|##SIQ##|s how everyone sees it 88 | #12:00//Kaguya//Solid work by everyone, great job all 89 | #12:00//Coel//Not trying to beat us to the finish line though @D3f4ult ? 90 | #12:00//D3f4ult//Nah, that|##SIQ##|d go against my motto 91 | #12:00//D3f4ult//|##QOT##|Aim low, and miss|##QOT##| 92 | #12:00//Coel//hahaha 93 | #12:00//D3f4ult//Besides, *someone* left some logs on Coagula, and apparently *someone else* had to make sure it got cleaned up :P 94 | #12:00//Coel//._. 95 | #12:00//Coel//I am a raft floating on an ocean of pure shame 96 | #12:00//D3f4ult//Fast raft tho :P 97 | #12:01//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|Memory Forensics (2/3)|##QOT##| 98 | #12:03//D3f4ult//Whoa 99 | #12:03//D3f4ult//@channel , have you tried SignalScramble out yet? From the Alchemists servers? 100 | #12:03//D3f4ult//This thing is crazy 101 | #12:03//Coel//Yeah. It|##SIQ##|s very impressive. Where|##SIQ##|d you hear about this @Kaguya ? 102 | #12:03//Kaguya//Trade secret. 103 | #12:03//Kaguya//Glad you like though. I suspect it|##SIQ##|ll be very useful for some future tasks. 104 | #12:04//D3f4ult//niiiiiice 105 | #12:11//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|Memory Forensics (2/3)|##QOT##| 106 | #12:12//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|Striker|##SIQ##|s Archives|##QOT##| 107 | #12:15//D3f4ult//Job complete @Coel - sorry you had to deal with that. I|##SIQ##|ve done my best to take care of it cleanly. 108 | #12:15//Coel//Thanks. It|##SIQ##|s something I would have liked to be able to take care of myself but... yeah. 109 | #12:15//D3f4ult//Totally understand, don|##SIQ##|t worry about it. Your job go well? 110 | #12:15//Kaguya//Thanks for dealing with this one @D3f4ult 111 | #12:15//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|Striker|##SIQ##|s Archives|##QOT##| 112 | #12:15//D3f4ult//You got it boss. 113 | #12:15//Coel//Yeah - just going over all the Hermetic Alchemist servers again and making sure we|##SIQ##|re all cleaned up. Should be as safe as we|##SIQ##|re going to be from that now. 114 | #12:15//Coel//Someone left some disconnect logs all over the place, but don|##SIQ##|t worry, I didn|##SIQ##|t go snooping. 115 | #12:15//D3f4ult//Ugh, yeah. @Kaguya - any chance you could find us something to deal with DC log stuff? 116 | #12:15//Coel//You mean, other than forkbombing? 117 | #12:16//D3f4ult//It|##SIQ##|s so crude :|##BS##| 118 | #12:16//Coel//mmm, wont argue with that. 119 | #12:16//Kaguya//I|##SIQ##|ll see what I can do. No promises on that one though. 120 | #12:16//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|It Follows|##QOT##| 121 | #12:21//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|It Follows|##QOT##| 122 | #12:22//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|Neopals - " + os.defaultUser.name + @"|##QOT##| 123 | #12:23//D3f4ult//You and me for this one " + os.defaultUser.name + @"! 124 | #12:23//D3f4ult//Race you to it :P 125 | #12:23//Coel//Your job looks way more fun than mine ._. 126 | #12:23//D3f4ult//Yeah, good luck on your mysterious secret business too Coel -_- 127 | #12:24//D3f4ult//Ugh, everytime I tab-complete for my FTP breaker it completes to my old one 128 | #12:24//D3f4ult//So frustrating. 129 | #12:24//Coel//You know you could just... 130 | #12:25//Coel//delete the old one... 131 | #12:25//Coel//right? 132 | #12:25//Coel//rename it with mv even? 133 | #12:25//D3f4ult//uh 134 | #12:25//D3f4ult//remember the thing earlier? With the raft? 135 | #12:25//D3f4ult//Something about ocean of shame? 136 | #12:25//Coel//Yeah? 137 | #12:25//D3f4ult//same 138 | #12:25//Coel//hahaha 139 | #12:26//Kaguya//Some new information for once you|##SIQ##|re into the mainframe @channel 140 | #12:26//Kaguya//Looks like their database is a little less fancy than I thought - they store all user records in a one-per-file structure, which makes our life a lot easier. 141 | #12:26//Kaguya//Once you have the right user file, you should be able to use the standard replace command to swap out the values for what we want. 142 | #12:48//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|Neopals - " + os.defaultUser.name + @"|##QOT##| 143 | #12:48//D3f4ult//Oh damn - nice @" + os.defaultUser.name + @" . I was messing about on the Auth Server for too long. 144 | #12:48//D3f4ult//@Coel - how|##SIQ##|s your thing going? Still super secret? 145 | #12:48//Coel//Yep. Almost done though - triple checking for logs and such this time. Not really the sort of thing where I can afford to make mistakes. 146 | #12:48//D3f4ult//Let us know if you need a hand... Kinda feeling in the dark here. 147 | #12:48//Coel//Will do. 148 | #12:49//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|Expo Grave|##QOT##| 149 | #12:57//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|Expo Grave|##QOT##| 150 | #12:57//Kaguya//@channel Excellent work all. Everyone|##SIQ##|s marked their tasks as complete, so lets move on. 151 | #12:58//Kaguya//This next network is a big one. You|##SIQ##|re all on this one together. Be thorough, be patient, look carefully, and take notes. 152 | #12:58//Kaguya//Remember - you|##SIQ##|re here because you|##SIQ##|re the best. 153 | #12:58//Kaguya//Good luck everyone. 154 | #12:58//Coel//Uhm, any particular reason that this is our next target @Kaguya ? 155 | #12:58//Kaguya//DM|##SIQ##|s Coel - this regards tracking Nisei MK III. 156 | #12:58//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|Take Flight - " + os.defaultUser.name + @"|##QOT##| 157 | #12:58//Kaguya//@channel Oh, and before I forget - I|##SIQ##|ve added a new program I picked up for you all to the drop server. 158 | #12:59//D3f4ult//Awesome! I|##SIQ##|ve been looking for a new organizer like this. Thanks @Kaguya :D 159 | #13:01//D3f4ult//Ugh, @channel everyone else running into the brick wall of this whitelist server? 160 | #13:01//Coel//Yeah - I think I|##SIQ##|ve got an idea, though. If you can bring it down for a minute or two I|##SIQ##|ll take care of it. 161 | #13:01//D3f4ult//Huh?. 162 | #13:01//D3f4ult//I mean, sure, I can probably sort something out, but, no idea what you|##SIQ##|re thinking :|##BS##| 163 | #13:02//Coel//Trade secret ;). You ready? Countdown me 164 | #13:02//D3f4ult//Sure, hold on... 165 | #13:02//D3f4ult//5 166 | #13:02//D3f4ult//4 167 | #13:02//D3f4ult//3 168 | #13:02//D3f4ult//2 169 | #13:02//D3f4ult//1 170 | #13:02//D3f4ult//Done, gogogogo 171 | #13:02//Coel//Almost got it... 172 | #13:02//Coel//Annnnd done! We|##SIQ##|re good to go. Check it for me D3f4ult ? 173 | #13:02//D3f4ult//Holy shit, how? 174 | #13:03//Coel//;) 175 | #13:03//Coel//Oh yeah, @" + os.defaultUser.name + @" - the whitelist server is down! 176 | #13:03//Coel//You should be able to connect to the Bookings Mainframe now 177 | #13:13//Channel//CONTRACT COMPLETE: @" + os.defaultUser.name + @" completed contract |##QOT##|Take Flight - " + os.defaultUser.name + @"|##QOT##| 178 | #13:13//Channel//Additional details provided: 179 | #13:13//Channel//|##LSB##|NU2N3|##RSB##| 180 | #13:13//Coel//Nice! I|##SIQ##|ll test it now. 181 | #13:13//Kaguya//Thanks Coel. My authenticator script approved it though, good from my end. 182 | #13:13//Kaguya//There are a few time sensitive things to get done here. 183 | #13:13//Kaguya//@Coel - the information you needed has come in, and it looks good. One last strike on your end should do it. You|##SIQ##|re up for that. 184 | #13:14//Coel//Roger that. Also, the account looks good too " + os.defaultUser.name + @", nice work. 185 | #13:14//Kaguya//@oxygencraft - You got to the pacific server first, so I|##SIQ##|m going to have you following that up. You|##SIQ##|re installing our backup plan. 186 | #13:14//Kaguya//@D3f4ult - You|##SIQ##|re with me sorting out some connection protocols - should be your specialty. 187 | #13:14//Kaguya//Good luck everyone. 188 | #13:14//Channel//CONTRACT CLAIMED: @" + os.defaultUser.name + @" claimed contract |##QOT##|" + os.defaultUser.name + @" - Take_Flight Cont.|##QOT##| 189 | #13:14//D3f4ult//I|##SIQ##|m on it. Go get em @Coel , @" + os.defaultUser.name + @""; 190 | return IRCLogData; 191 | } 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /DebugMod/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Les informations générales relatives à un assembly dépendent de 6 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations 7 | // associées à un assembly. 8 | [assembly: AssemblyTitle("DebugMod")] 9 | [assembly: AssemblyDescription("DebugMod")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("oxygencraft")] 12 | [assembly: AssemblyProduct("DebugMod")] 13 | [assembly: AssemblyCopyright("")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 18 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 19 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM 23 | [assembly: Guid("8b86a3c8-3234-405d-ba3c-0e58da65d8af")] 24 | 25 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes : 26 | // 27 | // Version principale 28 | // Version secondaire 29 | // Numéro de build 30 | // Révision 31 | // 32 | // Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut 33 | // en utilisant '*', comme indiqué ci-dessous : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("2.0.0.0")] 36 | [assembly: AssemblyFileVersion("2.0.0.0")] 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2019 oxygencraft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PathfinderPatcher.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/PathfinderPatcher.exe -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # This mod has been discontinued 2 | 3 | The reason why I did this is I ran out of ideas and I'm working on an MP mod now (as of June 2018), you can check it out [here](https://github.com/Arkhist/Hack-On-Net) 4 | 5 | Only occasional bug fixes and small improvements will be made. 6 | 7 | # DebugMod 8 | 9 | This is a mod for Hacknet that allows the user to use various debug commands 10 | 11 | To report bugs or feature requests, open an issue in the issues section 12 | 13 | Requires Hacknet Pathfinder: https://github.com/Arkhist/Hacknet-Pathfinder 14 | 15 | If you need an updated command lists, sorry but I'm not going to provide it because I'm too lazy. 16 | Look at the source if you need the new commands list (oh, you'll also find a secret command but it's not that impressive) 17 | 18 | # How to report issues: 19 | 20 | 1. Search before opening, someone else may of opened it. 21 | 2. Make sure that your game files aren't broken before reporting the issue. 22 | 3. Tell me how to replicate the bug. 23 | 24 | # Empty exception and event listener call failed: 25 | 26 | ~~There isn't much I can do about it, it's a pathfinder bug not calling the command method.~~ 27 | 28 | I don't know what's the issue but I'm not going to fix it as the mod is discontinued 29 | 30 | # Warning: 31 | 32 | Use this at your own risk, this may corrupt saves. 33 | 34 | # Beta Commands (Download the beta build from releases): 35 | 36 | NameORIDORIP or similar means you can put the name of the computer, id of the computer or the ip of the computer 37 | 38 | showFlags - Shows all the flags for save 39 | 40 | addFlag - Adds a flag to the save: Usage: addFlag (FlagToAdd) 41 | 42 | removeFlag - Removes a flag from the save: Usage: removeFlag (FlagToRemove) 43 | 44 | authenticateToIRC - Shows IRC Authentication screen when you connect to IRC 45 | 46 | addAgentToIRC - Adds an agent to IRC: Usage: addAgentToIRC (NameORIDORIP) (AgentName) (AgentPassword) (AgentColourRed) (AgentColourBlue) (AgentColourGreen) 47 | 48 | setCompPorts - Sets the ports of the computer to what you input: Usage: setCompPorts (NameORIDORIP) (Port eg. 21,25,22,80 (This will remove all ports then add 21,25,22,80)) 49 | 50 | addSongChangerDaemon - Adds the song changer like the credits server had: Usage: addSongChanger (NameORIDORIP) 51 | 52 | addRicerConnectDaemon - Adds the connect screen like ricer had: Usage: addRicerConnect (NameORIDORIP) 53 | 54 | addDLCCreditsDaemon - Adds the dlc credits screen like Kaguya_Projects had: Usage: addDLCCredits (NameORIDIORIP) 55 | 56 | addIRCDaemon - A bit buggy currently, this one will come in the stable release of 2.0 57 | 58 | addISPDaemon - Adds the ISP Management like ISP Management Server had: Usage: addISPDaemon (NameORIPORID) 59 | 60 | quit - Exits the game 61 | 62 | deleteLogs - Auto deletes logs from the computer in argument 1: Usage: deleteLogs (NameORIPORID) 63 | 64 | forkbombProof - Makes you forkbomb proof by setting your ram 1 above the forkbomb (1000000000) ram target 65 | 66 | showIPNamesAndID - Shows the IP, Name and the ID of argument 1: Usage: showIPNamesAndID (IPORIDORName) 67 | 68 | changeAdmin - Changes the admin of the computer in argument 1: Usage: changeAdmin (IPORIDORName) (Admin) 69 | 70 | Valid Options: basic,fastbasic,fastprogress,alwaysactive,none 71 | 72 | viewAdmin - Outputs to the console of the admin of argument 1: Usage: viewAdmin (IPORIDORName) 73 | 74 | # New Commands: 75 | 76 | setTheme - Sets the theme to argument one: Usage: setTheme [THEME] 77 | 78 | Valid Options: TerminalOnly,Blue,Teal,Yellow,Green,White,Purple,Mint,Colamaeleon,GreenCompact,Riptide,Riptide2 79 | 80 | setCustomTheme - Sets the theme to a custom one, root path is Content/: Usage: setCustomTheme: (PathToTheme) 81 | 82 | linkComputer - Links SourceIP to RemoteIP like when you do scan: Usage: linkComputer (SourceIP) (RemoteIP) 83 | 84 | unlinkComputer - Unlinks SourceIP to RemoteIP: Usage: unlinkComputer (SourceIP) (RemoteIP) 85 | 86 | loseAllNodes - Makes you lose all nodes except for your player computer 87 | 88 | loseNode - Loses the node in argument 1: Usage: loseNode (IPORIDORName) 89 | 90 | revealNode - Reveals the node in argument 1: Usage: revealNode (IPORIDORName) 91 | 92 | removeComputer - Removes computer in argument 1: Usage: removeComputer (IPORIDORName) 93 | 94 | resetIP - Resets the ip of the computer in argument 1 like when you do it in ISP server (This does not complete the ETAS, see resetPlayerCompIP): Usage: resetIP (IPORIDORName) 95 | 96 | resetPlayerCompIP - Resets the player computer IP and completes ETAS 97 | 98 | setIP - Sets the target computer to the IP in argument 2: Usage: setIP (IPORIDORName) (NewIP) 99 | 100 | # Command List: 101 | 102 | openAllPorts - Opens all ports on connected computer 103 | 104 | bypassProxy - Disable proxy on connected computer 105 | 106 | solveFirewall - Solves firewall on connected computer 107 | 108 | getAdmin- Gives admin on connected computer 109 | 110 | loseAdmin - Lose admin on connected computer 111 | 112 | startDeathSeq - Starts ETAS 113 | 114 | cancelDeathSeq - Stops ETAS 115 | 116 | setHomeNodeServer - Sets home contracts server 117 | 118 | setHomeAssetServer - Sets home assets server 119 | 120 | debug - gives all executables in the game (You can't use port exploits that open unhackable ports) 121 | 122 | revealAll - Reveals all computers in game save 123 | 124 | addIRCMessage - Adds IRC Message to server: Usage: addIRCMessage (ComputerID) (Author) (Message) 125 | 126 | strikerAttack - Starts Striker hack (May be bugged for some users) 127 | 128 | themeAttack - Starts Naix hack (May be bugged for some users) 129 | 130 | callThePoliceSoTheyCanTraceYou - 100 sec trace 131 | 132 | reportYourselfToFBI - 20 sec trace 133 | 134 | traceYourselfIn - However long you want trace: Usage: traceYourselfIn (TimeInSeconds) 135 | 136 | warningFlash - Shows a warning flash 137 | 138 | stopTrace - Stops a trace 139 | 140 | hideDisplay - Hides display 141 | 142 | hideNetMap - Hides NetMap 143 | 144 | hideTerminal - Hides terminal (There is no way to get it back apart from restart the game) 145 | 146 | hideRAM - Hides RAM 147 | 148 | showDisplay - Shows display 149 | 150 | showNetMap - Shows NetMap 151 | 152 | showTerminal - Shows Terminal 153 | 154 | showRAM - Shows RAM 155 | 156 | getUniversalAdmin - Gets admin on every computer in game save 157 | 158 | changeUserDetails - Changes admin password: Usage: changeUserDetails (OldUsername) (NewUsername) (NewPassword) 159 | 160 | executeHack - Executes a hacker script (Put hacker scripts in Content/HackerScripts) 161 | 162 | generateExampleAcademicRecord - Generates an example academic record 163 | 164 | generateExampleMedicalRecord - Generates an example medical record 165 | 166 | changeMusic - Changes music (Music must be .ogg and in Content/) 167 | 168 | crashComputer - Crashes computer you are connected to 169 | 170 | addProxy - adds proxy to computer you are connected to: Usage: addProxy (TimeInSeconds) 171 | 172 | addFirewall - adds firewall to computer you are connected to: Usage: addFirewall (Solution) (Level) [AdditionalTime] 173 | 174 | addUser - adds a user to computer you are connected to: Usage: addUser (Username) (Password) 175 | 176 | openPort - Opens port on the computer you are connected to: Usage: openPort (PortToOpen) 177 | 178 | closeAllPorts - Closes all ports on the computer you are connected to 179 | 180 | closePort - Closes port on the computer you are connected to: Usage: closePort (PortToClose) 181 | 182 | removeProxy - Removes proxy from the computer you are connected to 183 | 184 | playSFX - Plays a sound effect, root directory is Content: Usage: playSFX (PathToSoundEffect eg. SFX/EmailSound) 185 | 186 | deleteWhitelistDLL - Deletes authenticator.dll from a whitelist server or whitelist protected server: Usage: DeleteWhitelistDLL (IPOrIDOrName) 187 | 188 | addComputer - Adds a computer on the fly: Usage: addComputer (Name) (IP) (SecurityLevel) (CompType) (ID) 189 | 190 | getMoreRAM - Sets available RAM to 2048 191 | 192 | setFaction - Sets faction according to argument one: setFaction entropy/csec/bibliotheque 193 | 194 | tracedBehind250Proxies - Trace of 500 secs 195 | 196 | disableEmailIcon - Disables the email icon like the Kaguya Trials 197 | 198 | enableEmailIcon - Enables the email icon 199 | 200 | nodeRestore - Restores nodes like when you click disable tracking in the dlc credits server 201 | 202 | addWhiteCircle - Maybe addes the circle when each node is restored 203 | 204 | -------------------------------------------------------------------------------- /Steamworks.NET.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/Steamworks.NET.dll -------------------------------------------------------------------------------- /VersionFile.txt: -------------------------------------------------------------------------------- 1 | 2.0-beta2.5c 2 | -------------------------------------------------------------------------------- /lib/.gitignore: -------------------------------------------------------------------------------- 1 | AlienFXManagedWrapper3.5.dll 2 | FNA.dll 3 | Steamworks.NET.dll 4 | PathfinderPatcher.exe 5 | PathfinderPatcher.pdb 6 | HacknetPathfinder.exe 7 | -------------------------------------------------------------------------------- /lib/Cecil.Import_LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Geoffrey "denikson" Horsington 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /lib/Cecil_LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008 - 2015 Jb Evain 2 | Copyright (c) 2008 - 2011 Novell, Inc. 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /lib/Mono.Cecil.Inject.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/lib/Mono.Cecil.Inject.dll -------------------------------------------------------------------------------- /lib/Mono.Cecil.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/lib/Mono.Cecil.dll -------------------------------------------------------------------------------- /lib/Pathfinder.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oxygencraft/DebugMod/b7143419ba8bd7a4ff365672054566ef7406ae6b/lib/Pathfinder.dll --------------------------------------------------------------------------------