找回密码
 立即注册
查看: 458|回复: 0

[其他源码] 雷神加速器,游戏退出后自动暂停Python源码

[复制链接]
发表于 2023-8-20 12:29:18 | 显示全部楼层 |阅读模式

# 看了论坛有相似的程序,因为是封装版有可能导致你的账号发送到其他不安全的地方。这个python源码放心使用。保存本地的配置文件也是加密的。
# 仅作学习研究用,不得用于其他用途。
# 你可以自己更换秘钥。

[Python] 纯文本查看 复制代码
import hashlib  # 导入hashlib模块,用于加密密码
import requests  # 导入requests模块,用于发送HTTP请求
import json  # 导入json模块,用于处理JSON格式的数据
import psutil  # 导入psutil模块,用于获取系统进程信息
import time  # 导入time模块,用于处理时间
import os  # 导入os模块,用于执行操作系统命令
import rsa
 
 
class ThorAccelerator:
    def __init__(self):
        self.LOGIN_API = 'https://webapi.leigod.com/api/auth/login'  # 登录API接口
        self.PAUSE_API = 'https://webapi.leigod.com/api/user/pause'  # 暂停API接口
        self.INFO_API = 'https://webapi.leigod.com/api/user/info'  # 用户信息API接口
        self.BROWSER_HEADERS = {
            'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                          'Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188'
        }
        self.KEY_LENGTH = 4096
        self.BLOCK_SIZE = int(self.KEY_LENGTH // 8 - 11)
        self.PUBKEY = rsa.PublicKey.load_pkcs1(
            b'-----BEGIN RSA PUBLIC KEY-----\nMIICCgKCAgEAqAnfvjiNj5rfxJBiZfMD4PHSsFBNbGtYCnrW+ShtDMUL/LUJqZxQ'
            b'\nlCRzU7/Zp1eUG7sXIVqMz2Y6bKLuOYfV7WsS8gF4Jda6XRG2ZLsHl0ZIc6yM2cOG\nihs5lWLBDKHW3HubYbJ'
            b'+ubDiKORx5NH9ZJfVYTLCwSEBJKLyqQwxxzdJevUpZiDX'
            b'\nS6nhQwugLLBRtPPB7gMH4JrxIZd8ihfAlsD6bCNPJNksLfM1ZR0Io2HnMVlGRSb6\nW/0Plen2RQ'
            b'+vY6DlqAQf7yVnvyLe9nZGVCvqEbZ+YdgdtwHYmslUTwzD2KleENtN'
            b'\nvXN7B3ocsgNH7l3RKihXTabcTanRWvt6qFkjYEXxmiLIBDEBtXgwIiGrKMLLJFng\nBSNZ1KZHyTWRzLUh/xVAMNsNcS'
            b'/KGXjHUWbO2DNZmxJfegB3SkMEQpT2/Zy4+14R\npnhB9bGEs8rpdZq/5ed5LZ6JrBVljzPkCjobgTQ'
            b'/XV5sQRhEPPFGa6lFBADRytmc\nwr2Bju5BQKMGBIjHYX5i7tm8Y9q709W9GJuLi9XPOgRfROY1rXp1GmA5QMIr//DG'
            b'\ngSlNKwYyzgoSrx+Tn6DTNsFubNLrNkLEZ1AImyufJVA+bnHROJrNvHwHpAlj0Pt+\ndBf2EQJLVpRDV3h8IwJDQC'
            b'//DBXfMawBOdMEXqLRKyMUDJ0nw/1D3T0CAwEAAQ==\n-----END RSA PUBLIC KEY-----\n')
        self.PRIVKEY = rsa.PrivateKey.load_pkcs1(
            b'-----BEGIN RSA PRIVATE KEY-----\nMIIJNwIBAAKCAgEAqAnfvjiNj5rfxJBiZfMD4PHSsFBNbGtYCnrW+ShtDMUL/LUJ'
            b'\nqZxQlCRzU7/Zp1eUG7sXIVqMz2Y6bKLuOYfV7WsS8gF4Jda6XRG2ZLsHl0ZIc6yM\n2cOGihs5lWLBDKHW3HubYbJ'
            b'+ubDiKORx5NH9ZJfVYTLCwSEBJKLyqQwxxzdJevUp'
            b'\nZiDXS6nhQwugLLBRtPPB7gMH4JrxIZd8ihfAlsD6bCNPJNksLfM1ZR0Io2HnMVlG\nRSb6W/0Plen2RQ'
            b'+vY6DlqAQf7yVnvyLe9nZGVCvqEbZ+YdgdtwHYmslUTwzD2Kle'
            b'\nENtNvXN7B3ocsgNH7l3RKihXTabcTanRWvt6qFkjYEXxmiLIBDEBtXgwIiGrKMLL\nJFngBSNZ1KZHyTWRzLUh/xVAMNsNcS'
            b'/KGXjHUWbO2DNZmxJfegB3SkMEQpT2/Zy4\n+14RpnhB9bGEs8rpdZq/5ed5LZ6JrBVljzPkCjobgTQ/XV5sQRhEPPFGa6lFBADR'
            b'\nytmcwr2Bju5BQKMGBIjHYX5i7tm8Y9q709W9GJuLi9XPOgRfROY1rXp1GmA5QMIr\n//DGgSlNKwYyzgoSrx'
            b'+Tn6DTNsFubNLrNkLEZ1AImyufJVA+bnHROJrNvHwHpAlj\n0Pt+dBf2EQJLVpRDV3h8IwJDQC//DBXfMawBOdMEXqLRKyMUDJ0nw'
            b'/1D3T0CAwEA\nAQKCAgBh193/1M4YoAVLXwbsdeP8RtJ290sdpiNNdtlVmsRkexfPvVoy+GGy4MaG\nLV9'
            b'+oPAMdZOySBdVbCD4wKYVuZJG++G8KD7dSXqaVoXtgTmaS8JEGGSrJ75fDBsr'
            b'\ncKUXxeRl3VNMP7KqTORjCyGGKv9wYzhLsFLWQXF486h35jHV3ctbXQUOAnFaDUCs\n2UgavU/WHVj'
            b'+TaV4kr9039AUWGA7Z4JpFOYwfoPK/aJJje5Js+f6RBE2ksuUZHV+\nxQwwikGFsVoHyt8NUKpoENXijFvHBwrz5V8RedVTii'
            b'+lcTU2Eii3L2cmSYuqlGM+\np0uuG1qE9xPIaI8qzICSQSLQQrVYWZ4ywTa3/FCNdSXlWbtkfXA6bGl5zfRn6H2b'
            b'\nt3tZ6AZn5Q5mY9TnwGxpxfq9BhSwTaW2FnGwZSSYnV1csEmI0MCZLAkuhKIcp5K1\n6+5icuDGDEjYuL'
            b'/ke6mtQUE0lxalcPvUgOjywW3Wm5fRvh08aO7hVfIGIvjGrsoH\n2ENoSZ56r3yEnw6LugMiXPh+0ycn0nzCvlmGyLnp'
            b'+cw7Tsb3y8RxursW+WG+QPSx\nyEEb/4Ra8ip0TpYvFJCY53VsA3oZubYq09rpOG6Pue8vgiZa5oVb8TEE0Bnbixy5'
            b'\nuIKEFzMf3CUiuX70qZx+2TX6TYxIGkG1y+afXTf3CV1EC7wcAQKCAREAw6KrRynK\n/ZtoEK8mknBVA+n'
            b'/+qDnBXP6gbzzyrmNNPXXzjbzlpqRCpcGmE0Lsv3BBcSQ2lVH\ndUR2crHevwfP0NTzTSE'
            b'/qvWMuOxvbzKl7RpXWNJqLxK10QNUQGk0sOG3NXta8Lue'
            b'\nbozBF5vmQ1aFQxPBQsWxCdNpM7uRQEKwFlBlv5agZ4lnhdsvIfTQHOht7lS+UPCY\nAE/GHA4nB8gBOTmWVm9idXJfaFxKuWtHO'
            b'+s8NZv+GvHv49LCDYTwWiL8Yhp6DhWe\npnWGbj/ffvru6auB+7UcZbr+DxjxHvBTlmem5ZOYc9jbEquycUZgJZIouiAgPxey'
            b'\nuzG15VxJ4YiZh1GsgkeVmMafj85Kx6QYTlECgfEA2+NRGispXrfOFgZuVTHH9729\nN6eUURnm9SsFWVqmhElGd19Ng56Y'
            b'+rLlg3DsQubaMrykS2ZWn/wIhZuH09UtOga3\nf8Is3ryF72BXsj4R4+ZVdxSzDe0Syjd7g/23Llws5TWR4qDkO9P27Q33HMTBT5ri'
            b'\n1wSPz5URwGvdJU01uwwvXwIgJNE4lSZcr+Iq22PAeNINFWj9mWGIb4LaHZuBix8J'
            b'\nJHk5jvUfJg1wtYAoINxJ7wgoOSJrH3jxn73iJV80QWKJBzfGOsF05yyGmOLonddP\n8'
            b'/7ChDAjoaXhsfLWnVQBHcpycQ69VObZPwCU2UktAoIBEQCp6moq19C3rjeXbhjp\nTWl5ic7Lht7ALLhh4JQ5'
            b'+ij7257BO5cbsknRUdTniNtlbeItOUm6aCE1Z+4ctgJK\nFuXXcm2TCxK6UKUVpD0w7mOQ6LT'
            b'+r1qMYgrKa8LMYtPh4Vl3uRkGR15WlCfNcplu\n2QHLfaf4b63RY+5WgU2p64H3D4MgARp2crAYYYOxUWlEAlggjTfzItRSSPc/PMeH'
            b'\niZ4Obsb1ca6pZVoaUTaRjuyCzVAxG7h6/LEnRdFHXrRHBWYBaw+hlgOCfkbxEMb0\nCcxh5ZVy4h20'
            b'+dFZmYcrIP7ofkRF14is7adwsvG8UqyFVUnMRsTbJ6ET1xwuBpcg\nrLzz'
            b'++sCCFyVIcZKZ5kphouZ0QKB8GZNdV9Cc4Xw6D4REeYrOgkGSvGI0xWEgpLQ\nSDXRWiWz3cgOHAc'
            b'/k5cYAnZL5HAf7aarY5j87RKT9PcMbH5e8SLNGzSih7O9bGb5\noPN5s2Mft+WmSMQS56oTdDDtqvszwWOGr/ALwQQg0wJpe'
            b'+3zkKjTu/Qj2DDQ/yhS\nRtpi+LukqKmAWKooeTXTWk4uYJgf6d2MhK/QYCSrXwnajFY4EmZCs0M371KWsr5G'
            b'\nhIi9Lm5Tb0Z5uhUS8Vn8MBaNBpkymSJOkMg958lQVm5zpc+dynIdScKQZbmQmBNO\nFRpwi'
            b'+84tShCF0qIfAfzO2H3iEkrpQKCAREAtb9weZA0t569ucxRUPdrAl6QuTNc'
            b'\nOD8euGADStaaOfgfuqML6OASIROP1MxZmwc9cq8MEWpM9S1k8G81AGrZDYwjCiPH\nv7qiEjYTmX/C4mQ95LvQvjtGkm9kdiSHWS'
            b'/zYmzRG/1SZl2hUYRytVlwbNq+1xMy\njJXccgzQpzhOFXuKNqj84u20rc0Daup+XSR+ltCVboulE4cuyWC4eWYBbdeMMPNl'
            b'\nDsKETm0c5xjwK7iYk3Pi6lgTv4/BK1aWSpY1F9baxOTFDOHOQzP3mIYfpHX+V/vt\nMghXvP5UJc4ug4MYn94KBaM2QMD6Jeb'
            b'/zKDIM4cuI6Wa6oaSgfXhmCXagH1gDtCJ\nUrT2nqcejB+ieVk=\n-----END RSA PRIVATE KEY-----\n'
        )
 
        self.USER_INFO = {}
 
    def read_config(self):
        config_file_path = 'config.rsa-4096'  # 读取配置文件
        if os.path.isfile(config_file_path):
            # 打开文件
            with open(file=config_file_path, mode='rb') as f:
                content = f.read()
            # 解密文件
            result = b""
            for i in range(0, len(content), self.KEY_LENGTH // 8):
                result += rsa.decrypt(content[i:i + self.KEY_LENGTH // 8], self.PRIVKEY)
            self.USER_INFO = json.loads(result.decode())
        else:
            # 用户输入
            self.USER_INFO = {
                '登录信息': {
                    "country_code": 86,
                    "username": input('输入账号:'),
                    "password": hashlib.md5(input('输入密码:').encode("utf-8")).hexdigest(),
                },
                '特征信息': {
                    "account_token": None,
                    "lang": "zh_CN"
                },
                '进程名字': input('输入进程名:'),
                '延时暂停': input('延时暂停:'),
            }
            # 发送登录请求,获取特征码
            r = requests.post(url=self.LOGIN_API, headers=self.BROWSER_HEADERS, data=self.USER_INFO['登录信息'])
            if r.status_code == 200:
                r = json.loads(r.text)
                if r['msg'] == '成功':
                    # 更新特征码
                    self.USER_INFO['特征信息']['account_token'] = r['data']['login_info']['account_token']
 
                    # 加密并保存
                    content = str.encode(json.dumps(self.USER_INFO))
                    crypto = b""
                    for i in range(0, len(content), self.BLOCK_SIZE):
                        crypto += rsa.encrypt(content[i:i + self.BLOCK_SIZE], self.PUBKEY)
                    with open(file='config.rsa-4096', mode='wb') as f:
                        f.write(crypto)
 
        # 发送用户信息请求,检查特征码是否过期。加密、保存
        r = requests.post(self.INFO_API, headers=self.BROWSER_HEADERS, data=self.USER_INFO['特征信息'])
        if r.status_code == 200:
            if json.loads(r.text)['msg'] == '账号未登录':
                r = requests.post(url=self.LOGIN_API, headers=self.BROWSER_HEADERS, data=self.USER_INFO['登录信息'])
                if r.status_code == 200:
                    r = json.loads(r.text)
                    if r['msg'] == '成功':
                        self.USER_INFO['特征信息']['account_token'] = r['data']['login_info']['account_token']
                        # 加密并保存
                        content = str.encode(json.dumps(self.USER_INFO))
                        crypto = b""
                        for i in range(0, len(content), self.BLOCK_SIZE):
                            crypto += rsa.encrypt(content[i:i + self.BLOCK_SIZE], self.PUBKEY)
                        with open(file='config.rsa-4096', mode='wb') as f:
                            f.write(crypto)
 
    def check_process(self):
        # 检查进程是否存在
        if ".exe" not in self.USER_INFO['进程名字']:
            self.USER_INFO['进程名字'] = self.USER_INFO['进程名字'] + ".exe"
        for process in psutil.process_iter():
            if process.name() == self.USER_INFO['进程名字']:
                return True
        return False
 
    def pause_accelerator(self):
        # 暂停加速
        requests.post(url=self.PAUSE_API, headers=self.BROWSER_HEADERS, data=self.USER_INFO['特征信息'])
        r = requests.post(url=self.INFO_API, headers=self.BROWSER_HEADERS, data=self.USER_INFO['特征信息'])
        if r.status_code == 200:
            if json.loads(r.text)['data']['pause_status'] == '暂停中':
                return True
        return False
 
    def main(self):
        # 实时监控游戏进程
        t1 = 0
        while True:
            if self.check_process():
                break
            else:
                os.system('cls')
                print(f'\r等待启动游戏:{t1}', end='', flush=True)
            t1 += 1
            time.sleep(1)
        # 游戏启动了
        start_time = time.time()  # 记录开始时间
        while True:
            if self.check_process():
                current_time = time.time() - start_time  # 计算当前时间与开始时间的差值
                hours = int(current_time / 3600)  # 计算小时数
                minutes = int((current_time % 3600) / 60)  # 计算分钟数
                seconds = int(current_time % 60)  # 计算秒数
                time_str = f"{hours:02d}:{minutes:02d}:{seconds:02d}"  # 格式化时间字符串
                os.system('cls')
                print(f'\r游戏已经启动:{time_str}', end='', flush=True)
            else:
                if self.pause_accelerator():
                    os.system('cls')
                    print('\r加速器已经退出!!!', end='', flush=True)
                    input()
                    exit()
            time.sleep(1)
 
 
if __name__ == '__main__':
    thor_accelerator = ThorAccelerator()
    try:
        thor_accelerator.read_config()
        # print(thor_accelerator.USER_INFO)
        thor_accelerator.main()
    except BaseException as e:
        print(e)






上一篇:1900套计算机专业毕设项目代码资料大合集
下一篇:unturned国外大神cheat,CapyMod源码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|27CaT资源论坛

GMT+8, 2024-11-22 19:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表