1 mesaj
Membru Ucenic Membru Ucenic
  • Mesaje: 36
  • Reacții: 127
  • Mesaje utile: 2
  • Status: regalhost.eu
  • Server: regalhoast.eu
  • Regat: Jinno
  • Contact:

    Medalii

    Salutare! Vreau să împart cu voi un mic script în Python pe care îl folosesc și care pe mine m-a ajutat cam 80% să îmi curăț sursa și să găsesc problemele mai repede. Este un script foarte simplu, nu vă imaginați vreo unealtă complexă, dar își face treaba bine când vine vorba de găsit "mizerii" prin cod.

    Sentinel Kernel v6.0 l-am gândit să fie ușor de folosit pentru oricine. Practic, scanează fișierele .cpp, .h și .lua și vă scoate un raport cu locurile unde codul pare dubios.

    Ce caută mai exact:
    • [] Backdoor-uri: Verificări de nume sau ID-uri băgate direct în sursă (if name == 'cineva').
      [] Crash-uri (Null Pointer): Locurile unde lipsește verificarea de siguranță și din cauza cărora pot pica core-urile de game.
      [] SQL Injection: Comenzi DirectQuery prin quest-uri care nu sunt filtrate.
      [] Comenzi de sistem: Utilizarea funcției system() care poate fi periculoasă pentru VPS.
    Sper să vă fie de folos și vouă, pe mine m-a scăpat de multe bătăi de cap căutând manual.

    *Poze / Video:

    [C++/Py] Sentinel Kernel v6.0 - Sursă Security Auditor (Backdoor & Crash Detector) - Mesaj 1 - Imagine 1[C++/Py] Sentinel Kernel v6.0 - Sursă Security Auditor (Backdoor & Crash Detector) - Mesaj 1 - Imagine 2[C++/Py] Sentinel Kernel v6.0 - Sursă Security Auditor (Backdoor & Crash Detector) - Mesaj 1 - Imagine 3[C++/Py] Sentinel Kernel v6.0 - Sursă Security Auditor (Backdoor & Crash Detector) - Mesaj 1 - Imagine 4

    *Link download / Code: m2audit.py
    Code:
    import os
    import re
    import sys
    import time
    import ctypes
    from datetime import datetime
    
    # Configurare Culori Terminal
    def enable_ansi():
        try:
            kernel32 = ctypes.windll.kernel32
            kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)
        except: pass
    
    enable_ansi()
    
    class Color:
        R, G, Y, B, C, W = '\033[91m', '\033[92m', '\033[93m', '\033[94m', '\033[96m', '\033[0m'
        BOLD, UNDR = '\033[1m', '\033[4m'
        BG_R = '\033[41m'
    
    # Motorul de Reguli (Heuristic Scan)
    # Aici am adaugat pattern-uri pentru comenzi ascunse si privilegii hardcodate
    RULES = [
        {
            "id": "HIDDEN_GM_BY_NAME",
            "regex": r'GetName\(\)\s*==\s*".*"|strcmp\(.*GetName\(\).*,.*".*"\)',
            "severity": "ULTRA-CRITICAL",
            "title": "BACKDOOR: PRIVILEGIU HARDCODAT PE NUME",
            "desc": "S-a gasit o verificare de nume fix (ex: if name == 'Hacker'). Aceasta este metoda clasica de backdoor unde cineva isi da permisiuni fara sa aiba nevoie de gmlist.",
            "impact": "Un jucator cu acel nume specific poate executa comenzi de admin sau accesa meniuri secrete."
        },
        {
            "id": "COMMAND_BYPASS",
            "regex": r'void\s*do_.*\s*\(.*\)\s*\{[\s\S]*?IsGM\(\)\s*==\s*false',
            "severity": "CRITICAL",
            "title": "COMMAND BYPASS: COMANDA ASCUNSA",
            "desc": "O comanda de tip 'do_exec' sau similara care verifica daca cineva NU este GM pentru a rula cod sensibil.",
            "impact": "Jucatorii pot rula comenzi destinate exclusiv staff-ului."
        },
        {
            "id": "SQL_INJECTION_RAW",
            "regex": r'DirectQuery\s*\(\s*".*%s.*"\s*,\s*.*lua_tostring',
            "severity": "CRITICAL",
            "title": "SQL EXPLOIT: INJECTIE PRIN LUA",
            "desc": "Input-ul din joc (quest) pleaca direct in baza de date fara filtrare.",
            "impact": "Stergere totala DB / Modificare monede."
        },
        {
            "id": "SHELL_EXECUTION",
            "regex": r'\bsystem\s*\(\s*".*"\s*\)',
            "severity": "HIGH",
            "title": "HACKER TOOL: EXECUTE SYSTEM COMMAND",
            "desc": "Executie de comenzi la nivel de sistem de operare (Linux Bash).",
            "impact": "Atacatorul poate prelua controlul asupra intregului VPS."
        },
        {
            "id": "NULL_POINTER_CRASH",
            "regex": r'CHARACTER_MANAGER::instance\(\)\.Find\(.*\)\s*->',
            "severity": "MEDIUM",
            "title": "CRASH VULNERABILITY: NULL POINTER",
            "desc": "Se acceseaza un pointer fara a verifica daca personajul exista (IsNULL).",
            "impact": "Un jucator poate trimite un pachet care sa inchida (crash) game-ul pentru toti ceilalti."
        }
    ]
    
    def get_context(lines, idx):
        start = max(0, idx - 3)
        end = min(len(lines), idx + 7)
        return "".join(lines[start:end])
    
    def sentinel_scan():
        os.system('cls')
        print(f"{Color.B}{'='*100}")
        print(f"   {Color.BOLD}SENTINEL KERNEL v6.0 - MOTOR DE AUDIT ABSOLUT (BACKDOOR & CRASH DETECTION){Color.W}")
        print(f"{Color.B}{'='*100}{Color.W}\n")
    
        path = input(f"{Color.C}[>] CALEA CATRE SURSA: {Color.W}").strip('"')
        if not os.path.exists(path):
            print(f"{Color.R}[!] EROARE: Locatie invalida.{Color.W}")
            return
    
        findings = []
        file_count = 0
        start_time = time.time()
    
        print(f"{Color.Y}[*] Analiza profunda initiata... Asteptati.{Color.W}")
    
        for root, _, files in os.walk(path):
            for file in files:
                if file.endswith((".cpp", ".h", ".lua", ".py")):
                    file_count += 1
                    f_path = os.path.join(root, file)
                    try:
                        with open(f_path, 'r', encoding='utf-8', errors='ignore') as f:
                            content = f.read()
                            lines = content.splitlines(True)
                            
                            # Verificam fiecare regula din motor
                            for rule in RULES:
                                matches = re.finditer(rule["regex"], content, re.MULTILINE)
                                for match in matches:
                                    # Calculam linia
                                    line_no = content.count('\n', 0, match.start()) + 1
                                    findings.append({
                                        "rule": rule,
                                        "file": f_path,
                                        "line": line_no,
                                        "snippet": get_context(lines, line_no - 1)
                                    })
                    except Exception as e:
                        continue
    
        # Generare Raport ULTRA-DETALIAT
        report_name = f"SENTINEL_AUDIT_FULL_{int(time.time())}.txt"
        with open(report_name, "w", encoding='utf-8') as r:
            r.write(f"SENTINEL KERNEL SECURITY REPORT\n")
            r.write(f"TIMESTAMP: {datetime.now()}\n")
            r.write(f"FILES SCANNED: {file_count}\n")
            r.write(f"TOTAL VULNERABILITIES: {len(findings)}\n")
            r.write("="*100 + "\n\n")
    
            for f in findings:
                r.write(f"[{f['rule']['severity']}] {f['rule']['title']}\n")
                r.write(f"FILE: {f['file']}\n")
                r.write(f"LINE: {f['line']}\n")
                r.write("-" * 50 + "\n")
                r.write(f"DESCRIPTION: {f['rule']['desc']}\n")
                r.write(f"IMPACT: {f['rule']['impact']}\n")
                r.write(f"CODE BLOCK:\n{f['snippet']}\n")
                r.write("-" * 50 + "\n")
                r.write(f"REMEDIATION: Verificati daca logica permite acces neautorizat si curatati codul.\n")
                r.write("\n" + "#"*100 + "\n\n")
    
        duration = time.time() - start_time
        print(f"\n{Color.G}[+] SCANARE FINALIZATA IN {duration:.2f} secunde.")
        print(f"[+] S-au verificat {file_count} fisiere.")
        print(f"{Color.BG_R if findings else Color.G}[!] S-au gasit {len(findings)} puncte critice.{Color.W}")
        print(f"[+] Raport detaliat generat: {Color.BOLD}{report_name}{Color.W}")
    
    if __name__ == "__main__":
        sentinel_scan()
    
    *Python2.7 / Python3 :
    Code:
    python m2audit.py
    [/b]

    *Link scanare VirusTotal (obligatoriu):

    https://www.virustotal.com/
    (Fiind cod sursă deschis, oricine poate citi liniile înainte să îl ruleze pentru siguranță.)

    Nou Cum descarc de pe TeraBox?

    Afișează detalii Ascunde detalii
    • Este asemănător cu Mega.nz
    • Instalați-vă clientul lor de Download de aici
    • Faceți-vă un cont (vă puteți loga cu Facebook / Google / etc)
    • Nou Dacă nu vreți să descărcați clientul de Download, folosiți acest site
    • Gata! Acum puteți descărca resursele rapid & simplu.

    De ce folosim TeraBox?

    • Este gratuit
    • Primești 1TB de spațiu gratuit la orice cont creat!
    • Este ușor de folosit și varianta premium este foarte ieftină
    • Fișierele nu sunt șterse niciodată
    TeraBox logo

    Creează-ți un cont sau autentifică-te pentru a participa la discuție

    Trebuie să fii membru pentru a răspunde

    Creează-ți un cont

    Membrii pot crea subiecte noi și pot descărca resurse Metin2 Gratuit!


    Te poți înregistra sau conecta rapid utilizând contul tău de Discord, Github sau Google.

    Înregistrare

    Autentifică-te

    Înapoi la “Îmbunătățiri”

    Informații

    Utilizatori ce navighează pe acest forum: Aioria, qelliiee și 5 vizitatori

    Discord ID copiat: