Narrook

wivi

Apr 4th, 2017
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.83 KB | None | 0 0
  1. import subprocess, time
  2. import sqlite3 as lite
  3. from datetime import datetime
  4. from PySide import QtCore, QtGui
  5.  
  6. try:
  7.     _fromUtf8 = QtCore.QString.fromUtf8
  8. except AttributeError:
  9.     def _fromUtf8(s):
  10.         return s
  11.  
  12. try:
  13.     _encoding = QtGui.QApplication.UnicodeUTF8
  14.  
  15.  
  16.     def _translate(context, text, disambig):
  17.         return QtGui.QApplication.translate(context, text, disambig, _encoding)
  18. except AttributeError:
  19.     def _translate(context, text, disambig):
  20.         return QtGui.QApplication.translate(context, text, disambig)
  21. global k
  22. k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Сигнал', 'Тип сети']
  23.  
  24.  
  25. class MyThread(QtCore.QThread):
  26.     def __init__(self, parent=None):
  27.         QtCore.QThread.__init__(self, parent)
  28.         self.ru = False
  29.     def run(self):
  30.         self.ru = True
  31.         ssi = []
  32.         sig = []
  33.         bez = []
  34.         shif = []
  35.         tip = []
  36.         mac = []
  37.         temp = []
  38.         ft=[]
  39.         while self.ru:
  40.             global k
  41.  
  42.             temp.clear()
  43.             c = ''
  44.             pro = QtCore.QProcess()  # create QProcess object
  45.             pro.start('netsh', ['wlan', 'show', 'networks', 'mode=bssid'])
  46.             pro.waitForReadyRead()
  47.             y = pro.readAllStandardOutput()
  48.             for j in range(0, y.size()):
  49.                 temp.append(y[j])
  50.             for j in range(0, len(temp)):
  51.                 c = c + temp[j].decode('cp866')
  52.             pro.waitForFinished()
  53.             pro.terminate()
  54.             ssi.clear()
  55.             shif.clear()
  56.             bez.clear()
  57.             sig.clear()
  58.             tip.clear()
  59.             mac.clear()
  60.             ft.clear()
  61.             c = c.split('\n')
  62.             te = []
  63.             t = len(c) - 1
  64.             for i in range(0, t):
  65.                 te.append(c[i])
  66.             for i in range(0, t):
  67.                 f = te[i]
  68.                 if k[0] in f:
  69.                     ssi.append(f[8:])
  70.                 if k[4] in f:
  71.                     sig.append(f[-5:])
  72.                 if 'Проверка' in f:
  73.                     bez.append(f[30:])
  74.                 if 'Шифрование' in f:
  75.                     shif.append(f[30:])
  76.                 if 'радио' in f:
  77.                     tip.append(f[-8:])
  78.  
  79.             for j in range(1, len(ssi) // 2 + 1):
  80.                 buff = ssi.pop(j)
  81.                 buff = buff[28:]
  82.                 mac.append(buff)
  83.             con = lite.connect('main.db')
  84.             for i in range(0, len(mac)):
  85.                 with con:
  86.                     cur = con.cursor()
  87.                     cur.execute("""Select FT from wifi where MAC=?""", (mac[i],))
  88.                     bi = cur.fetchall()
  89.                     c = datetime.now()
  90.                     c.strftime('%Y-%m-%d %H:%M:%S')
  91.                     c = str(c)
  92.                     c = c[0:len(c) - 7]
  93.                     if bi ==[]:
  94.                         cur.execute("""INSERT INTO wifi(SSID, MAC, TIPDE,SHIF,TIPSE, FT, LT) VALUES (?,?,?,?,?,?,?)""",(ssi[i],mac[i],bez[i],shif[i],tip[i],c,c))
  95.                     else:
  96.                         cur.execute('''Update wifi set LT =? where MAC=?;''',(c,mac[i]))
  97.                     bi=str(bi)
  98.                     bi = bi[3:-4]
  99.                     ft.append(bi)
  100.             self.emit(QtCore.SIGNAL("mysignal(PyObject, PyObject,"
  101.                                     "PyObject,PyObject, PyObject,PyObject, PyObject)"), ssi, sig, bez, mac, shif, tip, ft)
  102.             #self.sleep(10)
  103.  
  104. class Ui_MainWindow(QtGui.QMainWindow):
  105.     def setupUi(self, MainWindow):
  106.         MainWindow.setObjectName(_fromUtf8("MainWindow"))
  107.         MainWindow.resize(669, 526)
  108.         MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint | QtCore.Qt.WindowMaximizeButtonHint)
  109.         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
  110.         sizePolicy.setHorizontalStretch(0)
  111.         sizePolicy.setVerticalStretch(0)
  112.         sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
  113.         icon = QtGui.QIcon()
  114.         icon.addPixmap(QtGui.QPixmap(_fromUtf8("../Prjct/signal-2-256x256.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  115.         MainWindow.setWindowIcon(icon)
  116.         self.centralwidget = QtGui.QWidget(MainWindow)
  117.         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
  118.         global table
  119.         self.table = QtGui.QTableWidget(self.centralwidget)
  120.         self.table.setGeometry(QtCore.QRect(10, 30, 651, 181))
  121.         self.table.setMinimumSize(QtCore.QSize(0, 0))
  122.         self.table2 = QtGui.QTableWidget(self.centralwidget)
  123.         self.table2.setGeometry(QtCore.QRect(10, 280, 651, 181))
  124.         self.table2.setObjectName(_fromUtf8("tableWidget_2"))
  125.         global u
  126.         u = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Тип сети', 'Замечен первый раз',
  127.              'Последний раз замечен']
  128.         self.table2.setColumnCount(len(u))
  129.         self.table2.setHorizontalHeaderLabels(u)
  130.         self.table2.resizeColumnsToContents()
  131.         k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Сигнал', 'Тип сети', 'Замечен первый раз']
  132.         self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
  133.         self.table.setObjectName(_fromUtf8("tableView"))
  134.         self.table.setColumnCount(len(k))
  135.         self.table.setHorizontalHeaderLabels(k)
  136.         self.table.resizeColumnsToContents()
  137.         self.pushButton = QtGui.QPushButton(self.centralwidget)
  138.         self.pushButton.setGeometry(QtCore.QRect(580, 220, 75, 23))
  139.         self.pushButton.setObjectName(_fromUtf8("pushButton"))
  140.         self.pushButton1 = QtGui.QPushButton(self.centralwidget)
  141.         self.pushButton1.setGeometry(QtCore.QRect(500, 220, 75, 23))
  142.         self.pushButton1.setObjectName(_fromUtf8("pushButton"))
  143.         self.pushButton2 = QtGui.QPushButton(self.centralwidget)
  144.         self.pushButton2.setGeometry(QtCore.QRect(580, 470, 75, 23))
  145.         self.pushButton2.setObjectName(_fromUtf8("pushButton"))
  146.         self.label = QtGui.QLabel(self.centralwidget)
  147.         self.label.setGeometry(QtCore.QRect(10, 15, 71, 13))
  148.         self.label.setObjectName(_fromUtf8("label"))
  149.         self.label_2 = QtGui.QLabel(self.centralwidget)
  150.         self.label_2.setGeometry(QtCore.QRect(10, 264, 92, 13))
  151.         self.label_2.setObjectName(_fromUtf8("label_2"))
  152.         MainWindow.setCentralWidget(self.centralwidget)
  153.         self.menubar = QtGui.QMenuBar(MainWindow)
  154.         self.menubar.setGeometry(QtCore.QRect(0, 0, 551, 21))
  155.         self.menubar.setObjectName(_fromUtf8("menubar"))
  156.         self.menu = QtGui.QMenu(self.menubar)
  157.         self.menu.setObjectName(_fromUtf8("menu"))
  158.         MainWindow.setMenuBar(self.menubar)
  159.         self.action_html = QtGui.QAction(MainWindow)
  160.         self.action_html.setObjectName(_fromUtf8("action_html"))
  161.         self.action_Excel = QtGui.QAction(MainWindow)
  162.         self.action_Excel.setObjectName(_fromUtf8("action_Excel"))
  163.         self.mythread = MyThread()
  164.         self.menu.addAction(self.action_html)
  165.         self.menu.addAction(self.action_Excel)
  166.         self.menubar.addAction(self.menu.menuAction())
  167.         self.pushButton.connect(self.pushButton, QtCore.SIGNAL('clicked()'), self.on_clicked)
  168.         self.retranslateUi(MainWindow)
  169.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  170.         self.pushButton1.connect(self.pushButton1, QtCore.SIGNAL("clicked()"),
  171.                                  self.stop)
  172.         self.pushButton2.connect(self.pushButton2, QtCore.SIGNAL("clicked()"),
  173.                                  self.bd)
  174.         self.connect(self.mythread, QtCore.SIGNAL("started()"),
  175.                      self.on_started)
  176.         self.connect(self.mythread, QtCore.SIGNAL("finished()"),
  177.                      self.on_finished)
  178.         self.connect(self.mythread,
  179.                      QtCore.SIGNAL("mysignal(PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject)"),
  180.                      self.test, QtCore.Qt.QueuedConnection)
  181.  
  182.     def retranslateUi(self, MainWindow):
  183.         MainWindow.setWindowTitle(_translate("MainWindow", "Wifi Checker", None))
  184.         self.pushButton.setText(_translate("MainWindow", "Старт", None))
  185.         self.pushButton1.setText(_translate("MainWindow", "Стоп", None))
  186.         self.pushButton1.setDisabled(True)
  187.         self.pushButton2.setText(_translate("MainWindow", "Обновить", None))
  188.         self.label.setText(_translate("MainWindow", "Текущие сети", None))
  189.         self.label_2.setText(_translate("MainWindow", "Сети за всё время", None))
  190.         self.menu.setTitle(_translate("MainWindow", "Импортировать", None))
  191.         self.action_html.setText(_translate("MainWindow", "В html", None))
  192.         self.action_Excel.setText(_translate("MainWindow", "В Excel", None))
  193.  
  194.     def on_clicked(self):
  195.         self.pushButton1.setDisabled(False)
  196.         if not self.mythread.isRunning():
  197.             self.mythread.start()  # Запускаем поток
  198.  
  199.     def on_started(self):  # Вызывается при запуске потока
  200.         self.pushButton.setDisabled(True)
  201.  
  202.     def stop(self):
  203.         self.mythread.ru = False
  204.  
  205.     def on_finished(self):  # Вызывается при завершении потока
  206.         self.pushButton.setDisabled(False)
  207.         self.pushButton1.setDisabled(True)
  208.  
  209.     def test(self, ssi, sig, bez, mac, shif, tip, ft):
  210.         self.table.setRowCount(len(ssi))
  211.         for i in range(0, len(ssi)):
  212.             self.table.setItem(i, 0, QtGui.QTableWidgetItem(ssi[i]))
  213.             self.table.setItem(i, 1, QtGui.QTableWidgetItem(bez[i]))
  214.             self.table.setItem(i, 2, QtGui.QTableWidgetItem(shif[i]))
  215.             self.table.setItem(i, 3, QtGui.QTableWidgetItem(mac[i]))
  216.             self.table.setItem(i, 4, QtGui.QTableWidgetItem(sig[i]))
  217.             self.table.setItem(i, 5, QtGui.QTableWidgetItem(tip[i]))
  218.             self.table.setItem(i, 6, QtGui.QTableWidgetItem(ft[i]))
  219.             self.table.resizeColumnsToContents()
  220.  
  221.     def bd(self):
  222.         con = lite.connect('main.db')
  223.         with con:
  224.             cur = con.cursor()
  225.             cur.execute("""Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi""")
  226.             bi = cur.fetchall()
  227.             self.table2.setRowCount(len(bi))
  228.             for j in range(0, len(bi)):
  229.                 te = bi[j]
  230.                 global u
  231.                 for i in range(0,len(u)):
  232.                     self.table2.setItem(j, i, QtGui.QTableWidgetItem(te[i]))
  233.             self.table2.resizeColumnsToContents()
  234.  
  235.  
  236. if __name__ == "__main__":
  237.     import sys
  238.  
  239.     app = QtGui.QApplication(sys.argv)
  240.     MainWindow = QtGui.QMainWindow()
  241.     ui = Ui_MainWindow()
  242.     ui.setupUi(MainWindow)
  243.     MainWindow.show()
  244.     sys.exit(app.exec_())
Add Comment
Please, Sign In to add comment