Advertisement
Guest User

deployer attempt

a guest
Jun 20th, 2023
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /** @param {NS} ns */
  2. export async function main(ns) {
  3.   var allservers = ["home"];
  4.   var servers = [];
  5.   var ramInfo = [];
  6.   const maintarget = ns.args[0];
  7.   var targetinfo = [];
  8.   targetinfo.push(maintarget);
  9.   targetinfo.push(ns.getServerMaxMoney(maintarget));
  10.   targetinfo.push(ns.getServerMinSecurityLevel(maintarget));
  11.   targetinfo.push(ns.getServerRequiredHackingLevel(maintarget));
  12.   const moneythresh = 0.8;
  13.   const securitythresh = 1.5;
  14.   var usableservers = getallusableservers();
  15.   for (let i = 0; i < usableservers.length / 2; i++) {
  16.     servers.push(usableservers[2 * i]);
  17.     ramInfo.push(usableservers[(2 * i) + 1]);
  18.   }
  19.   await attackallservers(...allservers);
  20.   if (targetinfo[3] < ns.getHackingLevel()) {
  21.     while (true) {
  22.       const hacktime = ns.getHackTime(maintarget);
  23.       const growtime = ns.getGrowTime(maintarget);
  24.       const weakentime = ns.getWeakenTime(maintarget);
  25.       const currentmoneypercent = (ns.getServerMoneyAvailable(maintarget) / targetinfo[1]);
  26.       const securitylevel = (ns.getServerSecurityLevel(maintarget) / targetinfo[2]);
  27.       if (securitylevel > securitythresh) {
  28.         var targetservers = [];
  29.         var targetramusage = [];
  30.         var weakenScriptRam = ns.getScriptRam("weaken.js", "home");
  31.         var neededweakenthreads = Math.ceil((securitylevel - targetinfo[2]) / (ns.weakenAnalyze(1)));
  32.         var threadsPerServer = findram(neededweakenthreads, weakenScriptRam);
  33.         for (let i = 0; i < threadsPerServer.length / 2; i++) {
  34.           targetservers.push(threadsPerServer[2 * i]);
  35.           targetramusage.push(threadsPerServer[(2 * i) + 1]);
  36.         }
  37.         ns.print("trying to run script on " + targetservers, "INFO")
  38.         for (let i = 0; i < targetservers.length; i++) {
  39.           await ns.scp("weaken.js", targetservers[i], "home");
  40.           await ns.exec("weaken.js", targetservers[i], targetramusage[i], maintarget);
  41.           ns.print("running weaken.js on " + targetservers[i]);
  42.         }
  43.         ns.print("waiting for weaken");
  44.         await ns.sleep(weakentime);
  45.       } else if (currentmoneypercent <= moneythresh) {
  46.         var targetservers = [];
  47.         var targetramusage = [];
  48.         var growthScriptRam = ns.getScriptRam("grow.js", "home");
  49.         var neededgrowththreads = Math.ceil(ns.growthAnalyze(maintarget, 1.25));
  50.         var threadsPerServer = await findram(neededgrowththreads, growthScriptRam);
  51.         for (let i = 0; i < threadsPerServer.length / 2; i++) {
  52.           targetservers.push(threadsPerServer[2 * i]);
  53.           targetramusage.push(threadsPerServer[(2 * i) + 1]);
  54.         }
  55.         ns.print("trying to run script on " + targetservers, "INFO")
  56.         for (let i = 0; i < targetservers.length; i++) {
  57.           await ns.scp("grow.js", targetservers[i], "home");
  58.           await ns.exec("grow.js", targetservers[i], targetramusage[i], maintarget);
  59.           ns.print("running grow.js on " + targetservers[i]);
  60.         }
  61.         ns.print("waiting for growth");
  62.         await ns.sleep(growtime);
  63.       } else {
  64.         var targetservers = [];
  65.         var targetramusage = [];
  66.         var hackScriptRam = ns.getScriptRam("hack.js", "home");
  67.         var neededhackthreads = Math.ceil(((moneythresh) / ns.hackAnalyze(maintarget)));
  68.         var threadsPerServer = await findram(neededhackthreads, hackScriptRam);
  69.         for (let i = 0; i < threadsPerServer.length / 2; i++) {
  70.           targetservers.push(threadsPerServer[2 * i]);
  71.           targetramusage.push(threadsPerServer[(2 * i) + 1]);
  72.         }
  73.         ns.print("trying to run script on " + targetservers, "INFO")
  74.         for (let i = 0; i < targetservers.length; i++) {
  75.           await ns.scp("hack.js", targetservers[i], "home");
  76.           await ns.exec("hack.js", targetservers[i], targetramusage[i], maintarget);
  77.           ns.print("running hack.js on " + targetservers[i]);
  78.         }
  79.         ns.print("waiting for hack");
  80.         await ns.sleep(hacktime);
  81.       }
  82.       await ns.sleep(550);
  83.     }
  84.   }
  85.  
  86.   function findram(threadsneeded, scriptram) {
  87.     var threadsStillNeeded = Math.ceil(threadsneeded);
  88.     //var totalramfound = 0;
  89.     var counter = 0;
  90.     var threadsUsedPerServer = [];
  91.     for (const server of servers) {
  92.       //var threadsusedonthisserver = 0;
  93.       var currentram = (ramInfo[counter] - ns.getServerUsedRam(server));
  94.       //var ramUsedOnThisServer = 0;
  95.       const possibleThreads = Math.floor(currentram / scriptram);
  96.       var ramArray = [possibleThreads, threadsStillNeeded];
  97.       ramArray.sort((a, b) => a - b);
  98.       if (ramArray[0] > 0) {
  99.         threadsUsedPerServer.push(server);
  100.         threadsUsedPerServer.push(ramArray[0]);
  101.       }
  102.       threadsStillNeeded -= ramArray[0];
  103.       counter++;
  104.       if (threadsStillNeeded <= 0) {
  105.         return [...threadsUsedPerServer];
  106.       }
  107.     }
  108.     ns.print("unable to find enough ram to run script on " + maintarget);
  109.     return [...threadsUsedPerServer];
  110.   }
  111.   function getallusableservers() {
  112.     var serverlist = ["home", ns.getServerMaxRam("home")];
  113.     for (let i = 0; i < 20; i++) {
  114.       for (const server of allservers) {
  115.         const connections = ns.scan(server);
  116.         for (const connection of connections) {
  117.           if ((!(serverlist.includes(connection))) && (ns.getServerMaxRam(connection) > 2) && (connection != "darkweb") && (connection != "home") && (connection != "pserv-0") && ns.hasRootAccess(connection)) {
  118.             serverlist.push(connection);
  119.             serverlist.push(ns.getServerMaxRam(connection));
  120.             //ns.toast(connection + " added to server list.");
  121.           }
  122.           if (!(allservers.includes(connection))) {
  123.             allservers.push(connection);
  124.           }
  125.         }
  126.       }
  127.     }
  128.     serverlist.push(serverlist.shift());
  129.     serverlist.push(serverlist.shift());
  130.     return [...serverlist];
  131.   }
  132.   async function attackallservers(...targetlist) {
  133.     for (let i = 0; i < (targetlist.length - 1); i++) {
  134.       if (targetlist[i] != "home" && targetlist[i] != "darkweb")
  135.         await attack(targetlist[i]);
  136.     }
  137.   }
  138.   async function attack(server) {
  139.     var hacktoolnum = 0;                                                                                   //count and use hack tools owned if you don't have root
  140.     if (!ns.hasRootAccess(server)) {
  141.       ns.toast('Opening ports on ' + server);
  142.       if (ns.fileExists('BruteSSH.exe', 'home')) {
  143.         ns.brutessh(server);
  144.         hacktoolnum++;
  145.       }
  146.       if (ns.fileExists('FTPCrack.exe', 'home')) {
  147.         ns.ftpcrack(server);
  148.         hacktoolnum++;
  149.  
  150.       }
  151.       if (ns.fileExists('relaySMTP.exe', 'home')) {
  152.         ns.relaysmtp(server);
  153.         hacktoolnum++;
  154.  
  155.       }
  156.       if (ns.fileExists('HTTPWorm.exe', 'home')) {
  157.         ns.httpworm(server);
  158.         hacktoolnum++;
  159.  
  160.       }
  161.       if (ns.fileExists('SQLInject.exe', 'home')) {
  162.         ns.sqlinject(server);
  163.         hacktoolnum++;
  164.  
  165.       }
  166.     }
  167.     if (ns.getServerNumPortsRequired(server) <= hacktoolnum && !ns.hasRootAccess(server)) {
  168.       ns.toast("nuking " + server);
  169.       ns.nuke(server);
  170.     }
  171.     if (!ns.hasRootAccess(server)) {
  172.       ns.toast("unable to gain root to " + server, "error");
  173.     }
  174.   }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement