Bitburner: Scan/Nuke/Money Script (Working 2022)

Another script that automates scanning, nuking and making money.

This one however accounts for not having TOR, or port-openers.

 

Bitburner Scan/Nuke/Money Script

/** @param {NS} ns **/
export async function main(ns) {
    var torVorh= false;								//First things first, do we have a TOR?
    torVorh=ns.getPlayer().tor;
    

    if(torVorh==false){								//No TOR, return to terminal
        //ns.purchaseTor()
        ns.tprint("Kein TOR!!!");					
        return;
    }
    
    else{											//Scan for ALL servers, even those scan.analyze 10 doesnt see from home 
        var scanned = ns.scan("home");				//Credit for the base script goes to Wolfwings response to https://www.reddit.com/r/Bitburner/comments/rti82s/release_725_gb_server_crawler_worm_mega_script_v10/
        var servers = new Set();					// Direct Link to it: https://www.reddit.com/r/Bitburner/comments/rti82s/comment/hqt4gkv/?utm_source=share&utm_medium=web2x&context=3
        servers.add("home");
        while (scanned.length > 0) {
            const s = scanned.pop();
            if (!servers.has(s)) {
                servers.add(s);
                scanned = scanned.concat(ns.scan(s));
            }
        }
        servers.delete("home");
        servers.forEach(server => 					//My added part for personal servers
            {
                if (server == "pserv-" + ("0" || "1" || "2" || "3" || "4" || "5" || "6" || "7" || "8" || "9" || "10" || "11" || "12" || "13" || "14" || "15" || "16" || "17" || "18" || "19" || "20" || "21" || "22" || "23" || "24")) {
                    servers.delete(server);
                }
            }
        )
        servers = Array.from(servers);
        
        var numberServers=servers.length;			//Mine from here on
        

        var rootHelpers=0;							//vars to determine which servers in the list we can actually root
        var sql=false;
        var ssh=false;
        var smtp=false;
        var http=false;
        var ftp=false;

        if(ns.fileExists("sqlinject.exe")){			//figuring out what helpers we have, and how many in total
            rootHelpers++;
            sql=true;
        }
        if(ns.fileExists("httpworm.exe")){
            rootHelpers++;
            http=true;
        }
        if(ns.fileExists("relaysmtp.exe")){
            rootHelpers++;
            smtp=true;
        }
        if(ns.fileExists("ftpcrack.exe")){
            rootHelpers++;
            ftp=true;
        }
        if(ns.fileExists("brutessh.exe")){
            rootHelpers++;
            ssh=true;
        }


        servers.forEach(server=>{											//Again based on Wolfwings, with added code
                if (!ns.hasRootAccess(server)) {							//accounting for the number of ports, and which
                    if(ns.getServerNumPortsRequired(server)<=rootHelpers){	//ones we can open
       					if(sql==true){ns.sqlinject(server);}
        				if(http==true){ns.httpworm(server);}
        				if(smtp==true){ns.relaysmtp(server);}
        				if(ftp==true){ns.ftpcrack(server);}
        				if(ssh==true){ns.brutessh(server);}
        				ns.nuke(server);
                        if(ns.getServerMaxMoney(server)>0){					//Mine, only hack/grow/weaken cycles for servers 
                            ns.exec(server+".script","home",1500,);			//that actually have money; and run them with 1500 threads
                        }													//on the home server (3,6 TB, enough for 1t==1000b per cycle @my augs)
                        else{												//Servers without money are subtracted from the count of scripts that 
                            numberServers--;								//should be running in the end
                        }
                        //await (ns.installBackdoor(server));
                    }
                }
                //else if(ns.getServerMaxMoney(server)==0){
                //	numberServers--;
                //}
            }
        )
        ns.tprint(servers);													//Print all servers
        ns.tprint(numberServers);											//How many scripts shopuld be running(63 for me)
    }

}

 

comment

It works, but somehow eats the first 2 or 3 servers, and 1500 threads certainly are overkill on most servers.

Formatting is for 1920×1080 ingame


Thanks to morpheus for his great script, all credit to his effort. you can also read the original guide from Steam Community. enjoy the game.

Related Posts:

Leave a Comment