remove_oldicloud.py 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import socketserver
  2. import paramiko
  3. import usbmux
  4. import select
  5. from threading import Thread
  6. from socket import socket
  7. class SocketRelay(object):
  8. def __init__(self, a: socket, b: socket, max_buffer: int = 65535):
  9. self.a = a
  10. self.b = b
  11. self.atob = bytes()
  12. self.btoa = bytes()
  13. self.max_buffer = max_buffer
  14. def handle(self) -> None:
  15. while True:
  16. rlist = list()
  17. wlist = list()
  18. xlist = [self.a, self.b]
  19. if self.atob:
  20. wlist.append(self.b)
  21. if self.btoa:
  22. wlist.append(self.a)
  23. if len(self.atob) < self.max_buffer:
  24. rlist.append(self.a)
  25. if len(self.btoa) < self.max_buffer:
  26. rlist.append(self.b)
  27. rlo, wlo, xlo = select.select(rlist, wlist, xlist)
  28. if xlo:
  29. return
  30. if self.a in wlo:
  31. n = self.a.send(self.btoa)
  32. self.btoa = self.btoa[n:]
  33. if self.b in wlo:
  34. n = self.b.send(self.atob)
  35. self.atob = self.atob[n:]
  36. if self.a in rlo:
  37. s = self.a.recv(self.max_buffer - len(self.atob))
  38. if not s:
  39. return
  40. self.atob += s
  41. if self.b in rlo:
  42. s = self.b.recv(self.max_buffer - len(self.btoa))
  43. if not s:
  44. return
  45. self.btoa += s
  46. class TCPRelay(socketserver.BaseRequestHandler):
  47. def handle(self) -> None:
  48. print("Incoming connection to %d" % self.server.server_address[1])
  49. mux = usbmux.USBMux(None)
  50. print("Waiting for devices...")
  51. if not mux.devices:
  52. mux.process(1.0)
  53. if not mux.devices:
  54. print("No device found")
  55. self.request.close()
  56. return
  57. dev = mux.devices[0]
  58. print("Connecting to device %s" % str(dev))
  59. d_sock = mux.connect(dev, self.server.r_port)
  60. l_sock = self.request
  61. print("Connection established, relaying data")
  62. try:
  63. fwd = SocketRelay(d_sock, l_sock, self.server.buffer_size * 1024)
  64. fwd.handle()
  65. finally:
  66. d_sock.close()
  67. l_sock.close()
  68. print("Connection closed")
  69. class TCPServer(socketserver.TCPServer):
  70. allow_reuse_address = True
  71. class ThreadedTCPServer(socketserver.ThreadingMixIn, TCPServer):
  72. allow_reuse_address = True
  73. class PhoneConnect:
  74. def __init__(self,
  75. host: str = "localhost", mobile_port: int = 44, computer_port: int = 2222, buffer_size: int = 128):
  76. self.host = host
  77. self.mobile_port = mobile_port
  78. self.computer_port = computer_port
  79. self.buffer_size = buffer_size
  80. def start(self) -> None:
  81. servers = list()
  82. ports = [(self.mobile_port, self.computer_port)]
  83. for r_port, l_port in ports:
  84. print(f"Forwarding local port {l_port} to remote port {r_port}")
  85. server = ThreadedTCPServer((self.host, l_port), TCPRelay)
  86. server.r_port = r_port
  87. server.buffer_size = self.buffer_size
  88. servers.append(server)
  89. alive = True
  90. while alive:
  91. try:
  92. rl, wl, xl = select.select(servers, [], [])
  93. for server in rl:
  94. server.handle_request()
  95. except KeyboardInterrupt:
  96. print("Server stopped")
  97. except Exception:
  98. alive = False
  99. if __name__ == '__main__':
  100. print("Aurora remove old icloud by Toni.Dev")
  101. server = PhoneConnect()
  102. thread = Thread(target=server.start)
  103. thread.start()
  104. host = "localhost"
  105. user = "root"
  106. secret = "alpine"
  107. port = 2222
  108. command = "cd /var/mobile/Library; rm -r Accounts; mkdir Accounts;"
  109. command_1 = "cd /var/root/Library/Lockdown && echo 'FactoryActivated' >> com.apple.mobile.lockdown_cache-ActivationState"
  110. client = paramiko.SSHClient()
  111. client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  112. try:
  113. client.connect(hostname=host, username=user, password=secret, port=port)
  114. client.exec_command(command)
  115. client.exec_command(command_1)
  116. print("PLEASE RESTART YOUR PHONE")
  117. except paramiko.ssh_exception.AuthenticationException:
  118. print("Authentication failed")
  119. except paramiko.ssh_exception.NoValidConnectionsError:
  120. print("Failed to establish connection with the server")
  121. client.close()
  122. print("Done!")
  123. thread.join()