Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const PWN_FILE = "pwn-server.js";
- const VIRUS_FILE = "ruby-bleed-v3.js";
- const HACK_FILE = "hack-script.js";
- const COPY_FILES_SCRIPT = "copy-files-to-server.js";
- const SERVER_TO_HACK = "joesguns";
- const VIRUS_TOKEN = "INFECTED.txt";
- /** @param {NS} ns */
- export async function main(ns) {
- ns.tprint(ns.getHostname() + " is starting the virus script.")
- await processVirusTokens(ns);
- ns.scriptKill(HACK_FILE, ns.getHostname());
- let serversToInfect = ns.scan();
- for(let currentServerToInfectCount = 0; currentServerToInfectCount < serversToInfect.length; currentServerToInfectCount++) {
- let currentServerToInfectName = serversToInfect[currentServerToInfectCount];
- if(!ns.hasRootAccess(currentServerToInfectName)) {
- ns.run(PWN_FILE, 1, currentServerToInfectName);
- }
- if(ns.hasRootAccess(currentServerToInfectName)){
- copyVirusFilesToPwndServer(ns, currentServerToInfectName);
- ns.exec(VIRUS_FILE, currentServerToInfectName, 1);
- }
- }
- ns.tprint(ns.getHostname() + " has finished running the virus script. Starting hack script...")
- spawnMaxNumberOfHackScriptsOnThisServer(ns);
- }
- export async function processVirusTokens(ns) {
- if(ns.fileExists(VIRUS_TOKEN)) {
- ns.tprint("Server " + ns.getHostname() + " has already been infected. Killing process...");
- ns.kill(VIRUS_FILE, ns.getHostname());
- }
- else {
- ns.tprint("Added virus token to " + ns.getHostname());
- await ns.write(VIRUS_TOKEN, "", "w");
- }
- }
- function copyVirusFilesToPwndServer(ns, serverToCopyFilesTo) {
- if(serverToCopyFilesTo === "home") {
- return;
- }
- ns.tprint("Trying to copy...");
- ns.run(COPY_FILES_SCRIPT, 1, serverToCopyFilesTo, PWN_FILE, VIRUS_FILE, HACK_FILE, COPY_FILES_SCRIPT);
- ns.tprint("Copying... please...");
- }
- //We should do this in another, smaller script to maximize how many hack scripts we can run.
- function spawnMaxNumberOfHackScriptsOnThisServer(ns) {
- let serverToSpawnScriptOn = ns.getHostname();
- let numberOfThreadsForScript = determineMaximumNumberOfThreadsForScript(ns, serverToSpawnScriptOn, HACK_FILE);
- ns.tprint("Spawning " + HACK_FILE + " on " + serverToSpawnScriptOn + " with " + numberOfThreadsForScript + " threads.");
- if(numberOfThreadsForScript != 0) {
- ns.run(HACK_FILE, numberOfThreadsForScript, SERVER_TO_HACK);
- }
- }
- function determineMaximumNumberOfThreadsForScript(ns, serverToRunScriptOn, nameOfScriptToRunOnServer) {
- let scriptRamRequirements = ns.getScriptRam(nameOfScriptToRunOnServer);
- let currentAvailableRamOnServer = ns.getServerMaxRam(serverToRunScriptOn) - ns.getServerUsedRam(serverToRunScriptOn);
- return Math.floor(currentAvailableRamOnServer / scriptRamRequirements);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement