The3vilM0nk3y

startupv1.js

May 8th, 2022
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as helpers from "/apis/helpers.js"
  2.  
  3. /** @param {NS} ns */
  4. export async function main(ns) {
  5.     let targetMoney = 1000000000;
  6.     let inCity = true;
  7.     let startup = true;
  8.     let programPurchased = true;
  9.     let scriptsToRun = ['scanForCCT.js','hud.js','infiltration.js']
  10.     for (let script of scriptsToRun){
  11.         ns.run(script);
  12.     }
  13.     //ns.run('hiveCluster/hiveMind.js', 1, "n00dles");
  14.     await ns.sleep(1000);
  15.     while (startup) {
  16.         //travel to Aevum if we can.
  17.         if (ns.getPlayer().city != "Aevum") {
  18.             if (!ns.singularity.travelToCity("Aevum")) {
  19.                 //If we are stuck in Aevum lets just infiltrate MegaCorp.
  20.                 await infiltrate(ns, "MegaCorp");
  21.                 continue;
  22.             }
  23.         }
  24.         if (ns.getPlayer().city == "Aevum"){
  25.             //run an infiltrate on Ecorp
  26.             await infiltrate(ns, "ECorp");
  27.         }
  28.         //buy tor if we dont have it already
  29.         if (!ns.getPlayer().tor) ns.singularity.purchaseTor();
  30.         //buy programs and tor if we can.
  31.         if (ns.getPlayer().tor) {
  32.             let programsToBuy = ["BruteSSH.exe", "FTPCrack.exe", "relaySMTP.exe", "HTTPWorm.exe", "SQLInject.exe"];
  33.             for (let program of programsToBuy) {
  34.                 if (!ns.fileExists(program, "home")) {
  35.                     if (ns.singularity.purchaseProgram(program)) programPurchased = true;
  36.                 }
  37.             }
  38.         }
  39.         //if any programs were purchased, attempt to root new systems.
  40.         if (programPurchased) {
  41.             let servers = await helpers.getAllServers(ns, []);
  42.             for (let server of servers) {
  43.                 await dropImmunity(ns, server);
  44.             }
  45.         }
  46.         await ns.sleep(1000);
  47.         if (ns.getServerMoneyAvailable("home") >= targetMoney) startup = false;
  48.     }
  49. }
  50.  
  51. const doc = eval("document");
  52.  
  53. /** @param {import(".").NS} ns */
  54. export async function infiltrate(ns, corpName) {
  55.     getCityE().click();
  56.  
  57.     let fail = false;
  58.     getCorp(corpName).click();
  59.     clickUntrusted("Infil");
  60.     //      clickUntrusted("Start");
  61.     console.log("***************************************************************Started");
  62.     while (isInfiltrating()) {
  63.         await ns.asleep(1000);
  64.         if (getCorp(corpName)) {
  65.             //booted to city!
  66.             fail = true;
  67.             break;
  68.         }
  69.         console.log("***************************************************************Waiting");
  70.     }
  71.     if (!fail) {
  72.  
  73.         //clickUntrusted("Sell");
  74.         console.log("***************************************************************Sell");
  75.         getButton("Sell").click();
  76.         return true;
  77.     }
  78.     return false;
  79. }
  80.  
  81. function getCityE() {
  82.     for (const elem of doc.querySelectorAll("p")) {
  83.         if (elem.textContent == "City") {
  84.             return elem;
  85.         }
  86.     }
  87. }
  88.  
  89. function getCorp(corpName) {
  90.     return doc.querySelector('[aria-label="' + corpName + '"]');
  91. }
  92.  
  93. function getButton(text) {
  94.     for (const elem of doc.querySelectorAll("button")) {
  95.         if (elem.textContent.toLowerCase().includes(text.toLowerCase())) {
  96.             return elem;
  97.         }
  98.     }
  99. }
  100.  
  101. function clickUntrusted(text) {
  102.     var button = getButton(text);
  103.     const handler = Object.keys(button)[1];
  104.     button[handler].onClick({ isTrusted: true });
  105. }
  106.  
  107. function isInfiltrating() {
  108.     return ![...doc.querySelectorAll('h4')].some(e => e.innerText === 'Infiltration successful!');
  109. }
  110.  
  111.  
  112. /** @param {NS} ns */
  113. async function dropImmunity(ns, server) {
  114.     // If we have the BruteSSH.exe program, use it to open the SSH Port
  115.     // on the target server
  116.     let portLevel = 0;
  117.     if (ns.fileExists("BruteSSH.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
  118.         //log(ns, "Attempting BruteSSH on " + server, 2);
  119.         ns.brutessh(server);
  120.         portLevel++;
  121.     }
  122.     if (ns.fileExists("FTPCrack.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
  123.         //log(ns, "Attempting FTPCrack on " + server, 2);
  124.         ns.ftpcrack(server);
  125.         portLevel++;
  126.     }
  127.     if (ns.fileExists("relaySMTP.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
  128.         //log(ns, "Attempting relaySMTP on " + server, 2);
  129.         ns.relaysmtp(server);
  130.         portLevel++;
  131.     }
  132.     if (ns.fileExists("HTTPWorm.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
  133.         //log(ns, "Attempting HTTPWorm on " + server, 2);
  134.         ns.httpworm(server);
  135.         portLevel++;
  136.     }
  137.     if (ns.fileExists("SQLInject.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
  138.         //log(ns, "Attempting SQLInject on " + server, 2);
  139.         ns.sqlinject(server);
  140.         portLevel++;
  141.     }
  142.  
  143.  
  144.     // Get root access to target server
  145.     if (!ns.hasRootAccess(server)) {
  146.         if (ns.getServerNumPortsRequired(server) <= portLevel) {
  147.             ns.nuke(server);
  148.             if (ns.hasRootAccess(server)) {
  149.                 //log(ns, "Gained root access to " + server, 1);
  150.             }
  151.         }
  152.         //else log(ns, "Not enough open ports for " + server + " to run NUKE.exe", 2);
  153.     }
  154. }
Add Comment
Please, Sign In to add comment