Created
April 8, 2022 14:33
-
-
Save JasonMadeSomething/9a1c7e05db46c6cb328c297e4af1b515 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** @param {NS} ns **/ | |
import {config} from "./config.js" | |
const serverDataPort = config.serverDataPort | |
export async function main(ns) { | |
let startServer = ns.getHostname(); | |
let servers = findPath(ns, startServer, [], []); | |
while (true) { | |
const portServers = JSON.stringify(portOpener(servers, ns)) | |
ns.clearPort(serverDataPort); | |
await ns.writePort(serverDataPort, portServers); | |
await (ns.sleep(1000)) | |
} | |
} | |
/** @param {NS} ns */ | |
const findPath = (ns, serverName, serverList, ignore) => { | |
ignore.push(serverName); | |
let scanResults = ns.scan(serverName); | |
for (let server of scanResults) { | |
if (ignore.includes(server)) { | |
continue; | |
} | |
if (server.match("Server[0-9]*")) { | |
continue; | |
} | |
serverList.push(server); | |
serverList = findPath(ns, server, serverList, ignore); | |
} | |
return serverList; | |
} | |
/** @param {NS} ns */ | |
function exes(ns) { | |
const retArr = [] | |
if (ns.fileExists("BruteSSH.exe")) { | |
retArr.push({ name: "BruteSSH.exe", fn: ns.brutessh }) | |
} | |
if (ns.fileExists("FTPCrack.exe")) { | |
retArr.push({ name: "FTPCrack.exe", fn: ns.ftpcrack }) | |
} | |
if (ns.fileExists("relaySMTP.exe")) { | |
retArr.push({ name: "relaySMTP.exe", fn: ns.httpworm }) | |
} | |
if (ns.fileExists("HTTPWorm.exe")) { | |
retArr.push({ name: "HTTPWorm.exe", fn: ns.relaysmtp }) | |
} | |
if (ns.fileExists("SQLInject.exe")) { | |
retArr.push({ name: "SQLInject.exe", fn: ns.sqlinject }) | |
} | |
return retArr; | |
} | |
/** @param {NS} ns */ | |
function portOpener(servers, ns) { | |
const files = exes(ns) | |
const ret = [] | |
for (let i = 0; i < servers.length; i++) { | |
ret.push({name: servers[i], status: false}) | |
for (let j = 0; j > files.length; j++) { | |
if (ns.fileExists(files[j].name)) { | |
files[j].fn(servers[i]) | |
} | |
} | |
if (ns.getServerNumPortsRequired(servers[i]) <= files.length) { | |
ns.nuke(servers[i]) | |
ret[i].status = true; | |
} | |
} | |
return {key: ret}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment