grow helpers improvement
This commit is contained in:
+52
-86
@@ -66,48 +66,49 @@ export async function main(ns) {
|
||||
* @param {string} server server to nuke and hack
|
||||
* @returns {Promise<number>} exit code; if negative error, if positive hack script PID, if 0 already running
|
||||
*/
|
||||
async function runNuke(server) {
|
||||
let serverStatus = analyzeServer(server);
|
||||
ns.print('INFO ', `{server: "${server}", status: ${JSON.stringify(serverStatus)}}`);
|
||||
|
||||
if (!serverStatus.rootAccess && serverStatus.nukeAvailable) {
|
||||
ns.print(`"Nuking ${server}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"`);
|
||||
for (let i = 0; i < maxPortsToHack(); ++i) {
|
||||
switch (EXPLOITS[i]) {
|
||||
case 'BruteSSH.exe':
|
||||
ns.brutessh(server);
|
||||
break;
|
||||
|
||||
case 'FTPCrack.exe':
|
||||
ns.ftpcrack(server);
|
||||
break;
|
||||
|
||||
case 'relaySMTP.exe':
|
||||
ns.relaysmtp(server);
|
||||
break;
|
||||
|
||||
case 'HTTPWorm.exe':
|
||||
ns.httpworm(server);
|
||||
break;
|
||||
|
||||
case 'SQLInject.exe':
|
||||
ns.sqlinject(server);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
ns.nuke(server);
|
||||
}
|
||||
}
|
||||
|
||||
async function runHack(server) {
|
||||
let script = 'simple-hack.js';
|
||||
|
||||
let serverStatus = analyzeServer(server);
|
||||
await writeLog('ANALYZE', `{server: "${server}", status: ${JSON.stringify(serverStatus)}}`);
|
||||
ns.print('INFO ', `{server: "${server}", status: ${JSON.stringify(serverStatus)}}`);
|
||||
|
||||
if (!serverStatus.rootAccess) {
|
||||
if (serverStatus.nukeAvailable) {
|
||||
await writeLog('NUKE', `"Nuking ${server}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"`);
|
||||
for (let i = 0; i < maxPortsToHack(); ++i) {
|
||||
switch (EXPLOITS[i]) {
|
||||
case 'BruteSSH.exe':
|
||||
ns.brutessh(server);
|
||||
break;
|
||||
|
||||
case 'FTPCrack.exe':
|
||||
ns.ftpcrack(server);
|
||||
break;
|
||||
|
||||
case 'relaySMTP.exe':
|
||||
ns.relaysmtp(server);
|
||||
break;
|
||||
|
||||
case 'HTTPWorm.exe':
|
||||
ns.httpworm(server);
|
||||
break;
|
||||
|
||||
case 'SQLInject.exe':
|
||||
ns.sqlinject(server);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
ns.nuke(server);
|
||||
}
|
||||
}
|
||||
|
||||
serverStatus = analyzeServer(server);
|
||||
|
||||
if (serverStatus.rootAccess) {
|
||||
if (serverStatus.rootAccess && serverStatus.nukeAvailable) {
|
||||
if (!ns.fileExists(script, 'home')) {
|
||||
await writeLog('ERROR', `"Script '${script}' doesn't exist!"`);
|
||||
ns.print(`ERROR Script '${script}' doesn't exist!`);
|
||||
// return -3;
|
||||
}
|
||||
ns.scp(script, server, 'home');
|
||||
@@ -143,42 +144,6 @@ export async function main(ns) {
|
||||
return -6;
|
||||
}
|
||||
|
||||
// let nukedServers = ['home', 'CSEC', 'avmnite-02h'];
|
||||
// /**
|
||||
// * Recursively scan, try to nuke and hack servers in the network
|
||||
// * @async
|
||||
// * @param {string} server server to scan
|
||||
// */
|
||||
// async function scanServer(server, maxDepth = Number.MAX_SAFE_INTEGER, depth = 1) {
|
||||
// if (depth <= maxDepth) {
|
||||
// let availableServers = ns.scan(server);
|
||||
|
||||
// // hack servers in current scan
|
||||
// for (let i = 0; i < availableServers.length; ++i) {
|
||||
// await writeLog('SCAN', `{server: "${availableServers[i]}", index: ${nukedServers.indexOf(availableServers[i])}, available: ["${availableServers.toString().replaceAll(',','","')}"]}`);
|
||||
// if (nukedServers.indexOf(availableServers[i]) == -1) {
|
||||
// nukedServers.push(availableServers[i]);
|
||||
// await scanServer(availableServers[i], maxDepth, depth + 1);
|
||||
// let hackExitCode = await runHack(availableServers[i]);
|
||||
|
||||
// if (hackExitCode == 0) {
|
||||
// await writeLog('HACK', `"Hack already running on ${availableServers[i]}"`);
|
||||
// } if (hackExitCode == -6) {
|
||||
// await writeLog('HACK', `"No root access to ${availableServers[i]}!"`);
|
||||
// } else {
|
||||
// if (hackExitCode < 0) {
|
||||
// await writeLog('ERROR', `"Hack exec ERROR on '${availableServers[i]}': ${hackExitCode}!"`);
|
||||
// } else {
|
||||
// await writeLog('HACK', `"Hack started on '${availableServers[i]}'"`);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// await ns.sleep(10);
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
* Recursively kill simple-hack.js running on servers in the network
|
||||
* @async
|
||||
@@ -191,22 +156,23 @@ export async function main(ns) {
|
||||
let nextServer = availableServers[i];
|
||||
|
||||
if (nextServer != currentServer && nextServer != previousServer) {
|
||||
await runNuke(nextServer);
|
||||
if (EXCLUDE_SERVERS.indexOf(nextServer) == -1) {
|
||||
let hackExitCode = await runHack(nextServer);
|
||||
|
||||
if (hackExitCode == 0) {
|
||||
await writeLog('HACK', `"Hack already running on ${nextServer}"`);
|
||||
} else if (hackExitCode == -6) {
|
||||
await writeLog('HACK', `"No root access to ${nextServer}!"`);
|
||||
} else if (hackExitCode == -4) {
|
||||
await writeLog('HACK', `"Not enough RAM to run script on ${nextServer}!"`);
|
||||
} else {
|
||||
if (hackExitCode < 0) {
|
||||
await writeLog('ERROR', `"Hack exec ERROR on '${nextServer}': ${hackExitCode}!"`);
|
||||
} else {
|
||||
await writeLog('HACK', `"Hack started on '${nextServer}'"`);
|
||||
}
|
||||
}
|
||||
// if (hackExitCode == 0) {
|
||||
// ns.print('INFO ' + `"Hack already running on ${nextServer}"`);
|
||||
// } else if (hackExitCode == -6) {
|
||||
// ns.print('ERROR ' + `"No root access to ${nextServer}!"`);
|
||||
// } else if (hackExitCode == -4) {
|
||||
// ns.print('WARN ' + `"Not enough RAM to run script on ${nextServer}!"`);
|
||||
// } else {
|
||||
// if (hackExitCode < 0) {
|
||||
// ns.print('ERROR ' + `"Hack exec ERROR on '${nextServer}': ${hackExitCode}!"`);
|
||||
// } else {
|
||||
// ns.print('INFO ' + `"Hack started on '${nextServer}'"`);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
await scanServer(nextServer, currentServer);
|
||||
}
|
||||
@@ -219,7 +185,7 @@ export async function main(ns) {
|
||||
ns.tprint(`TERMINAL = "Running scan"`);
|
||||
|
||||
while (true) {
|
||||
await writeLog('INFO', `"Running scan"`);
|
||||
ns.print(`INFO Running scan`);
|
||||
await scanServer('home');
|
||||
await ns.sleep(60000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user