Files
bitburner-scripts/crack.js
T
2025-02-22 03:37:47 -07:00

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);
}