107 lines
2.8 KiB
JavaScript
107 lines
2.8 KiB
JavaScript
/** @param {NS} ns */
|
|
function brutessh(ns, node) {
|
|
if(ns.fileExists("brutessh.exe", "home")) {
|
|
ns.brutessh(node);
|
|
return true;
|
|
} else { return false; }
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
function ftpcrack(ns, node) {
|
|
if(ns.fileExists("ftpcrack.exe", "home")) {
|
|
ns.ftpcrack(node);
|
|
return true;
|
|
} else { return false; }
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
function relaysmtp(ns, node) {
|
|
if(ns.fileExists("relaysmtp.exe", "home")) {
|
|
ns.relaysmtp(node);
|
|
return true;
|
|
} else { return false; }
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
function httpworm(ns, node) {
|
|
if(ns.fileExists("httpworm.exe", "home")) {
|
|
ns.httpworm(node);
|
|
return true;
|
|
} else { return false; }
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
function sqlinject(ns, node) {
|
|
if(ns.fileExists("sqlinject.exe", "home")) {
|
|
ns.sqlinject(node);
|
|
return true;
|
|
} else { return false; }
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
export async function crack(ns, node) {
|
|
let numPorts = ns.getServerNumPortsRequired(node);
|
|
|
|
if(numPorts != 0) {
|
|
switch(numPorts) {
|
|
case 1:
|
|
if(brutessh(ns, node)) {
|
|
ns.nuke(node);
|
|
return true;
|
|
} else return false;
|
|
case 2:
|
|
if(
|
|
brutessh(ns, node) &&
|
|
ftpcrack(ns, node)
|
|
) {
|
|
ns.nuke(node);
|
|
return true;
|
|
} else return false;
|
|
case 3:
|
|
if(
|
|
brutessh(ns, node) &&
|
|
ftpcrack(ns, node) &&
|
|
relaysmtp(ns, node)
|
|
) {
|
|
ns.nuke(node);
|
|
return true;
|
|
} else return false;
|
|
case 4:
|
|
if(
|
|
brutessh(ns, node) &&
|
|
ftpcrack(ns, node) &&
|
|
relaysmtp(ns, node) &&
|
|
httpworm(ns, node)
|
|
) {
|
|
ns.nuke(node);
|
|
return true;
|
|
} else return false;
|
|
case 5:
|
|
if(
|
|
brutessh(ns, node) &&
|
|
ftpcrack(ns, node) &&
|
|
relaysmtp(ns, node) &&
|
|
httpworm(ns, node) &&
|
|
sqlinject(ns, node)
|
|
) {
|
|
ns.nuke(node);
|
|
return true;
|
|
} else return false;
|
|
}
|
|
} else {
|
|
ns.nuke(node);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/** @param {NS} ns */
|
|
export async function main(ns) {
|
|
if(ns.args.length != 1) {
|
|
ns.tprint("invalid usage!");
|
|
}
|
|
|
|
var node = ns.args[0];
|
|
ns.tprint(crack(ns, node) ? "Cracked " + node : "Failed to Crack " + node);
|
|
} |