Skip to content

Instantly share code, notes, and snippets.

@jpeckham
Created October 31, 2023 02:27
Show Gist options
  • Save jpeckham/7778985bc8ec7fc3221e042015e4dd66 to your computer and use it in GitHub Desktop.
Save jpeckham/7778985bc8ec7fc3221e042015e4dd66 to your computer and use it in GitHub Desktop.
BitBurner hack script
/** @param {NS} ns */
/****
runs on any server to hack every server.
weakens until they are minimum security
for a long time all you'll do is weaken but once they're all weakened it will hack/grow
****/
export async function main(ns) {
while (true) {
let hostName = ns.getHostname();
let servers = scan(ns,ns.getHostname(),[hostName]);
//servers.push('sigma-cosmetics');
servers = servers
.filter((value, index, array) => value.substring(0,4) !== 'home')
.filter((value, index, array) => ns.hasRootAccess(value))
.filter((value, index, array) => ns.getServerRequiredHackingLevel(value) <= ns.getHackingLevel());
console.log('server list:');
console.log(servers);
if (servers.length === 0)
ns.sleep(10000);
for (let x = 0; x < servers.length; x++) {
while (ns.getServerSecurityLevel(servers[x]) > ns.getServerMinSecurityLevel(servers[x])) {
await ns.weaken(servers[x]);
}
await ns.hack(servers[x]);
await ns.grow(servers[x]);
}
}
}
function scan(ns, server, knownServers)
{
let connectedServers = ns.scan(server);
//remove any dupes we already know about
let newConnectedServers = connectedServers.filter((value,index,array) => !knownServers.some((v,i,a) => v === value));
//push new as known
knownServers.push(...newConnectedServers);
for(const newConnectedServer of newConnectedServers)
{
let foundServers = scan(ns, newConnectedServer, knownServers);
knownServers.push(...foundServers);
}
//distinct
knownServers = [...new Set(knownServers)];
return knownServers;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment