Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //cascadeScript.js:
- export async function main(ns) {
- let loggingEnabled = true;
- let detailedLoggingEnabled = true;
- if (!ns.args[0])
- {
- log("No input arg", true, ns);
- ns.exit();
- }
- let scriptName = ns.args[0];
- ns.args.shift();
- if (!ns.fileExists(scriptName, "home"))
- {
- log("Script does not exist", true, ns);
- ns.exit();
- }
- let scriptSize = ns.getScriptRam(scriptName, "home");
- log("Cascading script: \"" + scriptName + "\"", loggingEnabled, ns);
- log("Size of script: " + scriptSize + "gb", loggingEnabled, ns);
- let updatedServers = [];
- let serverCounter = replaceScriptInServer("home", updatedServers, scriptName, scriptSize, loggingEnabled, detailedLoggingEnabled, ns);
- log("Number of servers script cascaded to: " + serverCounter, loggingEnabled, ns);
- }
- function log(logText, shouldLog, ns) {
- if (shouldLog)
- {
- ns.tprint(logText);
- }
- }
- function replaceScriptInServer(serverToUpdate, updatedServers, scriptName, scriptSize, loggingEnabled, detailedLoggingEnabled, ns) {
- let serverCounter = 0;
- if (updatedServers.includes(serverToUpdate))
- {
- return 0;
- }
- updatedServers.push(serverToUpdate);
- crackServer(serverToUpdate, detailedLoggingEnabled, ns);
- cascadeScriptToServer(scriptName, serverToUpdate, scriptSize, loggingEnabled, detailedLoggingEnabled, ns);
- serverCounter++;
- let nearbyServers = ns.scan(serverToUpdate);
- for (let nearbyServer of nearbyServers)
- {
- serverCounter += replaceScriptInServer(nearbyServer, updatedServers, scriptName, scriptSize, loggingEnabled, detailedLoggingEnabled, ns);
- }
- return serverCounter;
- }
- function cascadeScriptToServer(scriptName, server, scriptSize, loggingEnabled, detailedLoggingEnabled, ns)
- {
- killScript(scriptName, server, detailedLoggingEnabled, ns);
- if (server !== "home")
- {
- log("Replacing script on: " + server, loggingEnabled, ns);
- removeExistingScript(scriptName, server, detailedLoggingEnabled, ns);
- ns.scp(scriptName, "home", server);
- }
- runScriptWithMaxThreads(scriptName, server, scriptSize, detailedLoggingEnabled, ns);
- }
- function killScript(scriptName, server, shouldLog, ns) {
- log("Attempting to kill script '" + scriptName + "' instances on server: " + server, shouldLog, ns);
- if (ns.scriptRunning(scriptName, server))
- {
- log("Script running on server", shouldLog, ns);
- //use if you want to terminate all running scripts (outside of home computer)
- /*if (server !== "home")
- {
- ns.killall(server);
- }*/
- let result = ns.scriptKill(scriptName, server);
- if (result)
- {
- log("All version of script killed", shouldLog, ns);
- }
- else
- {
- log("Failed to kill script(s)", shouldLog, ns);
- }
- }
- }
- function removeExistingScript(scriptName, server, shouldLog, ns)
- {
- if (ns.fileExists(scriptName, server))
- {
- log("Script exists on server", shouldLog, ns);
- let result = ns.rm(scriptName, server);
- if (result)
- {
- log("Script deleted", shouldLog, ns);
- }
- else
- {
- log("Failed to delete script", shouldLog, ns);
- }
- }
- }
- function runScriptWithMaxThreads(scriptName, server, scriptSize, shouldLog, ns)
- {
- let serverRam = ns.getServerRam(server);
- let freeServerRam = serverRam[0] - serverRam[1];
- log("Free Server RAM: " + freeServerRam, shouldLog, ns);
- let numberOfThreads = Math.floor(freeServerRam / scriptSize);
- log("Can run script with " + numberOfThreads + " threads", shouldLog, ns);
- if (numberOfThreads > 0)
- {
- var result = ns.exec(scriptName, server, numberOfThreads, ns.args);
- if (result !== 0)
- {
- log("Script ran\n\n", shouldLog, ns);
- }
- else
- {
- log("Script failed to run\n\n", shouldLog, ns);
- }
- }
- else
- {
- log("Not enough RAM available to run script\n\n", shouldLog, ns);
- }
- }
- function crackServer(server, shouldLog, ns)
- {
- log("Attempting to crack: " + server, shouldLog, ns);
- var portsOpened = 0;
- if (ns.fileExists("BruteSSH.exe", "home"))
- {
- log("Running BruteSSH", shouldLog, ns);
- ns.brutessh(server);
- portsOpened++;
- }
- if (ns.fileExists("FTPCrack.exe", "home"))
- {
- log("Running FTPCrack", shouldLog, ns);
- ns.ftpcrack(server);
- portsOpened++;
- }
- if (ns.fileExists("relaySMTP.exe", "home"))
- {
- log("Running relaySMTP", shouldLog, ns);
- ns.relaysmtp(server);
- portsOpened++;
- }
- if (ns.fileExists("HTTPWorm.exe", "home"))
- {
- log("Running HTTPWorm", shouldLog, ns);
- ns.httpworm(server);
- portsOpened++;
- }
- if (ns.fileExists("SQLInject.exe", "home"))
- {
- log("Running SQLInject", shouldLog, ns);
- ns.sqlinject(server);
- portsOpened++;
- }
- log("Ports opened: " + portsOpened, shouldLog, ns);
- log("Ports required: " + ns.getServerNumPortsRequired(server), shouldLog, ns);
- if (portsOpened >= ns.getServerNumPortsRequired(server))
- {
- ns.nuke(server);
- log("Server nuked", shouldLog, ns);
- }
- else
- {
- log("Not enough open ports to nuke", shouldLog, ns);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement