Advertisement
Rvby1

ruby-bleed-v3.js

May 7th, 2022 (edited)
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const PWN_FILE = "pwn-server.js";
  2. const VIRUS_FILE = "ruby-bleed-v3.js";
  3. const HACK_FILE = "hack-script.js";
  4. const COPY_FILES_SCRIPT = "copy-files-to-server.js";
  5.  
  6. const SERVER_TO_HACK = "joesguns";
  7.  
  8. const VIRUS_TOKEN = "INFECTED.txt";
  9.  
  10. /** @param {NS} ns */
  11. export async function main(ns) {
  12.     ns.tprint(ns.getHostname() + " is starting the virus script.")
  13.     await processVirusTokens(ns);
  14.  
  15.     ns.scriptKill(HACK_FILE, ns.getHostname());
  16.  
  17.     let serversToInfect = ns.scan();
  18.     for(let currentServerToInfectCount = 0; currentServerToInfectCount < serversToInfect.length; currentServerToInfectCount++) {
  19.         let currentServerToInfectName = serversToInfect[currentServerToInfectCount];
  20.  
  21.         if(!ns.hasRootAccess(currentServerToInfectName)) {
  22.             ns.run(PWN_FILE, 1, currentServerToInfectName);
  23.         }
  24.         if(ns.hasRootAccess(currentServerToInfectName)){
  25.             copyVirusFilesToPwndServer(ns, currentServerToInfectName);
  26.             ns.exec(VIRUS_FILE, currentServerToInfectName, 1);
  27.         }
  28.     }
  29.     ns.tprint(ns.getHostname() + " has finished running the virus script. Starting hack script...")
  30.    
  31.     spawnMaxNumberOfHackScriptsOnThisServer(ns);
  32. }
  33.  
  34. export async function processVirusTokens(ns) {
  35.     if(ns.fileExists(VIRUS_TOKEN)) {
  36.         ns.tprint("Server " + ns.getHostname() + " has already been infected. Killing process...");
  37.         ns.kill(VIRUS_FILE, ns.getHostname());
  38.     }
  39.     else {
  40.         ns.tprint("Added virus token to " + ns.getHostname());
  41.         await ns.write(VIRUS_TOKEN, "", "w");
  42.     }
  43. }
  44.  
  45. function copyVirusFilesToPwndServer(ns, serverToCopyFilesTo) {
  46.     if(serverToCopyFilesTo === "home") {
  47.         return;
  48.     }
  49.     ns.tprint("Trying to copy...");
  50.     ns.run(COPY_FILES_SCRIPT, 1, serverToCopyFilesTo, PWN_FILE, VIRUS_FILE, HACK_FILE, COPY_FILES_SCRIPT);
  51.     ns.tprint("Copying... please...");
  52. }
  53.  
  54. //We should do this in another, smaller script to maximize how many hack scripts we can run.
  55. function spawnMaxNumberOfHackScriptsOnThisServer(ns) {
  56.     let serverToSpawnScriptOn = ns.getHostname();
  57.     let numberOfThreadsForScript = determineMaximumNumberOfThreadsForScript(ns, serverToSpawnScriptOn, HACK_FILE);
  58.    
  59.     ns.tprint("Spawning " + HACK_FILE + " on " + serverToSpawnScriptOn + " with " + numberOfThreadsForScript + " threads.");
  60.  
  61.     if(numberOfThreadsForScript != 0) {
  62.         ns.run(HACK_FILE, numberOfThreadsForScript, SERVER_TO_HACK);
  63.     }
  64. }
  65.  
  66. function determineMaximumNumberOfThreadsForScript(ns, serverToRunScriptOn, nameOfScriptToRunOnServer) {
  67.     let scriptRamRequirements = ns.getScriptRam(nameOfScriptToRunOnServer);
  68.     let currentAvailableRamOnServer = ns.getServerMaxRam(serverToRunScriptOn) - ns.getServerUsedRam(serverToRunScriptOn);
  69.     return Math.floor(currentAvailableRamOnServer / scriptRamRequirements);
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement