Versuche, den Root-Zugriff auf alle Server zu erhalten und sie in einem leicht zu sehen.
Überblick
Dieses Skript erhält alle Server, öffnet alle möglichen Ports, und Versuche, Wurzelzugriff zu erhalten, Während der Benutzer den Benutzer leicht zu lesen und nützliche Informationen präsentieren.
Verwendung
Erstellen Sie jedes Skript unten und fügen Sie den Code angemessen ein.
Führen Sie das Skript aus!
Befehle:
Rennen Sie RootAccessor.ns
Führt das Skript gegen alle Server aus. Zeigt Ergebnisse an.
Run rootAccessor.ns -h
Zieht das Hilfmenü für das Skript an. Das Skript verarbeitet nicht weiter, wenn es enthält „-H“ als Argument.
Führen Sie RootAccessor.ns -s
Listet alle Server mit dem Root-Zugriff als speicher getrennte Liste auf, wenn Benutzer sie als Argumente in anderen Skripten verwenden möchten.
Run rootAccessor.ns Joesguns n00dles Max-Hardware
Versuche, Root -Zugriff auf Zielserver zu erhalten (Jedes Argument ist ein Servername).
run RootAccessor.ns joesguns n00dles max-hardware -s
run RootAccessor.ns -s joesguns n00dles max-hardware
run RootAccessor.ns joesguns n00dles -s max-hardware
„-S“ kann jederzeit als Argument hinzugefügt werden.
RootAccessor.ns Skript
Erstellen Sie ein neues Skript mit jedem Namen, den Sie möchten. Ich rief meine an „RootAccessor.ns“. Fügen Sie den folgenden Code in ihn ein. Es enthält 3 Funktionen, die das gesamte Skript ausmachen.
/** @param {NS} ns **/ Import {Allerter} aus "./lib-Getservers.ns"; Asynchrone Funktion main exportieren(ns) { Wurde genehmigt = []; wurde verweigert []; wurde denedports = []; var verweigert = []; vr. Andere = []; waren Dateien = [0, 0, 0, 0, 0]; war maxports = 0; //suppress all default log messages ns.tail(); ns.disableLog('ALLE'); Ns.Clearlog(); //Überprüfen Sie das Argument für Hilfe. Wenn (ns.args.includes("-H")) {helfen(ns); zurückkehren;} ns.print("Für Skript helfen Sie bei der Verwendung von Argument '-h' "); ns.print("Ausführung ..."); //process argument calls var target = []; Wenn (Ns.Args.length > 0) { Wenn (Ns.Args[0] === "-S") { target = wartung auf all servers(ns); } anders { target = ns.args; } } anders { target = wartung auf all servers(ns); } //check max ports available to open if (Ns.fileExists("Brutessh.exe")) {Dateien[0] = 1; Maxports ++; ns.print("Die brutessh.exe -Datei gibt es");} anders {ns.print("Brutessh.exe nicht gefunden");} Wenn (Ns.fileExists("Ftpcrack.exe")) {Dateien[1] = 1; Maxports ++; ns.print("Ftpcrack.exe -Datei existiert");} anders {ns.print("Ftpcrack.exe nicht gefunden");} Wenn (Ns.fileExists("relaysmtp.exe")) {Dateien[2] = 1; Maxports ++; ns.print("RelaysMtp.exe -Datei existiert");} anders {ns.print("RelaysMtp.exe nicht gefunden");} Wenn (Ns.fileExists("Httpworm.exe")) {Dateien[3] = 1; Maxports ++; ns.print("Die Datei httpworm.exe existiert");} anders {ns.print("Httpworm.exe nicht gefunden");} Wenn (Ns.fileExists("Sqlinject.exe")) {Dateien[4] = 1; Maxports ++; ns.print("Sqlinject.exe -Datei existiert");} anders {ns.print("Sqlinject.exe nicht gefunden");} ns.print("Maximale Ports öffnen: [" + Maxports + "]\N"); //open all ports and attempt root access for (const n von Target) { Wenn (Ns.Serverexists(N)) { const serverhacklvl = ns.getServerRequiredHackinglevel(N); const Playerhackinglvl = nshackinglevel(); Wenn (PlayerHackinglvl >= serverhacklvl) { Wenn (Dateien[0]) { ns.brutessh(N); } Wenn (Dateien[1]) { Ns.ftpcrack(N); } Wenn (Dateien[2]) { Ns.RelaysMtp(N);} Wenn (Dateien[3]) { Ns.httpworm(N); } Wenn (Dateien[4]) { Ns.SQLINJECT(N);} Gainrootaccess(N, Maxports, genehmigt, Denedports, bestritten, andere, ns); } anders { verweigert.push(N); Deniedhack.push("[BESTRITTEN] - Hack Level zu niedrig [" + PlayerHackinglvl + '/' + serverhacklvl + "] für " + N); } } } //output results if (Deniedhack.length>0) ns.print(Deniedhack.Join("\N")); Wenn (Denedports.length>0) ns.print(Denedports.Join("\N")); Wenn (Andere.Length>0) ns.print("[Bereits erworbener Root -Zugriff] für " + Andere.Join("\N[Bereits erworbener Root -Zugriff] für ")); Wenn (genehmigt.länge>0) ns.print("[Wurzelzugang genehmigt] für " + genehmigt.Join("\N[Wurzelzugang genehmigt] für ")); Wenn (ns.args.includes("-S")) { ns.print("Copierliste der verwurzelten Server:\N" + genehmigt.Join(" ") + Andere.Join(" ")); } } Funktion Gainrootaccess(Server, Portcount, genehmigt, Denedports, bestritten, andere, ns) { Wenn (!Ns.Hasrootaccess(Server)) { Wenn (Portcount >= Ns.GetServernumportsRequeured(Server)) { Ns.wull(Server); genehmigt.push(Server); } anders { verweigert.push(Server); Denedports.push("[Root Access verweigert] für " + Server + " - Nicht genug offene Ports"); } } anders { other.push(Server); } } Funktionshilfe(ns) { const text = [ "<==================================================>\N", "- Skript nimmt auf [N] Argumente oder gar keine.", " [N]: Servernamen, die Sie verwurzelt werden möchten.", " z.B.: run rootAccessor.ns n00dles joesguns zer0\n", "- No args will attempt root access on all servers\n", "- Fügen Sie Argument "-S" als Argument zum Drucken ein", " copiable list of all rooted servers\n", "<=====================================================>" ]; ns.print(text.join("\N")); }
lib-Getservers.ns Skript
Erstellen Sie ein neues Skript mit dem Namen „lib-Getservers.ns“ und fügen Sie die folgende Helferfunktion ein.
/** @param {NS} ns **/ Exportfunktion Allserver(ns, removePurchased = true) { Wenn (gepirche entfernen) var pServs = ns(); const nodes = neuer set; Funktion DFS(Knoten) { Knoten.Add(Knoten); für (Const Neighbor von Ns.Scan(Knoten)) { Wenn (gepirche entfernen) { Wenn (!PServs.includes(Nachbar)) { Wenn (!Knoten.has(Nachbar)) { DFS(Nachbar); } } } anders { Wenn (!Knoten.has(Nachbar)) { DFS(Nachbar); } } } } DFS("heim"); zurückkehren [...Knoten]; }
Das ist alles, was wir heute dafür teilen Bitburner Führung. Dieser Leitfaden wurde ursprünglich erstellt und geschrieben von Crunchynut. Für den Fall, dass wir diesen Leitfaden nicht aktualisieren können, Sie können das neueste Update finden, indem Sie diesem folgen Verknüpfung.