main.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import subprocess
  2. import asyncio
  3. from time import sleep
  4. from pymobiledevice3.lockdown import create_using_usbmux
  5. from pymobiledevice3.services.dvt.instruments.process_control import ProcessControl
  6. from pymobiledevice3.services.installation_proxy import InstallationProxyService
  7. from pymobiledevice3.services.dvt.dvt_secure_socket_proxy import DvtSecureSocketProxyService
  8. from pymobiledevice3.services.remote_fetch_symbols import RemoteService
  9. from pymobiledevice3.remote.remote_service_discovery import RemoteServiceDiscoveryService
  10. BUNDLE_ID = 'com.laiwang.DingTalk'
  11. # >ios17 pymobiledevice3 lockdown start-tunnel
  12. # <ios17:
  13. COMMAND = 'pymobiledevice3 remote start-tunnel'
  14. async def main():
  15. try:
  16. # 使用命令方式启动管道
  17. try:
  18. # 使用 -S 参数让 sudo 从 stdin 读取密码
  19. result = subprocess.run(
  20. ["sudo", "-S"] + COMMAND.split(),
  21. input="d123456\n",
  22. text=True,
  23. capture_output=True,
  24. check=True
  25. )
  26. print("命令执行成功!")
  27. print("输出:", result)
  28. sleep(3)
  29. # 连接手机
  30. lockdown = create_using_usbmux()
  31. print("开发者模式",lockdown.developer_mode_status)
  32. # 获取钉钉-app
  33. # with InstallationProxyService(lockdown) as installer:
  34. # # 查找特定应用
  35. # ddApp = [app for app in installer.get_apps() if 'DingTalk' in app]
  36. # if len(ddApp):
  37. # print("找到包",ddApp[0])
  38. # if ddApp[0] == BUNDLE_ID:
  39. # # 打开app
  40. # with DvtSecureSocketProxyService(lockdown) as dvt:
  41. # process_control = ProcessControl(dvt)
  42. # pid = process_control.launch(BUNDLE_ID)
  43. # print("启动app",pid)
  44. # else:
  45. # print("包名不匹配")
  46. # else:
  47. # print("没找到包,请安装钉钉")
  48. except subprocess.CalledProcessError as e:
  49. print(f"命令执行失败 (退出码: {e.returncode}):")
  50. print("错误输出:", e.stderr)
  51. except ConnectionError as e:
  52. print(f"连接失败")
  53. if __name__ == '__main__':
  54. asyncio.run(main())