Advertisement
Guest User

app1

a guest
Jan 18th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.80 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. import sys
  3. import subprocess
  4. import time
  5. from PyQt5.QtWidgets import *
  6. from PyQt5 import QtGui, QtCore
  7. from interface2 import App2
  8.  
  9. class App(QMainWindow):
  10.  
  11. def __init__(self):
  12. super().__init__()
  13.  
  14. self.interface()
  15.  
  16. def interface(self):
  17. self.setWindowTitle('Disk Imaging Applications on Android Phone Using TWRP')
  18. self.resize(640, 480)
  19. # self.setWindowIcon(QtGui.QIcon("C:/Users/Waldy/Desktop/Skripsi/icon/icon 3.png"))
  20.  
  21. menubar = self.menuBar().addMenu('File')
  22. actionScan = menubar.addAction('Scan')
  23. actionScan.triggered.connect(self.clk_scn)
  24. actionExit = menubar.addAction('Exit')
  25. actionExit.triggered.connect(self.clk_Exit)
  26. menuAbout = self.menuBar().addMenu('About')
  27. actionAbout = menuAbout.addAction('About')
  28. actionAbout.triggered.connect(self.clk_about)
  29.  
  30. self.pushBootloader = QPushButton('ADB Reboot-Bootloader', self)
  31. self.pushBootloader.setGeometry(60, 35, 150, 45)
  32.  
  33. self.pushDownload = QPushButton('ADB Reboot-Download', self)
  34. self.pushDownload.setGeometry(230, 35, 150, 45)
  35.  
  36. self.pushRecovery = QPushButton('ADB Reboot-Recovery', self)
  37. self.pushRecovery.setGeometry(400, 35, 150, 45)
  38.  
  39. self.groupBox = QGroupBox("Detect Devices :", self)
  40. self.groupBox.setGeometry(50, 90, 400, 140)
  41. font = QtGui.QFont()
  42. font.setFamily("Times New Roman")
  43. font.setPointSize(13)
  44. self.groupBox.setFont(font)
  45.  
  46. self.tableWidget = QTableWidget(self.groupBox)
  47. self.tableWidget.setGeometry(10, 20, 380, 110)
  48. self.tableWidget.setColumnCount(3)
  49. self.tableWidget.setRowCount(0)
  50. self.tableWidget.setHorizontalHeaderItem(0, QTableWidgetItem('Serial Number'))
  51. self.tableWidget.setHorizontalHeaderItem(1, QTableWidgetItem('State'))
  52. self.tableWidget.setHorizontalHeaderItem(2, QTableWidgetItem('Type'))
  53. self.tableWidget.horizontalHeader().setDefaultSectionSize(125)
  54. self.tableWidget.horizontalHeader().setStretchLastSection(True)
  55.  
  56. self.columnSer = QTextBrowser(self.groupBox)
  57. self.columnSer.setGeometry(10, 44, 125, 86)
  58. font = QtGui.QFont()
  59. font.setPointSize(11)
  60. self.columnSer.setFont(font)
  61.  
  62. self.columnStat = QTextBrowser(self.groupBox)
  63. self.columnStat.setGeometry(135, 44, 125, 86)
  64. self.columnStat.setFont(font)
  65.  
  66. self.columnType = QTextBrowser(self.groupBox)
  67. self.columnType.setGeometry(260, 44, 130, 86)
  68. self.columnType.setFont(font)
  69.  
  70. self.pushScan = QPushButton("Scan", self)
  71. self.pushScan.setGeometry(460, 185, 80, 35)
  72. icon = QtGui.QIcon()
  73. # icon.addPixmap(QtGui.QPixmap("../../refres.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  74. self.pushScan.setIcon(icon)
  75. self.pushScan.setIconSize(QtCore.QSize(18, 18))
  76.  
  77. self.pushCheck = QPushButton('Check', self)
  78. self.pushCheck.setGeometry(460, 225, 80, 35)
  79.  
  80. self.pushCon = QPushButton('Connect', self)
  81. self.pushCon.setGeometry(550, 195, 80, 55)
  82.  
  83. self.groupBox_2 = QGroupBox('Detail :', self)
  84. self.groupBox_2.setGeometry(50, 235, 400, 160)
  85. font = QtGui.QFont()
  86. font.setFamily("Times New Roman")
  87. font.setPointSize(12)
  88. self.groupBox_2.setFont(font)
  89.  
  90. self.textDetail = QTextBrowser(self.groupBox_2)
  91. self.textDetail.setGeometry(10, 20, 381, 130)
  92.  
  93. self.pushNext = QPushButton('Next', self)
  94. self.pushNext.setGeometry(530, 410, 81, 35)
  95. icon1 = QtGui.QIcon()
  96. # icon1.addPixmap(QtGui.QPixmap("C:/Users/Waldy/Desktop/Skripsi/must_have_icon_set/Next/Next.ico"),
  97. # QtGui.QIcon.Normal,
  98. # QtGui.QIcon.Off)
  99. self.pushNext.setIcon(icon1)
  100.  
  101. self.pushExit = QPushButton('Exit', self)
  102. self.pushExit.setGeometry(440, 410, 81, 35)
  103. icon2 = QtGui.QIcon()
  104. # icon2.addPixmap(QtGui.QPixmap("C:/Users/Waldy/Desktop/Skripsi/must_have_icon_set/Delete/Delete.ico"),
  105. # QtGui.QIcon.Normal,
  106. # QtGui.QIcon.Off)
  107. self.pushExit.setIcon(icon2)
  108. self.pushExit.setIconSize(QtCore.QSize(16, 16))
  109.  
  110. self.show()
  111.  
  112. self.pushNext.setDisabled(True)
  113. self.pushScan.clicked.connect(self.clk_scn)
  114. self.pushNext.clicked.connect(self.clk_next)
  115. self.pushCheck.clicked.connect(self.clk_check)
  116. self.pushCon.clicked.connect(self.clk_con)
  117. self.pushExit.clicked.connect(self.clk_Exit)
  118. self.pushBootloader.clicked.connect(self.clk_Btlder)
  119. self.pushDownload.clicked.connect(self.clk_Dwnld)
  120. self.pushRecovery.clicked.connect(self.clk_Rcvry)
  121.  
  122.  
  123. def clk_scn(self):
  124. subprocess.getoutput('adb start-server')
  125. serial = subprocess.getoutput('adb devices -l')
  126. forSerial = subprocess.getoutput('adb get-serialno')
  127. forStatus = subprocess.getoutput('adb get-state')
  128. serialNo = forSerial
  129. status = forStatus
  130. model = serial[86:95]
  131. type = serial[57:120]
  132.  
  133. self.columnSer.setText(serialNo)
  134. self.columnStat.setText(status)
  135. self.columnType.setText(model)
  136.  
  137. if forSerial == 'unknown' :
  138. self.textDetail.setPlainText('Device Not Found')
  139. else:
  140. self.textDetail.setPlainText('Device is already')
  141. self.textDetail.append('Serial No\t: ' +serialNo)
  142. self.textDetail.append('Status\t: ' +status)
  143. self.textDetail.append('Type\t: ' +type)
  144.  
  145. def clk_check(self):
  146. var = subprocess.getoutput('adb forward --list')
  147. text = "{var}".format(var=var)
  148. device = text[0:16]
  149. port = text[16:50]
  150.  
  151. if text == '':
  152. self.textDetail.setPlainText("No Connected Devices")
  153. else:
  154. self.textDetail.append("Connected Device to\t: " +device)
  155. self.textDetail.append("Through the port\t: " +port)
  156.  
  157. def clk_con(self):
  158. var2 = subprocess.getoutput('adb get-state')
  159. if var2 == 'device':
  160. var = subprocess.getoutput('adb forward tcp:8888 tcp:8888')
  161. text = "{var}".format(var=var)
  162. if text == '':
  163. self.textDetail.setPlainText("Device Connected")
  164. self.pushNext.setDisabled(False)
  165.  
  166. elif var2 == 'unknown':
  167. QMessageBox.about(self, 'Caution','No Devices Detected')
  168. self.textDetail.setPlainText("Device Not Connected")
  169.  
  170. elif var2 == 'device':
  171. QMessageBox.about(self, 'Caution', 'Device not in Recovery Mode')
  172.  
  173.  
  174. def clk_Exit(self):
  175. reply = QMessageBox.question(self, "Caution",
  176. "Are you sure to exit?", QMessageBox.No | QMessageBox.Yes)
  177.  
  178. if reply == QMessageBox.Yes:
  179. subprocess.call('adb kill-server')
  180. QApplication.quit()
  181. else:
  182. pass
  183.  
  184.  
  185. def clk_Btlder(self):
  186. cekdev = subprocess.getoutput('adb get-state')
  187.  
  188. if cekdev == 'unknown':
  189. QMessageBox.about(self, 'Caution', 'Device not found or device in bootloader mode')
  190. self.textDetail.setPlainText("Device not found or Device in bootloader mode")
  191.  
  192. elif cekdev == 'recovery':
  193. QMessageBox.about(self, 'Caution', 'Device in Recovery Mode')
  194. self.textDetail.setPlainText("Device in Recovery Mode, You can do the Acquisition process")
  195.  
  196. elif cekdev == 'device':
  197. subprocess.call('adb reboot bootloader')
  198. QMessageBox.about(self, "Waiting", "Wait until the phone stops processing")
  199.  
  200. time.sleep(5)
  201.  
  202. cekboot2 = subprocess.getoutput('adb get-state')
  203.  
  204. if cekboot2 == 'device':
  205. self.textDetail.setPlainText("don't have booloader mode, please try the download mode")
  206.  
  207. else:
  208. self.textDetail.setPlainText("Device in bootloader mode, please flashing file TWRP, don't forget unlock bootloder first")
  209. self.textDetail.append("Tutorial on website 'https://www.xda-developers.com/how-to-install-twrp/'")
  210.  
  211.  
  212. def clk_Dwnld(self):
  213.  
  214. cekdev2 = subprocess.getoutput('adb get-state')
  215.  
  216. if cekdev2 == 'unknown':
  217. QMessageBox.about(self, 'Caution', 'Device not found or Device in download mode')
  218. self.textDetail.setPlainText("Device not found or Device in download mode")
  219.  
  220. elif cekdev2 == 'recovery':
  221. QMessageBox.about(self, 'Caution', 'Devices in Recovery Mode')
  222. self.textDetail.setPlainText("Device in Recovery Mode, You can do the Acqusition process")
  223.  
  224. elif cekdev2 == 'device':
  225. subprocess.call('adb reboot download')
  226. QMessageBox.about(self, "Waiting", "Wait until the phone stops processing")
  227.  
  228. time.sleep(5)
  229.  
  230. cekboot2 = subprocess.getoutput('adb get-state')
  231.  
  232. if cekboot2 == 'unknown':
  233. self.textDetail.setPlainText("Device in download mode, please flashing file TWRP your phone with odin")
  234.  
  235. elif cekboot2 == 'device':
  236. self.textDetail.setPlainText("this phone don't have download mode, please flashing twrp with adb and fastboot or Apps twrp official")
  237.  
  238.  
  239. def clk_Rcvry(self):
  240.  
  241. cekdev3 = subprocess.getoutput('adb get-state')
  242.  
  243. if cekdev3 == 'unknown':
  244. QMessageBox.about(self, 'Caution', 'Device not found')
  245. self.textDetail.setPlainText("Device not found")
  246.  
  247. elif cekdev3 == 'recovery':
  248. QMessageBox.about(self, 'Caution', 'Devices Recovery Mode')
  249. self.textDetail.setPlainText("Device in Recovery Mode, You can do the Acqusition process")
  250.  
  251. elif cekdev3 == 'device':
  252. subprocess.call('adb reboot recovery')
  253. QMessageBox.about(self, "Waiting", "Wait until the phone stops processing")
  254.  
  255. time.sleep(5)
  256.  
  257. cekboot3 = subprocess.getoutput('adb get-state')
  258.  
  259. if cekboot3 == 'recovery':
  260. self.textDetail.setPlainText("Device in recovery mode, You can do the Acqusition process")
  261.  
  262. elif cekboot3 == 'device':
  263. self.textDetail.setPlainText("The Phone has not been installed TWRP")
  264.  
  265.  
  266. def clk_next(self):
  267. self.window2 = App2()
  268. self.window2.window1 = self
  269. self.window2.show()
  270. self.hide()
  271.  
  272. def clk_about(self):
  273. QMessageBox.about(self, "About Application", "This Application is built with the Python programing language"
  274. "\n\nThis Application is to acquire Android storage with recovery mode/TWRP based on Windows platform"
  275. "\n\nThe Application can be run if the Android phone in recovery mode/TWRP designed to maintain the integrity of a files that will be generated"
  276. "\n\nFor install TWRP can be visited on the site: https://twrp.me/Devices/ or https://www.xda-developers.com/how-to-install-twrp/"
  277. "\n\nCopyright (C) 2018 - Waldy Nur Hamzah")
  278.  
  279. def closeEvent(self, eventQCloseEvent):
  280. reply = QMessageBox.question(self, "Caution",
  281. "Are you sure to exit",
  282. QMessageBox.Yes | QMessageBox.No)
  283. if reply == QMessageBox.Yes:
  284. subprocess.call('adb kill-server')
  285. eventQCloseEvent.accept()
  286. else:
  287. eventQCloseEvent.ignore()
  288.  
  289.  
  290. if __name__ == '__main__':
  291. app = QApplication(sys.argv)
  292. ex = App()
  293. sys.exit(app.exec())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement