Próby uzyskania dostępu do korzeni do wszystkich serwerów i prezentacji ich w formacie łatwym do zobaczenia i użycia.
Przegląd
Ten skrypt otrzymuje wszystkie serwery, Otwiera wszystkie możliwe porty, i próby uzyskania dostępu do root, Wszystko podczas prezentacji użytkownika łatwych do odczytania i przydatnych informacji.
Jak używać
Utwórz każdy skrypt poniżej i odpowiednio wklej kod.
Uruchom skrypt!
Polecenia:
Uruchom rootAccessor.ns
Uruchamia skrypt na wszystkich serwerach. Wyświetla wyniki.
Uruchom rootAccessor.ns -H
Wyświetla menu pomocy dla skryptu. Skrypt nie przetwarza się dalej, jeśli zawiera “-H” jako argument.
Uruchom rootAccessor.ns -s
Wymienia wszystkie serwery z dostępem do korzenia jako listy oddzielonej przestrzeni, jeśli użytkownicy chcą je wykorzystać jako argumenty w innych skryptach.
Uruchom rootAccessor.ns joesguns n00dles max-hardware
Próby uzyskania dostępu do root na serwerach docelowych (Każdy argument to nazwa serwera).
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” można dodać jako argument w dowolnym momencie.
Skrypt rootAccessor.ns
Utwórz nowy skrypt o dowolnej nazwie. Zadzwoniłem do mojego “RootAccessor.ns”. Wklej do niego poniższy kod. Zawiera 3 funkcje, które składają się na cały skrypt.
/** @param {Ns} ns **/ import {AllSerters} z "./lib-getservers.ns"; Eksportuj funkcja asynchroniczna główna(ns) { Został zatwierdzony = []; został odrzucony = []; był deniedports = []; var odmówił = []; VR. Inne = []; były pliki = [0, 0, 0, 0, 0]; był Maxports = 0; //suppress all default log messages ns.tail(); ns.disablelog('WSZYSTKO'); ns.clearlog(); //Sprawdź argument pomocy. Jeśli (ns.args.inkludes("-H")) {pomoc(ns); powrót;} ns.print("W celu uzyskania skryptu użyj argumentu „-H” "); ns.print("Wykonanie ..."); //process argument calls var target = []; Jeśli (ns.args. długość > 0) { Jeśli (ns.args[0] === "-S") { Target = oczekiwanie na AllServers(ns); } w przeciwnym razie { Target = ns.args; } } w przeciwnym razie { Target = oczekiwanie na AllServers(ns); } //check max ports available to open if (Ns.fileExists("Brutessh.exe")) {akta[0] = 1; Maxports ++; ns.print("Plik BrutesSh.exe istnieje");} w przeciwnym razie {ns.print("Brutessh.exe nie znaleziono");} Jeśli (Ns.fileExists("Ftpcrack.exe")) {akta[1] = 1; Maxports ++; ns.print("Ftpcrack.exe istnieje");} w przeciwnym razie {ns.print("Ftpcrack.exe nie znaleziono");} Jeśli (Ns.fileExists("relaysmtp.exe")) {akta[2] = 1; Maxports ++; ns.print("Plik relaysmtp.exe istnieje");} w przeciwnym razie {ns.print("relaysmtp.exe nie znaleziono");} Jeśli (Ns.fileExists("Httpworm.exe")) {akta[3] = 1; Maxports ++; ns.print("Plik httpworm.exe istnieje");} w przeciwnym razie {ns.print("Httpworm.exe nie znaleziono");} Jeśli (Ns.fileExists("Sqlinject.exe")) {akta[4] = 1; Maxports ++; ns.print("Plik sqlinject.exe istnieje");} w przeciwnym razie {ns.print("Sqlinject.exe nie znaleziono");} ns.print("Maksymalne porty, które można otworzyć: [" + Maxports + "]\N"); //open all ports and attempt root access for (const n of Target) { Jeśli (ns.serrexists(N)) { const serverhacklvl = ns.getServerRequiredHackinglevel(N); const PlayerHackinglvl = ns.gethackinglevel(); Jeśli (PlayerHackinglvl >= ServerHacklvl) { Jeśli (akta[0]) { ns.brutessh(N); } Jeśli (akta[1]) { ns.ftpcrack(N); } Jeśli (akta[2]) { ns.relaysmtp(N);} Jeśli (akta[3]) { ns.httpworm(N); } Jeśli (akta[4]) { ns.sqlinject(N);} GainrootAccess(N, Maxports, zatwierdzony, DEMNIEDPORTS, zaprzeczony, Inny, ns); } w przeciwnym razie { Odmowa. Push(N); DEMNIEDHACK.PUSH("[ZAPRZECZONY] - Zbyt niski poziom hakowania [" + PlayerHackinglvl + '/' + serverhacklvl + "] Do " + N); } } } //output results if (DEMNIEDHack.Length>0) ns.print(DEMNIEDHACK.JOIN("\N")); Jeśli (deniedports. długość>0) ns.print(deniedports.Oin("\N")); Jeśli (inne długość>0) ns.print("[Już nabyty dostęp do korzeni] Do " + inne.Join("\N[Już nabyty dostęp do korzeni] Do ")); Jeśli (zatwierdzony. długość>0) ns.print("[Zatwierdzony dostęp do root] Do " + zatwierdzony.Join("\N[Zatwierdzony dostęp do root] Do ")); Jeśli (ns.args.inkludes("-S")) { ns.print("Kopialna lista zrootowanych serwerów:\N" + zatwierdzony.Join(" ") + inne.Join(" ")); } } funkcja GainRootAccess(serwer, PortCount, zatwierdzony, DEMNIEDPORTS, zaprzeczony, Inny, ns) { Jeśli (!Ns. HasrootAccess(serwer)) { Jeśli (PortCount >= ns.getservernumportSrequired(serwer)) { Ns.wull(serwer); zatwierdzony.push(serwer); } w przeciwnym razie { Odmowa. Push(serwer); deniedports.push("[Odrzucony dostęp do korzenia] Do " + serwer + " - Za mało otwartych portów"); } } w przeciwnym razie { Inne.push(serwer); } } pomoc funkcji(ns) { Tekst const = [ "<======================= HELL =====================>\N", "- Skrypt przyjmuje [N] argumenty lub w ogóle nie.", " [N]: Nazwy serwerów, które chcesz być zrootowany.", " np.: run rootAccessor.ns n00dles joesguns zer0\n", "- No args will attempt root access on all servers\n", "- Uwzględnij argument „-s” jako argument do wydrukowania", " copiable list of all rooted servers\n", "<=================================================>" ]; ns.print(Text.Join("\N")); }
Skrypt lib-getservers.ns
Utwórz nowy skrypt nazwany “lib-getservers.ns” i wklej poniższą funkcję pomocnika.
/** @param {Ns} ns **/ Funkcja eksportu AllServers(ns, removepurchased = true) { Jeśli (Usuń Purchased) var uservs = ns.getpurchasedServers(); const węzły = nowy zestaw; funkcja DFS(węzeł) { węzły.add(węzeł); Do (sąsiad const ns.scan(węzeł)) { Jeśli (Usuń Purchased) { Jeśli (!Obsvs.inkludes(sąsiad)) { Jeśli (!węzły(sąsiad)) { DFS(sąsiad); } } } w przeciwnym razie { Jeśli (!węzły(sąsiad)) { DFS(sąsiad); } } } } DFS("dom"); powrót [...węzły]; }
To wszystko, co dzisiaj udostępniamy w tym celu Bitburnera przewodnik. Ten przewodnik został pierwotnie stworzony i napisany przez Crunchynut. Na wypadek, gdybyśmy nie zaktualizowali tego przewodnika, możesz znaleźć najnowszą aktualizację, postępując zgodnie z tym połączyć.