Skip to content

Instantly share code, notes, and snippets.

@JasonMadeSomething
Created April 8, 2022 14:33
Show Gist options
  • Save JasonMadeSomething/9a1c7e05db46c6cb328c297e4af1b515 to your computer and use it in GitHub Desktop.
Save JasonMadeSomething/9a1c7e05db46c6cb328c297e4af1b515 to your computer and use it in GitHub Desktop.
/** @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