Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import * as helpers from "/apis/helpers.js"
- /** @param {NS} ns */
- export async function main(ns) {
- let targetMoney = 1000000000;
- let inCity = true;
- let startup = true;
- let programPurchased = true;
- let scriptsToRun = ['scanForCCT.js','hud.js','infiltration.js']
- for (let script of scriptsToRun){
- ns.run(script);
- }
- //ns.run('hiveCluster/hiveMind.js', 1, "n00dles");
- await ns.sleep(1000);
- while (startup) {
- //travel to Aevum if we can.
- if (ns.getPlayer().city != "Aevum") {
- if (!ns.singularity.travelToCity("Aevum")) {
- //If we are stuck in Aevum lets just infiltrate MegaCorp.
- await infiltrate(ns, "MegaCorp");
- continue;
- }
- }
- if (ns.getPlayer().city == "Aevum"){
- //run an infiltrate on Ecorp
- await infiltrate(ns, "ECorp");
- }
- //buy tor if we dont have it already
- if (!ns.getPlayer().tor) ns.singularity.purchaseTor();
- //buy programs and tor if we can.
- if (ns.getPlayer().tor) {
- let programsToBuy = ["BruteSSH.exe", "FTPCrack.exe", "relaySMTP.exe", "HTTPWorm.exe", "SQLInject.exe"];
- for (let program of programsToBuy) {
- if (!ns.fileExists(program, "home")) {
- if (ns.singularity.purchaseProgram(program)) programPurchased = true;
- }
- }
- }
- //if any programs were purchased, attempt to root new systems.
- if (programPurchased) {
- let servers = await helpers.getAllServers(ns, []);
- for (let server of servers) {
- await dropImmunity(ns, server);
- }
- }
- await ns.sleep(1000);
- if (ns.getServerMoneyAvailable("home") >= targetMoney) startup = false;
- }
- }
- const doc = eval("document");
- /** @param {import(".").NS} ns */
- export async function infiltrate(ns, corpName) {
- getCityE().click();
- let fail = false;
- getCorp(corpName).click();
- clickUntrusted("Infil");
- // clickUntrusted("Start");
- console.log("***************************************************************Started");
- while (isInfiltrating()) {
- await ns.asleep(1000);
- if (getCorp(corpName)) {
- //booted to city!
- fail = true;
- break;
- }
- console.log("***************************************************************Waiting");
- }
- if (!fail) {
- //clickUntrusted("Sell");
- console.log("***************************************************************Sell");
- getButton("Sell").click();
- return true;
- }
- return false;
- }
- function getCityE() {
- for (const elem of doc.querySelectorAll("p")) {
- if (elem.textContent == "City") {
- return elem;
- }
- }
- }
- function getCorp(corpName) {
- return doc.querySelector('[aria-label="' + corpName + '"]');
- }
- function getButton(text) {
- for (const elem of doc.querySelectorAll("button")) {
- if (elem.textContent.toLowerCase().includes(text.toLowerCase())) {
- return elem;
- }
- }
- }
- function clickUntrusted(text) {
- var button = getButton(text);
- const handler = Object.keys(button)[1];
- button[handler].onClick({ isTrusted: true });
- }
- function isInfiltrating() {
- return ![...doc.querySelectorAll('h4')].some(e => e.innerText === 'Infiltration successful!');
- }
- /** @param {NS} ns */
- async function dropImmunity(ns, server) {
- // If we have the BruteSSH.exe program, use it to open the SSH Port
- // on the target server
- let portLevel = 0;
- if (ns.fileExists("BruteSSH.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
- //log(ns, "Attempting BruteSSH on " + server, 2);
- ns.brutessh(server);
- portLevel++;
- }
- if (ns.fileExists("FTPCrack.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
- //log(ns, "Attempting FTPCrack on " + server, 2);
- ns.ftpcrack(server);
- portLevel++;
- }
- if (ns.fileExists("relaySMTP.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
- //log(ns, "Attempting relaySMTP on " + server, 2);
- ns.relaysmtp(server);
- portLevel++;
- }
- if (ns.fileExists("HTTPWorm.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
- //log(ns, "Attempting HTTPWorm on " + server, 2);
- ns.httpworm(server);
- portLevel++;
- }
- if (ns.fileExists("SQLInject.exe", "home") && !ns.hasRootAccess(server) && ns.getServerNumPortsRequired(server) > portLevel) {
- //log(ns, "Attempting SQLInject on " + server, 2);
- ns.sqlinject(server);
- portLevel++;
- }
- // Get root access to target server
- if (!ns.hasRootAccess(server)) {
- if (ns.getServerNumPortsRequired(server) <= portLevel) {
- ns.nuke(server);
- if (ns.hasRootAccess(server)) {
- //log(ns, "Gained root access to " + server, 1);
- }
- }
- //else log(ns, "Not enough open ports for " + server + " to run NUKE.exe", 2);
- }
- }
Add Comment
Please, Sign In to add comment