吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 1298|回复: 6

无壳本地验证求助

[复制链接]
y03831 发表于 2023-11-30 01:37 | 显示全部楼层 |阅读模式

本站严厉禁止求脱求破行为(包含无自我分析直接求思路),如发现此类求助主题请点击“举报”,让我们共同维护优质的学习环境!


188HB
微信截图_20231130013639.png
用x64dbg 搜索不到字符串

https://wwi.lanzouj.com/iVDEo1gcy2hi



吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| y03831 发表于 2023-11-30 01:39 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
三斤回锅肉 发表于 2023-11-30 17:13 | 显示全部楼层

用x64dbg调试
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Rooking 发表于 2023-12-1 00:25 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一身白 发表于 2023-12-7 16:28 | 显示全部楼层

python 打包的程序,我尝试解包没办法太菜了,包太大 放不上来
xx.png
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一身白 发表于 2023-12-7 21:27 | 显示全部楼层

不懂在调试器中如何定位关键位置,有大哥解决了的话 踢我一脚
[Python] 纯文本查看 复制代码
# decompyle3 version 3.9.0
# Python bytecode=1 version base 3.8.0 (3413)
# Decompiled from: Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)]
# Embedded file name: js自动化测试代码混淆.py
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import selenium.webdriver.support as EC
import time, os, shutil, pyperclip
from tkinter import *
import tkinter.ttk as ttk
from tkinter import messagebox
from tkinter.scrolledtext import ScrolledText
from tkinter import filedialog, dialog
import _thread, webbrowser, datetime, win32api, base64, hashlib
from Crypto.Cipher import AES
import win32gui, win32con

def catch_info(OO0OO0O00OOOOOO00):
    OOOO0O0OO0000OO0O = []
    for O00OO0000OO00000O in range(OO0OO0O00OOOOOO00.nrows):
        O0O00O0OO0O0O00OO = {}
        OO000O0OO00OOOO0O = OO0OO0O00OOOOOO00.row_values(O00OO0000OO00000O)
        for OO00000O00OO00000 in range(OO0OO0O00OOOOOO00.ncols):
            if type(OO000O0OO00OOOO0O[OO00000O00OO00000]) == float:
                print('数据转换')
                O0O00O0OO0O0O00OO[OO00000O00OO00000] = str(int(OO000O0OO00OOOO0O[OO00000O00OO00000]))
            else:
                O0O00O0OO0O0O00OO[OO00000O00OO00000] = OO000O0OO00OOOO0O[OO00000O00OO00000]
            OOOO0O0OO0000OO0O.append(O0O00O0OO0O0O00OO)
        else:
            return OOOO0O0OO0000OO0O


def wait_obj(OO0O00OO000O00OOO, OOO000000OO0OO0O0, OOO00OOOO00O00OO0, wait_time=5, frequent_time=0.5):
    OOOOO0O0O00O00OO0 = WebDriverWait(OO0O00OO000O00OOO, wait_time, frequent_time).until(EC.presence_of_element_located((OOO000000OO0OO0O0, OOO00OOOO00O00OO0)))
    return OOOOO0O0O00O00OO0


def top_window():
    O00O00OOOOOOO0O0O = ''
    while True:
        while O00O00OOOOOOO0O0O == '':
            OOO00O000O0OOOO0O = {}

            def O000000OO0OO000O0(OOO0O0O0OOOOOOO00, OOOO0OOOOOOOO000O):
                if win32gui.IsWindow(OOO0O0O0OOOOOOO00):
                    if win32gui.IsWindowEnabled(OOO0O0O0OOOOOOO00):
                        if win32gui.IsWindowVisible(OOO0O0O0OOOOOOO00):
                            OOO00O000O0OOOO0O.update({OOO0O0O0OOOOOOO00: win32gui.GetWindowText(OOO0O0O0OOOOOOO00)})

            win32gui.EnumWindows(O000000OO0OO000O0, 0)
            OOO0O0OO00O0O0OO0 = ''
            for O00000OO000OO00OO, OO000O0OOO0O0O00O in OOO00O000O0OOOO0O.items():
                if OO000O0OOO0O0O00O:
                    if 'Javascript自动化测试工具' in OO000O0OOO0O0O00O:
                        OOO0O0OO00O0O0OO0 = OO000O0OOO0O0O00O
                        O00O00OOOOOOO0O0O = OO000O0OOO0O0O00O

    O0O0OO00O00OO0O00 = win32gui.FindWindow(None, OOO0O0OO00O0O0OO0)
    win32gui.ShowWindow(O0O0OO00O00OO0O00, win32con.SW_SHOWNORMAL)
    win32gui.SetWindowPos(O0O0OO00O00OO0O00, win32con.HWND_TOPMOST, 1, 738, 562, 339, win32con.SWP_NOMOVE | win32con.SWP_NOACTIVATE | win32con.SWP_NOOWNERZORDER | win32con.SWP_SHOWWINDOW | win32con.SWP_NOSIZE)


def stop_listing_msg():
    global kkk
    kkk = 'e'
    fresh_btn.configure(state=NORMAL)
    driver.refresh()


def run_browser():
    global driver
    global run_num
    global sound_lock
    start_btn.configure(text='启动浏览器(启动中....)', fg='DarkGreen')
    try:
        driver.quit()
    except Exception as O0000O00OOO0OO00O:
        try:
            print(O0000O00OOO0OO00O)
        finally:
            O0000O00OOO0OO00O = None
            del O0000O00OOO0OO00O

    else:
        O00O0O0O0O000O0O0 = os.path.join(os.getcwd(), '谷歌浏览器缓存')
        OO00O0O0OOO000000 = os.path.join(os.getcwd(), 'edge浏览器缓存')
        O0OOOO000OOOO0OO0 = os.path.join(os.getcwd(), '火狐浏览器缓存')
        OOOO0O00OOOO0O000 = entry_url.get()
        if OOOO0O00OOOO0O000 == '':
            OOOO0O00OOOO0O000 = 'about:blank'
        OOO0OOOOO000O0OOO = str(browser_set.get())
    try:
        if run_num == 0:
            print(OOO0OOOOO000O0OOO)
            if '谷歌' in OOO0OOOOO000O0OOO:
                run_num += 1
                O0O000O0OOO0OO0OO = os.getcwd()
                OOOOOOOOO00OO0O00 = os.path.join(O0O000O0OOO0OO0OO, 'Drivers', '.wdm', 'drivers', 'chromedriver', 'win32')
                OOO00O0OO0OO00O00 = os.listdir(OOOOOOOOO00OO0O00)[0]
                OOOOO00OOO0O00000 = os.path.join(OOOOOOOOO00OO0O00, OOO00O0OO0OO00O00, 'chromedriver.exe')
                print(OOOOO00OOO0O00000)
                OOO0000O00O000O00 = Service(OOOOO00OOO0O00000)
                OOO0OOO0OO0OOO0OO = webdriver.ChromeOptions()
                if sound_lock == 0:
                    OOO0OOO0OO0OOO0OO.add_argument('--mute-audio')
                OOO0OOO0OO0OOO0OO.add_argument('--disable-blink-features=AutomationControlled')
                os.makedirs(O00O0O0O0O000O0O0, exist_ok=True)
                OOO0OOO0OO0OOO0OO.add_argument('--user-data-dir=' + O00O0O0O0O000O0O0)
                OOO0OOO0OO0OOO0OO.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])
                driver = webdriver.Chrome(service=OOO0000O00O000O00, options=OOO0OOO0OO0OOO0OO)
            else:
                if '微软' in OOO0OOOOO000O0OOO:
                    run_num += 1
                    O0O000O0OOO0OO0OO = os.getcwd()
                    OOOOOOOOO00OO0O00 = os.path.join(O0O000O0OOO0OO0OO, 'Drivers', '.wdm', 'drivers', 'edgedriver', 'win64')
                    OOO00O0OO0OO00O00 = os.listdir(OOOOOOOOO00OO0O00)[0]
                    OOOOO00OOO0O00000 = os.path.join(OOOOOOOOO00OO0O00, OOO00O0OO0OO00O00, 'msedgedriver.exe')
                    print(OOOOO00OOO0O00000)
                    OOO0000O00O000O00 = Service(OOOOO00OOO0O00000)
                    OOO0OOO0OO0OOO0OO = webdriver.EdgeOptions()
                    OOO0OOO0OO0OOO0OO.use_chromium = True
                    if sound_lock == 0:
                        OOO0OOO0OO0OOO0OO.add_argument('--mute-audio')
                    OOO0OOO0OO0OOO0OO.add_argument('--disable-blink-features=AutomationControlled')
                    os.makedirs(OO00O0O0OOO000000, exist_ok=True)
                    OOO0OOO0OO0OOO0OO.add_argument('user-data-dir=' + OO00O0O0OOO000000)
                    OOO0OOO0OO0OOO0OO.add_experimental_option('excludeSwitches', ['enable-automation', 'enable-logging'])
                    driver = webdriver.Edge(service=OOO0000O00O000O00, options=OOO0OOO0OO0OOO0OO)
                else:
                    if '火狐' in OOO0OOOOO000O0OOO:
                        run_num += 1
                        if not os.path.exists(O0OOOO000OOOO0OO0):
                            try:
                                os.makedirs(O0OOOO000OOOO0OO0)
                                print(f"文件夹 '{O0OOOO000OOOO0OO0}' 已成功创建。")
                            except OSError as O0000O00OOO0OO00O:
                                try:
                                    print(f"创建文件夹 '{O0OOOO000OOOO0OO0}' 失败:{O0000O00OOO0OO00O}")
                                finally:
                                    O0000O00OOO0OO00O = None
                                    del O0000O00OOO0OO00O

                        else:
                            print(f"文件夹 '{O0OOOO000OOOO0OO0}' 已存在。")
                        O0O000O0OOO0OO0OO = os.getcwd()
                        OOOOOOOOO00OO0O00 = os.path.join(O0O000O0OOO0OO0OO, 'Drivers', '.wdm', 'drivers', 'geckodriver', 'win64')
                        OOO00O0OO0OO00O00 = os.listdir(OOOOOOOOO00OO0O00)[0]
                        OOOOO00OOO0O00000 = os.path.join(OOOOOOOOO00OO0O00, OOO00O0OO0OO00O00, 'geckodriver.exe')
                        print(OOOOO00OOO0O00000)
                        OOO0000O00O000O00 = Service(OOOOO00OOO0O00000)
                        OOO0OOO0OO0OOO0OO = webdriver.FirefoxOptions()
                        if sound_lock == 0:
                            OOO0OOO0OO0OOO0OO.add_argument('--mute-audio')
                        OOO0OOO0OO0OOO0OO.add_argument('--profile')
                        OOO0OOO0OO0OOO0OO.add_argument(O0OOOO000OOOO0OO0)
                        OOO0OOO0OO0OOO0OO.add_argument('--disable-automation')
                        OOO0OOO0OO0OOO0OO.add_argument('--disable-logging')
                        driver = webdriver.Firefox(service=OOO0000O00O000O00, options=OOO0OOO0OO0OOO0OO)
            driver.set_page_load_timeout(60)
            driver.get(OOOO0O00OOOO0O000)
            print('网页打开成功')
            start_btn.configure(text='启动浏览器', fg='black')
    except Exception as O0000O00OOO0OO00O:
        try:
            print(O0000O00OOO0OO00O)
            with open('errLog.txt', 'w', encoding='utf-8') as O0OO00OO0O00O0O0O:
                O0OO00OO0O00O0O0O.write(str(O0000O00OOO0OO00O))
            if 'invalid argument' in str(O0000O00OOO0OO00O):
                messagebox.showwarning('网址错误', '请检查网址是否有误,列如:遗漏http://或者https://等情况')
                start_btn.configure(text='启动浏览器', fg='black')
            else:
                if 'failed to start' in str(O0000O00OOO0OO00O):
                    messagebox.showwarning('启动错误', '请先关闭已打开的浏览器后再重试')
                    start_btn.configure(text='启动浏览器', fg='black')
                else:
                    update_driver_btn.configure(state=NORMAL, text='———>>更新驱动<<———', fg='green', bg='gold', font=('微软雅黑',
                                                                                                                  11))
                    messagebox.showwarning('驱动不匹配', '驱动需要更新!请【更新驱动】')
                    start_btn.configure(text='启动浏览器', fg='black')
        finally:
            O0000O00OOO0OO00O = None
            del O0000O00OOO0OO00O


def origin_decrypt--- This code section failed: ---

 L. 158         0  LOAD_STR                 '6$etwbg$6*f'
                2  STORE_FAST               'O0O0000OO0OO00OO0'

 L. 159         4  SETUP_FINALLY        96  'to 96'

 L. 160         6  LOAD_FAST                'O0O0000OO0OO00OO0'
                8  STORE_FAST               'OOOOOOO00OO0OO0OO'

 L. 161        10  LOAD_FAST                'O0O000OOO00O00OO0'
               12  STORE_FAST               'O0O0000O000OO0O00'

 L. 162        14  LOAD_GLOBAL              AES
               16  LOAD_METHOD              new
               18  LOAD_GLOBAL              add_to_16
               20  LOAD_FAST                'OOOOOOO00OO0OO0OO'
               22  CALL_FUNCTION_1       1  ''
               24  LOAD_GLOBAL              AES
               26  LOAD_ATTR                MODE_ECB
               28  CALL_METHOD_2         2  ''
               30  STORE_FAST               'OOO000O0OOO000OOO'

 L. 163        32  LOAD_GLOBAL              base64
               34  LOAD_METHOD              decode=1bytes
               36  LOAD_FAST                'O0O0000O000OO0O00'
               38  LOAD_ATTR                encode
               40  LOAD_STR                 'utf-8'
               42  LOAD_CONST               ('encoding',)
               44  CALL_FUNCTION_KW_1     1  '1 total positional and keyword args'
               46  CALL_METHOD_1         1  ''
               48  STORE_FAST               'O0OOOO0OOOOOO000O'

 L. 164        50  LOAD_GLOBAL              str
               52  LOAD_FAST                'OOO000O0OOO000OOO'
               54  LOAD_METHOD              decrypt
               56  LOAD_FAST                'O0OOOO0OOOOOO000O'
               58  CALL_METHOD_1         1  ''
               60  LOAD_STR                 'utf-8'
               62  LOAD_CONST               ('encoding',)
               64  CALL_FUNCTION_KW_2     2  '2 total positional and keyword args'
               66  STORE_FAST               'OO0OO00OO00O00OO0'

 L. 165        68  LOAD_GLOBAL              base64
               70  LOAD_METHOD              b64decode=1
               72  LOAD_FAST                'OO0OO00OO00O00OO0'
               74  LOAD_METHOD              encode
               76  LOAD_STR                 'utf-8'
               78  CALL_METHOD_1         1  ''
               80  CALL_METHOD_1         1  ''
               82  LOAD_METHOD              decode=1
               84  LOAD_STR                 'utf-8'
               86  CALL_METHOD_1         1  ''
               88  STORE_FAST               'OO0OO00OO00O00OO0'

 L. 166        90  LOAD_FAST                'OO0OO00OO00O00OO0'
               92  POP_BLOCK        
               94  RETURN_VALUE     
             96_0  COME_FROM_FINALLY     4  '4'

 L. 167        96  DUP_TOP          
               98  LOAD_GLOBAL              Exception
              100  COMPARE_OP               exception-match
              102  POP_JUMP_IF_FALSE   142  'to 142'
              104  POP_TOP          
              106  STORE_FAST               'O0000O000OO0OOO0O'
              108  POP_TOP          
              110  SETUP_FINALLY       130  'to 130'

 L. 168       112  LOAD_GLOBAL              print
              114  LOAD_FAST                'O0000O000OO0OOO0O'
              116  CALL_FUNCTION_1       1  ''
              118  POP_TOP          

 L. 169       120  POP_BLOCK        
              122  POP_EXCEPT       
              124  CALL_FINALLY        130  'to 130'
              126  LOAD_STR                 'err'
              128  RETURN_VALUE     
            130_0  COME_FROM           124  '124'
            130_1  COME_FROM_FINALLY   110  '110'
              130  LOAD_CONST               None
              132  STORE_FAST               'O0000O000OO0OOO0O'
              134  DELETE_FAST              'O0000O000OO0OOO0O'
              136  END_FINALLY      
              138  POP_EXCEPT       
              140  JUMP_FORWARD        144  'to 144'
            142_0  COME_FROM           102  '102'
              142  END_FINALLY      
            144_0  COME_FROM           140  '140'

Parse error at or near `POP_EXCEPT' instruction at offset 122


def start_js--- This code section failed: ---

 L. 184         0  LOAD_GLOBAL              textPad
                2  LOAD_METHOD              get
                4  LOAD_STR                 '1.0'
                6  LOAD_STR                 'end-1c'
                8  CALL_METHOD_2         2  ''
               10  STORE_FAST               'O0OOOOOOOOOOO000O'

 L. 185        12  LOAD_FAST                'O0OOOOOOOOOOO000O'
               14  LOAD_STR                 ''
               16  COMPARE_OP               !=
            18_20  POP_JUMP_IF_FALSE   438  'to 438'

 L. 186        22  LOAD_STR                 '|*-*||*-*||*-*||*-*||*-*||*-*||*-*|'
               24  STORE_FAST               'O00O00OOO0OOOO0O0'
             26_0  COME_FROM           124  '124'
             26_1  COME_FROM            98  '98'
             26_2  COME_FROM            52  '52'

 L. 188        26  LOAD_GLOBAL              origin_decrypt
               28  LOAD_FAST                'O0OOOOOOOOOOO000O'
               30  CALL_FUNCTION_1       1  ''
               32  STORE_FAST               'OO0000OO0OO000OOO'

 L. 189        34  LOAD_FAST                'OO0000OO0OO000OOO'
               36  LOAD_STR                 ''
               38  COMPARE_OP               ==
               40  POP_JUMP_IF_TRUE    126  'to 126'
               42  LOAD_FAST                'OO0000OO0OO000OOO'
               44  LOAD_STR                 'err'
               46  COMPARE_OP               ==
               48  POP_JUMP_IF_FALSE    54  'to 54'

 L. 190        50  JUMP_FORWARD        126  'to 126'
               52  JUMP_LOOP            26  'to 26'
             54_0  COME_FROM            48  '48'

 L. 192        54  LOAD_FAST                'OO0000OO0OO000OOO'
               56  LOAD_METHOD              split
               58  LOAD_STR                 '\n'
               60  CALL_METHOD_1         1  ''
               62  STORE_FAST               'O000OO0OOO00OOOOO'

 L. 193        64  LOAD_STR                 '$s加密状态'
               66  LOAD_FAST                'O000OO0OOO00OOOOO'
               68  LOAD_CONST               -1
               70  BINARY_SUBSCR    
               72  COMPARE_OP               in
               74  POP_JUMP_IF_FALSE   100  'to 100'

 L. 194        76  LOAD_FAST                'O000OO0OOO00OOOOO'
               78  LOAD_METHOD              pop
               80  CALL_METHOD_0         0  ''
               82  STORE_FAST               'O00O00OOO0OOOO0O0'

 L. 195        84  LOAD_STR                 '\n'
               86  LOAD_METHOD              join
               88  LOAD_FAST                'O000OO0OOO00OOOOO'
               90  CALL_METHOD_1         1  ''
               92  STORE_FAST               'O0O0O000O0OOOO000'

 L. 196        94  LOAD_FAST                'O0O0O000O0OOOO000'
               96  STORE_FAST               'O0OOOOOOOOOOO000O'
               98  JUMP_LOOP            26  'to 26'
            100_0  COME_FROM            74  '74'

 L. 198       100  LOAD_FAST                'O000OO0OOO00OOOOO'
              102  LOAD_METHOD              pop
              104  CALL_METHOD_0         0  ''
              106  STORE_FAST               'O00O00OOO0OOOO0O0'

 L. 199       108  LOAD_STR                 '\n'
              110  LOAD_METHOD              join
              112  LOAD_FAST                'O000OO0OOO00OOOOO'
              114  CALL_METHOD_1         1  ''
              116  STORE_FAST               'O0O0O000O0OOOO000'

 L. 200       118  LOAD_FAST                'O0O0O000O0OOOO000'
              120  STORE_FAST               'O0OOOOOOOOOOO000O'

 L. 201       122  JUMP_FORWARD        126  'to 126'
              124  JUMP_LOOP            26  'to 26'
            126_0  COME_FROM           122  '122'
            126_1  COME_FROM            50  '50'
            126_2  COME_FROM            40  '40'

 L. 202       126  LOAD_GLOBAL              print
              128  LOAD_FAST                'O00O00OOO0OOOO0O0'
              130  CALL_FUNCTION_1       1  ''
              132  POP_TOP          

 L. 203       134  LOAD_FAST                'O00O00OOO0OOOO0O0'
              136  LOAD_METHOD              split
              138  LOAD_STR                 '|*-*|'
              140  CALL_METHOD_1         1  ''
              142  STORE_FAST               'O0O00OO00OO00O0OO'

 L. 204       144  LOAD_GLOBAL              print
              146  LOAD_FAST                'O0O00OO00OO00O0OO'
              148  CALL_FUNCTION_1       1  ''
              150  POP_TOP          

 L. 205       152  LOAD_STR                 'yes'
              154  STORE_FAST               'O0O0OO0O0OOOO0O00'

 L. 206       156  LOAD_FAST                'O0O00OO00OO00O0OO'
              158  LOAD_CONST               2
              160  BINARY_SUBSCR    
              162  LOAD_STR                 ''
              164  COMPARE_OP               !=
              166  POP_JUMP_IF_FALSE   210  'to 210'

 L. 207       168  LOAD_FAST                'O0O00OO00OO00O0OO'
              170  LOAD_CONST               2
              172  BINARY_SUBSCR    
              174  LOAD_GLOBAL              str
              176  LOAD_GLOBAL              win32api
              178  LOAD_METHOD              GetVolumeInformation
              180  LOAD_STR                 'C:\\'
              182  CALL_METHOD_1         1  ''
              184  LOAD_CONST               1
              186  BINARY_SUBSCR    
              188  CALL_FUNCTION_1       1  ''
              190  COMPARE_OP               !=
              192  POP_JUMP_IF_FALSE   210  'to 210'

 L. 208       194  LOAD_STR                 'no'
              196  STORE_FAST               'O0O0OO0O0OOOO0O00'

 L. 209       198  LOAD_GLOBAL              messagebox
              200  LOAD_METHOD              showwarning
              202  LOAD_STR                 '错误提醒'
              204  LOAD_STR                 '本机特征码与代码指定特征码不匹配,无法执行'
              206  CALL_METHOD_2         2  ''
              208  POP_TOP          
            210_0  COME_FROM           192  '192'
            210_1  COME_FROM           166  '166'

 L. 210       210  LOAD_FAST                'O0O00OO00OO00O0OO'
              212  LOAD_CONST               4
              214  BINARY_SUBSCR    
              216  LOAD_STR                 ''
              218  COMPARE_OP               !=
          220_222  POP_JUMP_IF_FALSE   296  'to 296'

 L. 211       224  LOAD_GLOBAL              get_web_now_time
              226  CALL_FUNCTION_0       0  ''
              228  STORE_FAST               'OO0O000OO0OO0OO00'

 L. 212       230  LOAD_GLOBAL              webtime
              232  LOAD_GLOBAL              int
              234  LOAD_FAST                'O0O00OO00OO00O0OO'
              236  LOAD_CONST               4
              238  BINARY_SUBSCR    
              240  CALL_FUNCTION_1       1  ''
              242  BINARY_SUBTRACT  
              244  LOAD_CONST               0
              246  COMPARE_OP               >
          248_250  POP_JUMP_IF_FALSE   270  'to 270'

 L. 213       252  LOAD_GLOBAL              messagebox
              254  LOAD_METHOD              showwarning
              256  LOAD_STR                 '过期提示'
              258  LOAD_STR                 '代码已过期,无法执行'
              260  CALL_METHOD_2         2  ''
              262  POP_TOP          

 L. 214       264  LOAD_STR                 'no'
              266  STORE_FAST               'O0O0OO0O0OOOO0O00'
              268  JUMP_FORWARD        296  'to 296'
            270_0  COME_FROM           248  '248'

 L. 215       270  LOAD_GLOBAL              webtime
              272  LOAD_CONST               -1
              274  COMPARE_OP               ==
          276_278  POP_JUMP_IF_FALSE   296  'to 296'

 L. 216       280  LOAD_GLOBAL              messagebox
              282  LOAD_METHOD              showwarning
              284  LOAD_STR                 '网络未连接'
              286  LOAD_STR                 '请连接网络后重试'
              288  CALL_METHOD_2         2  ''
              290  POP_TOP          

 L. 217       292  LOAD_STR                 'no'
              294  STORE_FAST               'O0O0OO0O0OOOO0O00'
            296_0  COME_FROM           276  '276'
            296_1  COME_FROM           268  '268'
            296_2  COME_FROM           220  '220'

 L. 218       296  LOAD_FAST                'O0O0OO0O0OOOO0O00'
              298  LOAD_STR                 'yes'
              300  COMPARE_OP               ==
          302_304  POP_JUMP_IF_FALSE   462  'to 462'

 L. 219       306  LOAD_GLOBAL              print
              308  LOAD_STR                 '执行代码'
              310  CALL_FUNCTION_1       1  ''
              312  POP_TOP          

 L. 220       314  SETUP_FINALLY       330  'to 330'

 L. 221       316  LOAD_GLOBAL              driver
              318  LOAD_METHOD              execute_script
              320  LOAD_FAST                'O0OOOOOOOOOOO000O'
              322  CALL_METHOD_1         1  ''
              324  POP_TOP          
              326  POP_BLOCK        
              328  JUMP_FORWARD        436  'to 436'
            330_0  COME_FROM_FINALLY   314  '314'

 L. 222       330  DUP_TOP          
              332  LOAD_GLOBAL              Exception
              334  COMPARE_OP               exception-match
          336_338  POP_JUMP_IF_FALSE   434  'to 434'
              340  POP_TOP          
              342  STORE_FAST               'O0O00O00OOOOOOOOO'
              344  POP_TOP          
              346  SETUP_FINALLY       422  'to 422'

 L. 223       348  LOAD_GLOBAL              str
              350  LOAD_FAST                'O0O00O00OOOOOOOOO'
              352  CALL_FUNCTION_1       1  ''
              354  STORE_FAST               'OOO0OOO0O0OOOO00O'

 L. 224       356  LOAD_STR                 "name 'driver' is not defined"
              358  LOAD_FAST                'OOO0OOO0O0OOOO00O'
              360  COMPARE_OP               not-in
          362_364  POP_JUMP_IF_FALSE   394  'to 394'

 L. 225       366  LOAD_GLOBAL              pyperclip
              368  LOAD_METHOD              copy
              370  LOAD_FAST                'OOO0OOO0O0OOOO00O'
              372  CALL_METHOD_1         1  ''
              374  POP_TOP          

 L. 226       376  LOAD_GLOBAL              messagebox
              378  LOAD_METHOD              showwarning
              380  LOAD_STR                 'DEBUG报错信息(代码运行出错辣o(╥﹏╥)o)'
              382  LOAD_STR                 '报错信息已复制到剪切板\n'
              384  LOAD_FAST                'OOO0OOO0O0OOOO00O'
              386  BINARY_ADD       
              388  CALL_METHOD_2         2  ''
              390  POP_TOP          
              392  JUMP_FORWARD        418  'to 418'
            394_0  COME_FROM           362  '362'

 L. 228       394  LOAD_GLOBAL              fresh_btn
              396  LOAD_ATTR                configure
              398  LOAD_GLOBAL              NORMAL
              400  LOAD_CONST               ('state',)
              402  CALL_FUNCTION_KW_1     1  '1 total positional and keyword args'
              404  POP_TOP          

 L. 229       406  LOAD_GLOBAL              messagebox
              408  LOAD_METHOD              showwarning
              410  LOAD_STR                 '错误提示'
              412  LOAD_STR                 '亲,请先启动浏览器,再执行代码'
              414  CALL_METHOD_2         2  ''
              416  POP_TOP          
            418_0  COME_FROM           392  '392'
              418  POP_BLOCK        
              420  BEGIN_FINALLY    
            422_0  COME_FROM_FINALLY   346  '346'
              422  LOAD_CONST               None
              424  STORE_FAST               'O0O00O00OOOOOOOOO'
              426  DELETE_FAST              'O0O00O00OOOOOOOOO'
              428  END_FINALLY      
              430  POP_EXCEPT       
              432  JUMP_FORWARD        436  'to 436'
            434_0  COME_FROM           336  '336'
              434  END_FINALLY      
            436_0  COME_FROM           432  '432'
            436_1  COME_FROM           328  '328'
              436  JUMP_FORWARD        462  'to 462'
            438_0  COME_FROM            18  '18'

 L. 231       438  LOAD_GLOBAL              fresh_btn
              440  LOAD_ATTR                configure
              442  LOAD_GLOBAL              NORMAL
              444  LOAD_CONST               ('state',)
              446  CALL_FUNCTION_KW_1     1  '1 total positional and keyword args'
              448  POP_TOP          

 L. 232       450  LOAD_GLOBAL              messagebox
              452  LOAD_METHOD              showwarning
              454  LOAD_STR                 '错误提示'
              456  LOAD_STR                 '亲,请先编写 或 导入 代码'
              458  CALL_METHOD_2         2  ''
              460  POP_TOP          
            462_0  COME_FROM           436  '436'
            462_1  COME_FROM           302  '302'

Parse error at or near `LOAD_GLOBAL' instruction at offset 126


try:
    _thread.start_new_thread(top_window, ())
    print('\n创建转换进程...')
except:
    print('erro')
else:

    def load_sysSet():
        if os.path.exists('sysSet.ini') == False:
            with open('sysSet.ini', 'w', encoding='utf-8') as O0OOOO0O00O0OO0O0:
                O0OOOO0O00O0OO0O0.write('')
            O0OOO00O0O00O00O0 = []
        else:
            with open('sysSet.ini', 'r', encoding='utf-8') as O0OOOO0O00O0OO0O0:
                O0OOO00O0O00O00O0 = O0OOOO0O00O0OO0O0.read().splitlines()
        return O0OOO00O0O00O00O0


    sysSet = load_sysSet()
    if sysSet != []:
        try:
            urlSet = sysSet[0]
        except Exception:
            urlSet = ''

        try:
            browserSet = sysSet[1]
        except Exception:
            browserSet = '浏览器引擎:微软Edge浏览器'

    else:
        urlSet = ''
        browserSet = '浏览器引擎:微软Edge浏览器'

    def save_set():
        O000O0O0O0O0OOO00 = str(entry_url.get())
        O0O0O0OOOO00OOOO0 = str(browser_set.get())
        OOO000OOO00O00O00 = str(O000O0O0O0O0OOO00) + '\n' + str(O0O0O0OOOO00OOOO0)
        with open('sysSet.ini', 'w', encoding='utf-8') as O000OO000O0000OO0:
            O000OO000O0000OO0.write(OOO000OOO00O00O00)
        print('saved')


    run_num = 0
    run_listen_num = 0
    win = Tk()
    win.resizable(0, 0)
    win.title('Javascript自动化测试工具')
    win.configure(bg='white')
    cwd = os.getcwd()
    icon_path = os.path.join(cwd, 'icon', 'a', 'porcupine.ico')
    win.iconbitmap(icon_path)

    def run_login():
        global run_num
        save_set()
        run_num = 0
        if run_num == 0:
            _thread.start_new_thread(run_browser, ())
        else:
            messagebox.showwarning('提示', '网页只能打开1次,请重启软件后再点击')


    def run_listen():
        global run_listen_num
        save_set()
        if run_listen_num == 0:
            fresh_btn.configure(state=DISABLED)
            _thread.start_new_thread(start_js, ())


    def fresh_list():
        _thread.start_new_thread(got_group_list, ())


    edit_lock = 0

    def switch_edit():
        global edit_lock
        global info_lock
        save_set()
        if edit_lock == 0:
            edit_lock = 1
            e_frame.pack(side='left', fill='x', pady=3, padx=1)
            edit_script.unbind('<Leave>')
        else:
            edit_lock = 0
            e_frame.pack_forget()
            edit_script.bind('<Leave>', lambda O00OO00OOOOOOO0O0: edit_script.configure(bg=btn_bg, fg='black')
)
            info_lock = 0
            code_info_frame.pack_forget()
            code_info_btn.configure(bg='white')


    main_width = 30
    edit_width = 50
    font_set = ('微软雅黑', 11)
    btn_bg = 'white'
    main_frame = Frame(win, width=main_width, bg='white')
    main_frame.pack(side='left', fill='x', pady=3, padx=1)

    def show_content(O0O000O0OOO000O0O):
        entry_url.config(show='')


    def hide_content(O000OOO0000000OO0):
        entry_url.config(show='-')


    url_frame = LabelFrame(main_frame, text='网址设置', width=400, bg='white')
    url_frame.pack(side='top', fill='x', pady=3, padx=1)
    entry_url = Entry(url_frame, width=main_width, show='-')
    entry_url.insert(0, urlSet)
    entry_url.pack(side='top', fill='x', pady=3, padx=1)
    entry_url.bind('<Button-1>', show_content)
    entry_url.bind('<FocusOut>', hide_content)
    start_btn = Button(main_frame, text='启动浏览器', relief='groove', width=main_width, command=run_login, bg=btn_bg, font=font_set)
    start_btn.pack(side='top', fill='x', pady=3, padx=1)

    def get_info--- This code section failed: ---

 L. 331         0  LOAD_FAST                'O0O0000OO0O0OO0O0'
                2  STORE_FAST               'OOO000OO0O000O0OO'
              4_0  COME_FROM           110  '110'
              4_1  COME_FROM            84  '84'
              4_2  COME_FROM            30  '30'

 L. 333         4  LOAD_GLOBAL              origin_decrypt
                6  LOAD_FAST                'OOO000OO0O000O0OO'
                8  CALL_FUNCTION_1       1  ''
               10  STORE_FAST               'O0O0O00OO000O0O00'

 L. 334        12  LOAD_FAST                'O0O0O00OO000O0O00'
               14  LOAD_STR                 ''
               16  COMPARE_OP               ==
               18  POP_JUMP_IF_TRUE    112  'to 112'
               20  LOAD_FAST                'O0O0O00OO000O0O00'
               22  LOAD_STR                 'err'
               24  COMPARE_OP               ==
               26  POP_JUMP_IF_FALSE    32  'to 32'

 L. 335        28  JUMP_FORWARD        112  'to 112'
               30  JUMP_LOOP             4  'to 4'
             32_0  COME_FROM            26  '26'

 L. 337        32  LOAD_FAST                'O0O0O00OO000O0O00'
               34  LOAD_METHOD              split
               36  LOAD_STR                 '\n'
               38  CALL_METHOD_1         1  ''
               40  STORE_FAST               'O0OOOOOO0O00O0O00'

 L. 338        42  LOAD_GLOBAL              print
               44  LOAD_FAST                'O0OOOOOO0O00O0O00'
               46  CALL_FUNCTION_1       1  ''
               48  POP_TOP          

 L. 339        50  LOAD_STR                 '$s加密状态'
               52  LOAD_FAST                'O0OOOOOO0O00O0O00'
               54  LOAD_CONST               -1
               56  BINARY_SUBSCR    
               58  COMPARE_OP               in
               60  POP_JUMP_IF_FALSE    86  'to 86'

 L. 340        62  LOAD_FAST                'O0OOOOOO0O00O0O00'
               64  LOAD_METHOD              pop
               66  CALL_METHOD_0         0  ''
               68  STORE_FAST               'OO0O0OOOOO00O0O0O'

 L. 341        70  LOAD_STR                 '\n'
               72  LOAD_METHOD              join
               74  LOAD_FAST                'O0OOOOOO0O00O0O00'
               76  CALL_METHOD_1         1  ''
               78  STORE_FAST               'O000OO0O0000OO000'

 L. 342        80  LOAD_FAST                'O000OO0O0000OO000'
               82  STORE_FAST               'OOO000OO0O000O0OO'
               84  JUMP_LOOP             4  'to 4'
             86_0  COME_FROM            60  '60'

 L. 344        86  LOAD_FAST                'O0OOOOOO0O00O0O00'
               88  LOAD_METHOD              pop
               90  CALL_METHOD_0         0  ''
               92  STORE_FAST               'OO0O0OOOOO00O0O0O'

 L. 345        94  LOAD_STR                 '\n'
               96  LOAD_METHOD              join
               98  LOAD_FAST                'O0OOOOOO0O00O0O00'
              100  CALL_METHOD_1         1  ''
              102  STORE_FAST               'O000OO0O0000OO000'

 L. 346       104  LOAD_FAST                'O000OO0O0000OO000'
              106  STORE_FAST               'OOO000OO0O000O0OO'

 L. 347       108  JUMP_FORWARD        112  'to 112'
              110  JUMP_LOOP             4  'to 4'
            112_0  COME_FROM           108  '108'
            112_1  COME_FROM            28  '28'
            112_2  COME_FROM            18  '18'

 L. 348       112  LOAD_GLOBAL              print
              114  LOAD_FAST                'OO0O0OOOOO00O0O0O'
              116  CALL_FUNCTION_1       1  ''
              118  POP_TOP          

 L. 349       120  LOAD_FAST                'OO0O0OOOOO00O0O0O'
              122  LOAD_METHOD              split
              124  LOAD_STR                 '|*-*|'
              126  CALL_METHOD_1         1  ''
              128  STORE_FAST               'O0O0OOOOO0OOOO0OO'

 L. 350       130  LOAD_FAST                'O0O0OOOOO0OOOO0OO'
              132  RETURN_VALUE     
               -1  RETURN_LAST      

Parse error at or near `JUMP_FORWARD' instruction at offset 108


    def load_code():
        global edit_lock
        try:
            O0O0O000OOOOOO00O = os.getcwd()
            OOO0O0000OOOO0OO0 = os.path.join(O0O0O000OOOOOO00O, '代码仓库')
            OO0OOOO00000000OO = filedialog.askopenfilename(initialdir=OOO0O0000OOOO0OO0, filetypes=[('JSC', '.jsc')])
            with open(OO0OOOO00000000OO, 'r', encoding='utf-8') as O0OO0O0O0O00OOO0O:
                O00OOO0O0000OOOO0 = O0OO0O0O0O00OOO0O.read()
            textPad.delete('1.0', END)
            textPad.insert('1.0', O00OOO0O0000OOOO0)
            O00O0O000O0O0OOO0 = get_info(O00OOO0O0000OOOO0)
            print(O00O0O000O0O0OOO0)
            entry_expire.delete(0, END)
            entry_expire.insert(0, O00O0O000O0O0OOO0[3])
            entry_author.delete(0, END)
            entry_author.insert(0, O00O0O000O0O0OOO0[5])
            entry_contact.delete(0, END)
            entry_contact.insert(0, O00O0O000O0O0OOO0[6])
            describe_Pad.delete('1.0', END)
            describe_Pad.insert('1.0', O00O0O000O0O0OOO0[7].replace('[回车]', '\n'))
            if edit_lock == 0:
                edit_lock = 1
                e_frame.pack(side='left', fill='x', pady=3, padx=1)
                edit_script.configure(bg='skyblue', fg='white')
                edit_script.unbind('<Leave>')
        except Exception as O0OO0O0O0O0000O00:
            try:
                print(O0OO0O0O0O0000O00)
            finally:
                O0OO0O0O0O0000O00 = None
                del O0OO0O0O0O0000O00


    load_script = Button(main_frame, text='导入代码', relief='groove', width=main_width, bg=btn_bg, font=font_set, command=load_code)
    load_script.pack(side='top', fill='x', pady=3, padx=1)
    edit_script = Button(main_frame, text='编辑代码', relief='groove', width=main_width, command=switch_edit, bg=btn_bg, font=font_set)
    edit_script.pack(side='top', fill='x', pady=3, padx=1)
    fresh_btn = Button(main_frame, text='执行代码', relief='groove', width=main_width, command=run_listen, bg=btn_bg, font=font_set)
    fresh_btn.pack(side='top', fill='x', pady=3, padx=1)
    fresh_btn2 = Button(main_frame, text='停止执行', relief='groove', width=main_width, command=stop_listing_msg, bg=btn_bg, font=font_set)
    fresh_btn2.pack(side='top', fill='x', pady=3, padx=1)

    def switch_to_next_window():
        O000OOOOOOO0O0O0O = driver.window_handles
        if len(O000OOOOOOO0O0O0O) > 1:
            fresh_btn.configure(state=NORMAL)
            OOO0OO0OO0000000O = driver.current_window_handle
            O0OO00O0O00O00OO0 = O000OOOOOOO0O0O0O.index(OOO0OO0OO0000000O)
            O00000O0000OO00OO = (O0OO00O0O00O00OO0 + 1) % len(O000OOOOOOO0O0O0O)
            OOOOOOO00O000OOO0 = O000OOOOOOO0O0O0O[O00000O0000OO00OO]
            driver.switch_to.window(OOOOOOO00O000OOO0)
            driver.execute_script("alert('主程序已切换到当前浏览器窗口标签,您执行的代码将在此标签下运行');")


    sound_lock = 0

    def sound_switch():
        global sound_lock
        if sound_lock == 0:
            sound_lock = 1
            sound_btn.configure(text='关闭声音')
        else:
            sound_lock = 1
            sound_btn.configure(text='开启声音')


    sound_btn = Button(main_frame, text='打开声音', relief='groove', width=main_width, command=sound_switch, bg=btn_bg, font=font_set)
    sound_btn.pack(side='top', fill='x', pady=3, padx=1)

    def switch_to_next_window_thread():
        _thread.start_new_thread(switch_to_next_window, ())


    switch_btn = Button(main_frame, text='切换浏览器标签页', relief='groove', width=main_width, command=switch_to_next_window_thread, bg=btn_bg, font=font_set)
    switch_btn.pack(side='top', fill='x', pady=3, padx=1)
    switch_btn.bind('<Enter>', lambda O00O0OO0O000OO0OO: switch_btn.configure(bg='lightsteelblue', fg='white')
)
    switch_btn.bind('<Leave>', lambda O0OO0000OOOOO0OOO: switch_btn.configure(bg=btn_bg, fg='black')
)

    def update_driver_thread():
        _thread.start_new_thread(update_driver, ())


    def show_c_num_id():
        OOO00OOO0OO00OOO0 = str(win32api.GetVolumeInformation('C:\\')[1])
        pyperclip.copy(OOO00OOO0OO00OOO0)
        messagebox.showwarning('机器特征码', '您的机器特征码为:' + OOO00OOO0OO00OOO0 + '\n已复制到剪切板')


    show_c_num = Button(main_frame, text='机器特征码复制', relief='groove', width=main_width, command=show_c_num_id, bg=btn_bg, font=font_set)
    show_c_num.pack(side='top', fill='x', pady=3, padx=1)
    start_btn.bind('<Enter>', lambda OOOO000OO000OO000: start_btn.configure(bg='red', fg='white')
)
    start_btn.bind('<Leave>', lambda O0OO000OOO00OO0O0: start_btn.configure(bg=btn_bg, fg='black')
)
    load_script.bind('<Enter>', lambda O0O0O0O0OO0000OO0: load_script.configure(bg='coral', fg='white')
)
    load_script.bind('<Leave>', lambda OOO0O000OO0OO00O0: load_script.configure(bg=btn_bg, fg='black')
)
    edit_script.bind('<Enter>', lambda O0000OOO0O0000O0O: edit_script.configure(bg='skyblue', fg='white')
)
    edit_script.bind('<Leave>', lambda O0OOO0O000OO0O0O0: edit_script.configure(bg=btn_bg, fg='black')
)
    fresh_btn.bind('<Enter>', lambda O00O0O0O0OO0O0OOO: fresh_btn.configure(bg='mediumseagreen', fg='white')
)
    fresh_btn.bind('<Leave>', lambda OO0OOOO0O00O0O00O: fresh_btn.configure(bg=btn_bg, fg='black')
)
    fresh_btn2.bind('<Enter>', lambda O000O0O0O0OOOOO0O: fresh_btn2.configure(bg='pink', fg='white')
)
    fresh_btn2.bind('<Leave>', lambda OO0O000O0OOO0OO00: fresh_btn2.configure(bg=btn_bg, fg='black')
)
    show_c_num.bind('<Enter>', lambda OOO0O0O0OOO0O0000: show_c_num.configure(bg='mediumaquamarine', fg='white')
)
    show_c_num.bind('<Leave>', lambda O0O000OOO00O00O00: show_c_num.configure(bg=btn_bg, fg='black')
)
    sound_btn.bind('<Enter>', lambda OOOO0OOO0O000OOO0: sound_btn.configure(bg='orchid', fg='white')
)
    sound_btn.bind('<Leave>', lambda OO00OOOOOOO000OOO: sound_btn.configure(bg=btn_bg, fg='black')
)
    e_frame = Frame(win, width=edit_width, bg='white')
    e_frame.pack(side='left', fill='both', expand='yes', pady=3, padx=1, anchor='nw')
    e_frame.pack_forget()
    edit_frame = LabelFrame(e_frame, text='JavaScript代码编辑区', width=edit_width, bg='white')
    edit_frame.pack(side='top', fill='both', expand='yes', pady=3, padx=1, anchor='nw')
    textPad = ScrolledText(edit_frame, width=edit_width, height=20, bg='white', fg='black', font=('黑体',
                                                                                                  14))
    textPad.pack(side='top', fill='both', expand='yes', pady=3, padx=1, anchor=N)

    def save_code():
        OO00OOO000000OOOO = textPad.get('1.0', END)
        if OO00OOO000000OOOO != '':
            OOOO0OO0O00O0O0O0 = os.getcwd()
            OO00OO0O000O0OOO0 = os.path.join(OOOO0OO0O00O0O0O0, '代码仓库')
            OOOO00O000000OO0O = filedialog.asksaveasfilename(initialdir=OO00OO0O000O0OOO0, filetypes=[('JSC', '.jsc')])
            if '.jsc' not in OOOO00O000000OO0O:
                OOOO00O000000OO0O += '.jsc'
            with open(OOOO00O000000OO0O, 'w', encoding='utf-8') as O00OO00OO0O0OO0OO:
                O00OO00OO0O0OO0OO.write(OO00OOO000000OOOO)


    def decrypt_oralce():
        O0O0000OO0O0O0O0O = '6$etwbg$6*f'
        O00O000O00OOO0OO0 = str(entry_jm.get())
        OOO00O0O0OO0O000O = len(O00O000O00OOO0OO0)
        if OOO00O0O0OO0O000O == 0:
            print('不用解密')
        else:
            pass
        try:
            O000OOOOO00O0O0OO = O0O0000OO0O0O0O0O
            O0OO0OOOOO00O0OO0 = textPad.get('1.0', END)
            O0O0OO000000OO00O = AES.new(add_to_16(O000OOOOO00O0O0OO), AES.MODE_ECB)
            O00OOO0O0OO0O0O00 = base64.decode=1bytes(O0OO0OOOOO00O0OO0.encode(encoding='utf-8'))
            O00O0OOO000OO0O00 = str((O0O0OO000000OO00O.decrypt(O00OOO0O0OO0O0O00)), encoding='utf-8')
            O00O0OOO000OO0O00 = base64.b64decode=1(O00O0OOO000OO0O00.encode('utf-8')).decode=1('utf-8')
            O0OOO0O0O00OOO00O = O00O0OOO000OO0O00.split('\n')
            if O00O000O00OOO0OO0 in O0OOO0O0O00OOO00O[-1]:
                O0OOO0O0O00OOO00O.pop()
                O0OOO0O0O00OOO00O.pop()
                O0OOOOO0000OOOOOO = '\n'.join(O0OOO0O0O00OOO00O)
                textPad.delete('1.0', END)
                textPad.insert('1.0', O0OOOOO0000OOOOOO)
                messagebox.showwarning('解密成功', '成功!若为多重加密,可继续解密')
            else:
                messagebox.showwarning('解密失败', '您输入的秘钥错误')
        except Exception:
            messagebox.showwarning('解密失败', '您输入的秘钥错误')


    def add_to_16(OO0O0OOOOO0OOOO0O):
        while True:
            if len(OO0O0OOOOO0OOOO0O) % 16 != 0:
                OO0O0OOOOO0OOOO0O += '\x00'

        return str.encode(OO0O0OOOOO0OOOO0O)


    def encrypt_oracle():
        try:
            O0000OO000OO00O0O = str(win32api.GetVolumeInformation('C:\\')[1])
            OOO00O0O00O00O0OO = str(entry_tz.get())
            OO00O00O000O0OOO0 = str(entry_expire.get())
            if OO00O00O000O0OOO0 != '':
                OOO000O0O00000000 = OO00O00O000O0OOO0 + ' 23:59:59'
                O00O00OOOO0OO00O0 = time.strptime(OOO000O0O00000000, '%Y-%m-%d %H:%M:%S')
                O0O0OO00OO0O0O00O = str(int(time.mktime(O00O00OOOO0OO00O0)))
            else:
                O0O0OO00OO0O0O00O = ''
            OO0O0O0000OO0O000 = '6$etwbg$6*f'
            O0OOO0O00O00OO00O = str(entry_jm.get())
            O000O000OOO0O0000 = len(O0OOO0O00O00OO00O)
            OOO00OOOOO0OOO00O = str(entry_author.get())
            O0OOOO000OOO0O000 = str(entry_contact.get())
            O00O00OOOO0000OOO = str(describe_Pad.get('1.0', END)).replace('\n', '[回车]')
            if O000O000OOO0O0000 == 0:
                print('不用加密')
            else:
                O0000O0O0000OO0O0 = OO0O0O0000OO0O000
                OO00OOO0O0000OO0O = textPad.get('1.0', END) + '\n' + '$s加密状态|*-*|' + O0OOO0O00O00OO00O + '|*-*|' + OOO00O0O00O00O0OO + '|*-*|' + OO00O00O000O0OOO0 + '|*-*|' + O0O0OO00OO0O0O00O + '|*-*|' + OOO00OOOOO0OOO00O + '|*-*|' + O0OOOO000OOO0O000 + '|*-*|' + O00O00OOOO0000OOO + '|*-*|' + O0000OO000OO00O0O
                OO00O0000O0O0OO00 = base64.b64encode(OO00OOO0O0000OO0O.encode('utf-8')).decode=1('ascii')
                OO0O000O000000000 = AES.new(add_to_16(O0000O0O0000OO0O0), AES.MODE_ECB)
                OOOOO00O000OOOOOO = OO0O000O000000000.encrypt(add_to_16(OO00O0000O0O0OO00))
                O00O0000OO000OO0O = str((base64.encodebytes(OOOOO00O000OOOOOO)), encoding='utf-8')
                textPad.delete('1.0', END)
                textPad.insert('1.0', O00O0000OO000OO0O)
        except Exception:
            messagebox.showwarning('到期时间格式错误', '格式错误!\n时间格式示列:2023-05-01\n同时请核对该月是否有31号')


    def clear_text():
        textPad.delete('1.0', END)
        entry_jm.delete('0', END)
        entry_tz.delete('0', END)
        entry_expire.delete('0', END)
        entry_author.delete('0', END)
        entry_contact.delete('0', END)
        describe_Pad.delete('1.0', END)


    jm_frame = Frame(e_frame, bg='white', width=15)
    jm_frame.pack(side='top', pady=3, padx=1, ipadx=1, anchor='nw')
    jm_label = Label(jm_frame, text='加密/解密-秘钥:', bg='white', relief=GROOVE)
    jm_label.pack(side='left', pady=3, padx=1)
    entry_jm = Entry(jm_frame, width=15, show='*', relief=GROOVE, bg='white')
    entry_jm.pack(side='left', pady=3, padx=1)
    tz_label = Label(jm_frame, text='绑定机器特征码:', bg='white', relief=GROOVE)
    tz_label.pack(side='left', pady=3, padx=1)
    entry_tz = Entry(jm_frame, width=15, relief=GROOVE, bg='white')
    entry_tz.pack(side='left', pady=3, padx=1)
    expire_label = Label(jm_frame, text='代码过期时间:', bg='white', relief=GROOVE)
    expire_label.pack(side='left', pady=3, padx=1)
    entry_expire = Entry(jm_frame, width=15, relief=GROOVE, bg='white')
    entry_expire.pack(side='left', pady=3, padx=1)
    jm_btn_frame = Frame(e_frame, bg='white', width=15)
    jm_btn_frame.pack(side='top', pady=3, padx=1, ipadx=1, anchor='nw')

    def show_help():
        messagebox.showwarning('使用说明', '①秘钥:用于加密和解密源代码,若不填则不能加密\n②绑定机器特征码:可不填,填写后则只有指定特征码的计算机能够运行代码\n③代码过期时间:可不填,填写后则代码只能在设定日期前使用,时间格式示列:2023-05-20\n④要进行代码加密则秘钥为必填项,否则填写的特征码和过期时间均无效\n⑤解密代码只需要填写秘钥即可,无需填写特征码和过期时间')


    help_btn = Button(jm_btn_frame, text='使用说明', relief='groove', width=10, bg='aliceblue', command=show_help)
    help_btn.pack(side='left', pady=3, padx=15)
    e_jm_btn = Button(jm_btn_frame, text='加密', relief='groove', width=10, bg='white', command=encrypt_oracle)
    e_jm_btn.pack(side='left', pady=3, padx=15)
    e_unjm_btn = Button(jm_btn_frame, text='解密', relief='groove', width=10, bg='white', command=decrypt_oralce)
    e_unjm_btn.pack(side='left', pady=3, padx=15)
    e_clear_btn = Button(jm_btn_frame, text='清空', relief='groove', width=10, bg='white', command=clear_text)
    e_clear_btn.pack(side='left', pady=3, padx=15)
    e_save_btn = Button(jm_btn_frame, text='保存', relief='groove', width=10, bg='white', command=save_code)
    e_save_btn.pack(side='left', pady=3, padx=15)
    info_lock = 0

    def info_show():
        global info_lock
        if info_lock == 0:
            info_lock = 1
            code_info_frame.pack(side='left', fill='both', expand='yes', pady=3, padx=1, anchor='nw')
            code_info_btn.configure(bg='royalblue')
        else:
            info_lock = 0
            code_info_frame.pack_forget()
            code_info_btn.configure(bg='white')


    code_info_frame = Frame(win, width=edit_width, bg='white')
    code_info_frame.pack(side='left', fill='both', expand='yes', pady=3, padx=1, anchor='nw')
    code_info_frame.pack_forget()
    code_info_btn = Button(jm_btn_frame, text='代码信息', relief='groove', width=10, bg='white', command=info_show)
    code_info_btn.pack(side='left', pady=3, padx=15)
    info_label = Label(code_info_frame, text='以下信息将在点击代码【加密】按钮时写入代码中', bg='white')
    info_label.pack(side='top', pady=3, padx=15)
    div_label = Label(code_info_frame, text='', bg='white')
    div_label.pack(side='top', pady=7, padx=15)
    author_label = Label(code_info_frame, text='作者:', bg='white', anchor='w')
    author_label.pack(side='top', pady=3, padx=15, anchor='w')
    entry_author = Entry(code_info_frame, text='', bg='white')
    entry_author.pack(side='top', pady=3, padx=15)
    contact_label = Label(code_info_frame, text='联系方式:', bg='white', anchor='w')
    contact_label.pack(side='top', pady=3, padx=15, anchor='w')
    entry_contact = Entry(code_info_frame, text='', bg='white')
    entry_contact.pack(side='top', pady=3, padx=15)
    describe_label = Label(code_info_frame, text='代码运行说明:', bg='white', anchor='w')
    describe_label.pack(side='top', pady=3, padx=15, anchor='w')
    describe_Pad = ScrolledText(code_info_frame, width=5, height=5, bg='white', fg='black')
    describe_Pad.pack(side='top', fill='both', expand='yes', pady=3, padx=1, anchor=N)

    def update_driver():
        save_set()

        def OOOO0OO0O0OO0OOO0():
            OOOOO0O00O000OOOO = os.getcwd()
            OOOOO0O0O00OO00O0 = os.path.join(OOOOO0O00O000OOOO, '更新驱动.exe')
            os.system(OOOOO0O0O00OO00O0)

        _thread.start_new_thread(OOOO0OO0O0OO0OOO0, ())


    update_driver_btn = Button(main_frame, text='更新驱动', relief='groove', width=main_width, command=update_driver_thread, bg=btn_bg, font=font_set)
    update_driver_btn.pack(side='top', fill='x', pady=3, padx=1)
    browser_name = StringVar()
    browser_set = ('浏览器引擎:微软Edge浏览器', '浏览器引擎:谷歌Chrome浏览器', '浏览器引擎:火狐fox浏览器')
    browser_set = ttk.Combobox(main_frame, textvariable=browser_name, values=browser_set, justify='center', font=font_set)
    browser_set.set(browserSet)
    browser_set.pack(side='top', fill='x', pady=3, padx=1)

    def open_url(O00OO000000OO0000):
        OOOO000O0OOO000OO = str(browser_set.get())
        if '谷歌' in OOOO000O0OOO000OO:
            webbrowser.open('http://npm.taobao.org/mirrors/chromedriver/', new=0)
        else:
            if '微软' in OOOO000O0OOO000OO:
                webbrowser.open(':https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/', new=0)
            else:
                if '火狐' in OOOO000O0OOO000OO:
                    webbrowser.open('https://github.com/mozilla/geckodriver/releases', new=0)


    link = Label(main_frame, text='Webdriver Download Manually', font=('Arial', 10))
    link.pack(side='top', fill='x', padx=1)
    link.bind('<Button-1>', open_url)

    def get_web_now_time--- This code section failed: ---

 L. 648         0  LOAD_CONST               0
                2  LOAD_CONST               None
                4  IMPORT_NAME              arrow
                6  STORE_FAST               'ar'

 L. 649         8  LOAD_CONST               0
               10  LOAD_CONST               None
               12  IMPORT_NAME              requests
               14  STORE_FAST               'req'

 L. 650        16  SETUP_FINALLY       126  'to 126'

 L. 651        18  LOAD_FAST                'req'
               20  LOAD_METHOD              get
               22  LOAD_STR                 'https://www.baidu.com/'
               24  CALL_METHOD_1         1  ''
               26  LOAD_ATTR                headers
               28  LOAD_STR                 'Date'
               30  BINARY_SUBSCR    
               32  STORE_FAST               'O00O0OOO00OO0O000'

 L. 652        34  LOAD_FAST                'ar'
               36  LOAD_METHOD              get
               38  LOAD_FAST                'O00O0OOO00OO0O000'
               40  LOAD_CONST               4
               42  LOAD_CONST               -4
               44  BUILD_SLICE_2         2 
               46  BINARY_SUBSCR    
               48  LOAD_STR                 'DD MMM YYYY HH:mm:ss'
               50  CALL_METHOD_2         2  ''
               52  LOAD_FAST                'ar'
               54  LOAD_METHOD              now
               56  CALL_METHOD_0         0  ''
               58  LOAD_METHOD              floor
               60  LOAD_STR                 'second'
               62  CALL_METHOD_1         1  ''
               64  BINARY_SUBTRACT  
               66  STORE_FAST               'O0OOOO0O000OO0O00'

 L. 653        68  LOAD_FAST                'ar'
               70  LOAD_METHOD              now
               72  CALL_METHOD_0         0  ''
               74  LOAD_FAST                'O0OOOO0O000OO0O00'
               76  BINARY_ADD       
               78  LOAD_METHOD              format
               80  LOAD_FAST                'time_format'
               82  CALL_METHOD_1         1  ''
               84  STORE_FAST               'O00O00OOOOO00O0OO'

 L. 654        86  LOAD_GLOBAL              time
               88  LOAD_METHOD              strptime
               90  LOAD_FAST                'O00O00OOOOO00O0OO'
               92  LOAD_CONST               None
               94  LOAD_CONST               -4
               96  BUILD_SLICE_2         2 
               98  BINARY_SUBSCR    
              100  LOAD_STR                 '%Y-%m-%d %H:%M:%S'
              102  CALL_METHOD_2         2  ''
              104  STORE_FAST               'O00OO0O0O00000O00'

 L. 655       106  LOAD_GLOBAL              int
              108  LOAD_GLOBAL              time
              110  LOAD_METHOD              mktime
              112  LOAD_FAST                'O00OO0O0O00000O00'
              114  CALL_METHOD_1         1  ''
              116  CALL_FUNCTION_1       1  ''
              118  STORE_FAST               'O0OOOO0O0OO00000O'

 L. 656       120  LOAD_FAST                'O0OOOO0O0OO00000O'
              122  POP_BLOCK        
              124  RETURN_VALUE     
            126_0  COME_FROM_FINALLY    16  '16'

 L. 657       126  DUP_TOP          
              128  LOAD_GLOBAL              BaseException
              130  COMPARE_OP               exception-match
              132  POP_JUMP_IF_FALSE   178  'to 178'
              134  POP_TOP          
              136  STORE_FAST               'OO000OO0O000OO0O0'
              138  POP_TOP          
              140  SETUP_FINALLY       166  'to 166'

 L. 658       142  LOAD_GLOBAL              print
              144  LOAD_STR                 '获取网络时间出错,出错原因:{}'
              146  LOAD_METHOD              format
              148  LOAD_FAST                'OO000OO0O000OO0O0'
              150  CALL_METHOD_1         1  ''
              152  CALL_FUNCTION_1       1  ''
              154  POP_TOP          

 L. 659       156  POP_BLOCK        
              158  POP_EXCEPT       
              160  CALL_FINALLY        166  'to 166'
              162  LOAD_CONST               -1
              164  RETURN_VALUE     
            166_0  COME_FROM           160  '160'
            166_1  COME_FROM_FINALLY   140  '140'
              166  LOAD_CONST               None
              168  STORE_FAST               'OO000OO0O000OO0O0'
              170  DELETE_FAST              'OO000OO0O000OO0O0'
              172  END_FINALLY      
              174  POP_EXCEPT       
              176  JUMP_FORWARD        180  'to 180'
            178_0  COME_FROM           132  '132'
              178  END_FINALLY      
            180_0  COME_FROM           176  '176'

Parse error at or near `POP_EXCEPT' instruction at offset 158


    webtime = get_web_now_time()

    def Secret(O00OO000000OO00OO):
        OOOOOO0O00OOOO0OO = O00OO000000OO00OO
        OOO0OO0000O0OOO00 = win32api.GetVolumeInformation('C:\\')
        OOO00OOO000O00OO0 = (str(OOO0OO0000O0OOO00[1]) + OOOOOO0O00OOOO0OO + 'javascriptYES').encode('utf-8')
        OO0O00O000OOOOOO0 = base64.b64encode(OOO00OOO000O00OO0)
        OO0000OOO00OO00O0 = hashlib.md5()
        OO0000OOO00OO00O0.update(OO0O00O000OOOOOO0)
        O00O0000OOO0O0O0O = OO0000OOO00OO00O0.hexdigest()
        O00O0000OOO0O0O0O = O00O0000OOO0O0O0O[:8]
        O00OO0000O0000O00 = O00O0000OOO0O0O0O + O00OO000000OO00OO
        return O00OO0000O0000O00


    def save_secret(O0000OO00000OOOO0):
        with open('cock.egg', 'w') as OO0000O0OO0OOO0O0:
            OO0000O0OO0OOO0O0.write(O0000OO00000OOOO0)


    def load_secret():
        with open('cock.egg', 'r') as OO0OOO0OO0O0O0O00:
            OO0O000000000000O = OO0OOO0OO0O0O0O00.read()
        return OO0O000000000000O


    def active_machine():
        O00O0OO0OOO0O0OOO = secret_entry3.get()
        OO0OOOO0000O00OOO = Secret(O00O0OO0OOO0O0OOO[8:])
        if O00O0OO0OOO0O0OOO == OO0OOOO0000O00OOO:
            if webtime - int(O00O0OO0OOO0O0OOO[8:]) > 0:
                messagebox.showwarning('过期提示', '激活码已过期,请使用正确的激活码')
            else:
                if webtime == -1:
                    messagebox.showwarning('网络未连接', '请连接网络后重试')
                else:
                    OOOOOO0O0O00O0OOO = time.localtime(int(O00O0OO0OOO0O0OOO[8:]))
                    O0000O0O0O0OO0OO0 = time.strftime('%Y年%m月%d日', OOOOOO0O0O00O0OOO)
                    lable_expire.configure(text=(O0000O0O0O0OO0OO0 + '过期'), bg='hotpink')
                    save_secret(O00O0OO0OOO0O0OOO)
                    start_btn.config(state=NORMAL)
                    load_script.configure(state=NORMAL)
                    edit_script.configure(state=NORMAL)
                    fresh_btn.configure(state=NORMAL)
                    fresh_btn2.configure(state=NORMAL)
                    switch_btn.configure(state=NORMAL)
                    lable_expire.configure(fg='white')
                    label_7.pack_forget()
                    secret_entry3.pack_forget()
                    activeBtn.pack_forget()
                    show_c_num.configure(bg='white', fg='black')
                    messagebox.showinfo('激活成功', '软件已激活,可正常使用O(∩_∩)O')
        else:
            messagebox.showwarning('激活码错误', '输入正确的激活码')


    def check_expire():
        while True:
            time.sleep(3600)
            O000OOOOOOOO0O000 = get_web_now_time()
            if os.path.exists('cock.egg') == False:
                save_secret('000000000000000000')
                O00O00OO00OO00O00 = '000000000000000000'
                O0O00O00O0O0OO000 = Secret('0000000000')
            else:
                O00O00OO00OO00O00 = load_secret()
                O0O00O00O0O0OO000 = Secret(O00O00OO00OO00O00[8:])
                while O00O00OO00OO00O00 != O0O00O00O0O0OO000 or O000OOOOOOOO0O000 - int(O00O00OO00OO00O00[8:]) > 0 or O000OOOOOOOO0O000 == -1:
                    stop_listing_msg()
                    fresh_btn.configure(state=DISABLED)
                    fresh_btn2.configure(state=DISABLED)
                    start_btn.config(state=DISABLED)
                    switch_btn.configure(state=DISABLED)
                    messagebox.showwarning('过期提示', '激活码已过期,请重新启动软件注册')

                print('自检完成,未过期')


    if os.path.exists('cock.egg') == False:
        save_secret('000000000000000000')
        local_secret = '000000000000000000'
        secret = Secret('0000000000')
    else:
        local_secret = load_secret()
        secret = Secret(local_secret[8:])
    lable_expire = Label(main_frame, text='', anchor='center', relief='groove', width=main_width, fg='white')
    lable_expire.pack(side='top', fill='x', pady=3, padx=1)
    if local_secret != secret or webtime - int(local_secret[8:]) > 0 or webtime == -1:
        lable_expire.configure(text='软件未激活', bg='white', fg='black')
        show_c_num.configure(bg='mediumaquamarine', fg='white')
        start_btn.config(state=DISABLED)
        load_script.configure(state=DISABLED)
        edit_script.configure(state=DISABLED)
        fresh_btn.configure(state=DISABLED)
        fresh_btn2.configure(state=DISABLED)
        switch_btn.configure(state=DISABLED)
        label_7 = Label(main_frame, text='输入激活码:', anchor='w', relief='groove', width=main_width)
        label_7.pack(side='top', fill='x', pady=3, padx=1)
        secret_entry3 = Entry(main_frame, width=main_width, bg='GhostWhite')
        secret_entry3.insert(0, '')
        secret_entry3.pack(side='top', fill='x', pady=3, padx=1)
        activeBtn = Button(main_frame, text='激   活', relief='groove', width=main_width, height=1, command=active_machine, bg='hotpink', fg='white')
        activeBtn.pack(side='top', fill='x', pady=3, padx=1)
        if time.time() - int(local_secret[8:]) > 0:
            messagebox.showwarning('过期提示', '激活码已过期,请重新注册')
    else:
        time_local = time.localtime(int(local_secret[8:]))
        dt = time.strftime('%Y年%m月%d日', time_local)
        lable_expire.configure(text=(dt + '过期'), bg='hotpink')
        _thread.start_new_thread(check_expire, ())

    def agree_it():
        agree_frame.pack_forget()
        main_frame.pack(side='left', fill='x', pady=3, padx=1)


    def disagree_it():
        win.destroy()


    agree_frame = Frame(win, width=main_width, bg='white')
    agree_frame.pack(side='left', fill='x', pady=3, padx=1, anchor='center')
    agreePad = ScrolledText(agree_frame, width=edit_width, height=18, bg='white', fg='black', font=('黑体',
                                                                                                    16))
    agreePad.pack(side='top', fill='both', expand='yes', pady=3, padx=1, anchor=N)
    font1 = ('黑体', 16)
    font2 = ('黑体', 14)
    font3 = ('黑体', 12)
    agreePad.insert(END, '                     使用协议\n\n    欢迎使用本工具,请您务必仔细阅读本协议,以便更好地使用本工具。\n\n一、服务说明\n\n    1.本工具是一款可在本地计算机调用浏览器执行用户编写的JavaScript代码的工具,为用户提供代码编辑器,点击“执行”按钮即可运行代码。\n\n    2.用户必须自行承担使用本工具的一切后果。\n\n    3.用户自行编写或执行的JavaScript代码不得涉及违法活动,否则一切后果由用户自行承担。\n\n二、使用规则\n\n    1.用户在使用本工具时应遵守国家法律法规、政策规定及其他相关规定。\n\n    2.用户不得利用本工具从事任何违反国家法律法规、政策规定及其他相关规定的活动。\n\n    3.用户自行编写或执行的JS代码不得涉及违法活动,否则一切后果由用户自行承担。\n\n三、免责声明\n\n    1.本工具不对用户自行编写的JS代码的正确性、合法性、安全性进行保证,如因用户自行编写的JS代码引起的任何问题均由用户自行承担。\n\n    2.用户因使用本工具而导致的任何直接或间接损失,本工具概不负责,亦不承担任何法律责任。\n\n    3.本工具不对用户因使用本工具未能达到预期效果或遭受任何非正常因素引起的损失承担任何责任。\n\n四、知识产权声明\n\n    用户不得对本工具的任何资源、信息和材料进行修改、重制、复制、抄袭、传播、出售等。\n\n五、其他条款\n\n    1.本协议未涉及的问题和争议,应参照中华人民共和国国家法律法规等规定予以处理。\n\n    2.本工具保留协议修订的权利,如果本协议有任何更改,我们将在后续版本更新中公布,一经公布即具有法律约束力,请您经常更新软件获得最新协议。\n\n    3.本协议一经点击下方确定按钮,则视为用户已经完全了解并接受了本协议的各项条款,并同意遵守相关规定。\n\n    4.本协议的解释权归本工具所有。如用户对本协议有任何疑问或建议,请联系本工具客服。\n\n', font1)
    agreePad.configure(state=DISABLED)
    choose_frame = Frame(agree_frame, width=main_width, bg='white')
    choose_frame.pack(side='top', fill='x', pady=3, padx=1, anchor='center')
    agree_btn = Button(choose_frame, text='同  意', relief='groove', bg=btn_bg, font=font_set, state=DISABLED, command=agree_it)
    agree_btn.pack(side='left', fill='x', pady=3, padx=155, anchor='center')
    disagree_btn = Button(choose_frame, text='不同意', relief='groove', bg=btn_bg, font=font_set, state=DISABLED, command=disagree_it)
    disagree_btn.pack(side='left', fill='x', pady=3, padx=1, anchor='center')
    main_frame.pack_forget()

    def wait_five():
        agree_btn.configure(text='同  意(5)')
        time.sleep(1)
        agree_btn.configure(text='同  意(4)')
        time.sleep(1)
        agree_btn.configure(text='同  意(3)')
        time.sleep(1)
        agree_btn.configure(text='同  意(2)')
        time.sleep(1)
        agree_btn.configure(text='同  意(1)')
        time.sleep(1)
        agree_btn.configure(text='同     意', state=NORMAL)
        disagree_btn.configure(state=NORMAL)


    _thread.start_new_thread(wait_five, ())
    win.mainloop()
xxx.png
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
一身白 发表于 2023-12-7 21:29 | 显示全部楼层

不懂如何在调试器中定位代码,有大哥踢我一脚 小弟学习学习
xxx.png
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

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