diff --git a/driver/connect.py b/driver/connect.py index b4be45d..56380bf 100644 --- a/driver/connect.py +++ b/driver/connect.py @@ -12,35 +12,35 @@ from pymobiledevice3.exceptions import NoDeviceConnectedError -def get_usbmux_lockdownclient(): - while True: - try: - lockdown = create_using_usbmux() - except NoDeviceConnectedError: - print("请连接设备后按回车...") - input() - else: - break - while True: - lockdown = create_using_usbmux() - if lockdown.all_values.get("PasswordProtected"): - print("请解锁设备后按回车...") - input() - else: - break - return create_using_usbmux() - -def get_version(lockdown: LockdownClient): - return lockdown.all_values.get("ProductVersion") - -def get_developer_mode_status(lockdown: LockdownClient): - return lockdown.developer_mode_status - -def reveal_developer_mode(lockdown: LockdownClient): - AmfiService(lockdown).create_amfi_show_override_path_file() - -def enable_developer_mode(lockdown: LockdownClient): - AmfiService(lockdown).enable_developer_mode() +# def get_usbmux_lockdownclient(): +# while True: +# try: +# lockdown = create_using_usbmux() +# except NoDeviceConnectedError: +# print("请连接设备后按回车...") +# input() +# else: +# break +# while True: +# lockdown = create_using_usbmux() +# if lockdown.all_values.get("PasswordProtected"): +# print("请解锁设备后按回车...") +# input() +# else: +# break +# return create_using_usbmux() + +# def get_version(lockdown: LockdownClient): +# return lockdown.all_values.get("ProductVersion") + +# def get_developer_mode_status(lockdown: LockdownClient): +# return lockdown.developer_mode_status + +# def reveal_developer_mode(lockdown: LockdownClient): +# AmfiService(lockdown).create_amfi_show_override_path_file() + +# def enable_developer_mode(lockdown: LockdownClient): +# AmfiService(lockdown).enable_developer_mode() def get_serverrsd(): install_driver_if_required() diff --git a/init/init.py b/init/init.py index de453bf..aa1465a 100644 --- a/init/init.py +++ b/init/init.py @@ -3,9 +3,11 @@ import os from driver import connect - -def init(): +from pymobiledevice3.lockdown import LockdownClient +from pymobiledevice3.services.amfi import AmfiService +def init(lockdown: LockdownClient): # check if root on mac or Administrator on windows + if sys.platform == "win32": if not ctypes.windll.shell32.IsUserAnAdmin(): print("请以管理员权限运行") @@ -18,19 +20,17 @@ def init(): print("仅支持macOS和Windows") sys.exit(1) - # get lockdown client - lockdown = connect.get_usbmux_lockdownclient() # check version - version = connect.get_version(lockdown) + version = lockdown.product_version print(f"Your system version is {version}") if version.split(".")[0] < "17": print(f"仅支持17及以上版本") sys.exit(1) # check developer mode status - developer_mode_status = connect.get_developer_mode_status(lockdown) + developer_mode_status = lockdown.developer_mode_status if not developer_mode_status: - connect.reveal_developer_mode(lockdown) + AmfiService(lockdown).create_amfi_show_override_path_file() print("您未开启开发者模式,请打开设备的 设置-隐私与安全性-开发者模式 来开启,开启后需要重启并输入密码,完成后再次运行此程序") sys.exit(1) \ No newline at end of file diff --git a/init/tunnel.py b/init/tunnel.py index 5119d90..46823dd 100644 --- a/init/tunnel.py +++ b/init/tunnel.py @@ -1,10 +1,14 @@ import asyncio import multiprocessing - +from pymobiledevice3.exceptions import NoDeviceConnectedError from driver import connect - +import sys def tunnel_proc(queue: multiprocessing.Queue): - server_rsd = connect.get_serverrsd() + try: + server_rsd = connect.get_serverrsd() + except NoDeviceConnectedError: + print("设备未连接") + sys.exit(1) asyncio.run(connect.tunnel(server_rsd, queue)) @@ -16,5 +20,5 @@ def tunnel(): # get the address and port of the tunnel address, port = queue.get() - + print(address, port) return process, address, port \ No newline at end of file diff --git a/main.py b/main.py index cb273db..ca18948 100644 --- a/main.py +++ b/main.py @@ -43,7 +43,7 @@ def main(): logger.setLevel(logging.DEBUG) coloredlogs.install(level=logging.DEBUG) - init.init() + # init.init() logger.info("init done") # start the tunnel in another process @@ -59,8 +59,9 @@ def main(): loc = route.get_route() logger.info(f"got route from {config.config.routeConfig}") - + with RemoteServiceDiscoveryService((address, port)) as rsd: + init.init(rsd.lockdown) with DvtSecureSocketProxyService(rsd) as dvt: try: print(f"已开始模拟跑步,速度大约为 {config.config.v} m/s")