Narrook

Wifi-Watcher ed 2.0

Mar 30th, 2017
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.92 KB | None | 0 0
  1. import subprocess, time
  2. from PyQt4 import QtCore, QtGui
  3.  
  4. try:
  5.     _fromUtf8 = QtCore.QString.fromUtf8
  6. except AttributeError:
  7.     def _fromUtf8(s):
  8.         return s
  9.  
  10. try:
  11.     _encoding = QtGui.QApplication.UnicodeUTF8
  12.     def _translate(context, text, disambig):
  13.         return QtGui.QApplication.translate(context, text, disambig, _encoding)
  14. except AttributeError:
  15.     def _translate(context, text, disambig):
  16.         return QtGui.QApplication.translate(context, text, disambig)
  17. global k
  18. k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Сигнал', 'Тип сети']
  19. class MyThread(QtCore.QThread):
  20.     def __init__(self, parent=None):
  21.         QtCore.QThread.__init__(self, parent)
  22.         self.ru=False
  23.     def run(self):
  24.         self.ru=True
  25.         ssi = []
  26.         sig = []
  27.         bez = []
  28.         shif = []
  29.         tip = []
  30.         mac = []
  31.         while self.ru:
  32.  
  33.             global k
  34.             self.sleep(1)
  35.             pro = QtCore.QProcess()  # create QProcess object
  36.             pro.start('netsh', ['wlan', 'show', 'networks', 'mode=bssid'])
  37.             pro.waitForReadyRead()
  38.             y = pro.readAllStandardOutput()
  39.             tem = bytes(y).decode('cp866')
  40.             pro.waitForFinished()
  41.             pro.terminate()
  42.             # Передача данных из потока через сигнал
  43.             # txt = open('test.txt', 'r')
  44.             ssi.clear()
  45.             shif.clear()
  46.             bez.clear()
  47.             sig.clear()
  48.             tip.clear()
  49.             mac.clear()
  50.             # ipc = subprocess.check_output(['netsh', 'wlan', 'show', 'help'])
  51.             c = str(tem).split('\n')
  52.             te = []
  53.             t = len(c) - 1
  54.             for i in range(0, t):
  55.                 te.append(c[i])
  56.                 # while out:
  57.                 #   out = str(ipc)
  58.             #    f = out.encode('cp1251').decode('cp866')
  59.             for i in range(0, t):
  60.                 f = te[i]
  61.                 if k[0] in f:
  62.                     ssi.append(f[8:])
  63.                 if k[4] in f:
  64.                     sig.append(f[-5:])
  65.                 if 'Проверка' in f:
  66.                     bez.append(f[30:])
  67.                 if 'Шифрование' in f:
  68.                     shif.append(f[30:])
  69.                 if 'радио' in f:
  70.                     tip.append(f[-8:])
  71.             for j in range(1, len(ssi) // 2 + 1):
  72.                 buff = ssi.pop(j)
  73.                 buff = buff[28:]
  74.                 mac.append(buff)
  75.             # txt.close()
  76.             self.emit(QtCore.SIGNAL("mysignal(PyQt_PyObject, PyQt_PyObject,"
  77.                                     "PyQt_PyObject,PyQt_PyObject, PyQt_PyObject,PyQt_PyObject)"), ssi, sig, bez,
  78.                       mac,
  79.                       shif, tip)
  80.  
  81.  
  82.  
  83. class Ui_MainWindow(QtGui.QMainWindow):
  84.     def setupUi(self, MainWindow):
  85.         MainWindow.setObjectName(_fromUtf8("MainWindow"))
  86.         MainWindow.resize(668, 376)
  87.         MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint|QtCore.Qt.WindowMaximizeButtonHint)
  88.         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
  89.         sizePolicy.setHorizontalStretch(0)
  90.         sizePolicy.setVerticalStretch(0)
  91.         sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
  92.         icon = QtGui.QIcon()
  93.         icon.addPixmap(QtGui.QPixmap(_fromUtf8("../Prjct/signal-2-256x256.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  94.         MainWindow.setWindowIcon(icon)
  95.         self.centralwidget = QtGui.QWidget(MainWindow)
  96.         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
  97.         global table
  98.         self.table = QtGui.QTableWidget(self.centralwidget)
  99.         self.table.setGeometry(QtCore.QRect(10, 20, 651, 291))
  100.         self.table.setMinimumSize(QtCore.QSize(0, 0))
  101.         k=['SSID','Тип защиты','Шифрование', 'MAC-адрес','Сигнал','Тип сети']
  102.         self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
  103.         self.table.setObjectName(_fromUtf8("tableView"))
  104.         self.table.setColumnCount(6)
  105.         self.table.setHorizontalHeaderLabels(k)
  106.         self.pushButton = QtGui.QPushButton(self.centralwidget)
  107.         self.pushButton.setGeometry(QtCore.QRect(580, 320, 75, 23))
  108.         self.pushButton.setObjectName(_fromUtf8("pushButton"))
  109.         self.pushButton1 = QtGui.QPushButton(self.centralwidget)
  110.         self.pushButton1.setGeometry(QtCore.QRect(500, 320, 75, 23))
  111.         self.pushButton1.setObjectName(_fromUtf8("pushButton"))
  112.         MainWindow.setCentralWidget(self.centralwidget)
  113.         self.menubar = QtGui.QMenuBar(MainWindow)
  114.         self.menubar.setGeometry(QtCore.QRect(0, 0, 551, 21))
  115.         self.menubar.setObjectName(_fromUtf8("menubar"))
  116.         self.menu = QtGui.QMenu(self.menubar)
  117.         self.menu.setObjectName(_fromUtf8("menu"))
  118.         MainWindow.setMenuBar(self.menubar)
  119.         self.action_html = QtGui.QAction(MainWindow)
  120.         self.action_html.setObjectName(_fromUtf8("action_html"))
  121.         self.action_Excel = QtGui.QAction(MainWindow)
  122.         self.action_Excel.setObjectName(_fromUtf8("action_Excel"))
  123.         self.mythread = MyThread()
  124.         self.menu.addAction(self.action_html)
  125.         self.menu.addAction(self.action_Excel)
  126.         self.menubar.addAction(self.menu.menuAction())
  127.         self.pushButton.connect(self.pushButton, QtCore.SIGNAL('clicked()'), self.on_clicked)
  128.         self.retranslateUi(MainWindow)
  129.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  130.         self.pushButton1.connect(self.pushButton1, QtCore.SIGNAL("clicked()"),
  131.                      self.stop)
  132.         self.connect(self.mythread, QtCore.SIGNAL("started()"),
  133.                      self.on_started)
  134.         self.connect(self.mythread, QtCore.SIGNAL("finished()"),
  135.                  self.on_finished)
  136.         self.connect(self.mythread, QtCore.SIGNAL("mysignal(PyQt_PyObject, PyQt_PyObject, PyQt_PyObject, PyQt_PyObject, PyQt_PyObject, PyQt_PyObject)"),
  137.                  self.test, QtCore.Qt.QueuedConnection)
  138.  
  139.     def retranslateUi(self, MainWindow):
  140.         MainWindow.setWindowTitle(_translate("MainWindow", "Wifi Checker", None))
  141.         self.pushButton.setText(_translate("MainWindow", "Старт", None))
  142.         self.pushButton1.setText(_translate("MainWindow", "Стоп", None))
  143.         self.pushButton1.setDisabled(True)
  144.         self.menu.setTitle(_translate("MainWindow", "Импортировать", None))
  145.         self.action_html.setText(_translate("MainWindow", "В html", None))
  146.         self.action_Excel.setText(_translate("MainWindow", "В Excel", None))
  147.  
  148.     def on_clicked(self):
  149.         self.pushButton1.setDisabled(False)
  150.         if not self.mythread.isRunning():
  151.             self.mythread.start()  # Запускаем поток
  152.     def on_started(self):  # Вызывается при запуске потока
  153.         self.pushButton.setDisabled(True)
  154.     def stop(self):
  155.         self.mythread.ru = False
  156.     def on_finished(self):  # Вызывается при завершении потока
  157.         self.pushButton.setDisabled(False)
  158.         self.pushButton1.setDisabled(True)
  159.     def test(self, ssi,sig,bez,mac,shif,tip):
  160.         self.table.setRowCount(len(ssi))
  161.         for i in range(0, len(ssi)):
  162.             self.table.setItem(i, 0, QtGui.QTableWidgetItem(ssi[i]))
  163.             self.table.setItem(i, 1, QtGui.QTableWidgetItem(bez[i]))
  164.             self.table.setItem(i, 2, QtGui.QTableWidgetItem(shif[i]))
  165.             self.table.setItem(i, 3, QtGui.QTableWidgetItem(mac[i]))
  166.             self.table.setItem(i, 4, QtGui.QTableWidgetItem(sig[i]))
  167.             self.table.setItem(i, 5, QtGui.QTableWidgetItem(tip[i]))
  168. if __name__ == "__main__":
  169.     import sys
  170.     app = QtGui.QApplication(sys.argv)
  171.     MainWindow = QtGui.QMainWindow()
  172.  
  173.     ui = Ui_MainWindow()
  174.     global te
  175.     te = 0
  176.     ui.setupUi(MainWindow)
  177.     MainWindow.show()
  178.     sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment