Advertisement
Narrook

Untitled

Dec 27th, 2018
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 38.08 KB | None | 0 0
  1. import datetime
  2. import bluetooth
  3. import sqlite3 as lite
  4. import pymysql
  5. from PySide import QtCore
  6. from logon import Login
  7. k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Сигнал', 'Тип сети']
  8. class MyThread(QtCore.QThread):
  9.     def __init__(self, parent=None):
  10.         QtCore.QThread.__init__(self, parent)
  11.         self.ru = False
  12.  
  13.     def run(self):
  14.         cost = Login.retco(self)
  15.         a=Login.reta(self)
  16.         if a == 0:
  17.             self.ru = True
  18.             ssi = []
  19.             sig = []
  20.             bez = []
  21.             shif = []
  22.             tip = []
  23.             mac = []
  24.             temp = []
  25.             ft = []
  26.             while self.ru:
  27.                 global k
  28.                 temp.clear()
  29.                 c = ''
  30.                 pro = QtCore.QProcess()  # create QProcess object
  31.                 pro.start('netsh', ['wlan', 'show', 'networks', 'mode=bssid'])
  32.                 pro.waitForReadyRead()
  33.                 y = pro.readAllStandardOutput()
  34.                 for j in range(0, y.size()):
  35.                     temp.append(y[j])
  36.                 for j in range(0, len(temp)):
  37.                     c = c + temp[j].decode('cp866')
  38.                 pro.waitForFinished()
  39.                 pro.terminate()
  40.                 ssi.clear()
  41.                 shif.clear()
  42.                 bez.clear()
  43.                 sig.clear()
  44.                 tip.clear()
  45.                 mac.clear()
  46.                 ft.clear()
  47.                 c = c.split('\n')
  48.                 te = []
  49.                 t = len(c) - 1
  50.                 for i in range(0, t):
  51.                     te.append(c[i])
  52.                 for i in range(0, t):
  53.                     f = te[i]
  54.                     if k[0] in f:
  55.                         ssi.append(f[8:])
  56.                     if k[4] in f:
  57.                         sig.append(f[-5:])
  58.                     if 'Проверка' in f:
  59.                         bez.append(f[30:])
  60.                     if 'Шифрование' in f:
  61.                         shif.append(f[30:])
  62.                     if 'радио' in f:
  63.                         tip.append(f[-8:])
  64.                 for j in range(1, len(ssi) // 2 + 1):
  65.                     buff = ssi.pop(j)
  66.                     buff = buff[28:]
  67.                     mac.append(buff)
  68.                 if cost == 1:
  69.                     con = lite.connect('net.db')
  70.                     with con:
  71.                         cur = con.cursor()
  72.                         cur.execute('''CREATE TABLE if not exists wifi (
  73.                                    ID    INTEGER  PRIMARY KEY
  74.                                    UNIQUE
  75.                                    NOT NULL,
  76.                                    SSID  VARCHAR,
  77.                                    MAC   VARCHAR  UNIQUE,
  78.                                    TIPDE VARCHAR,
  79.                                    SHIF  VARCHAR,
  80.                                    TIPSE VARCHAR,
  81.                                    FT    DATETIME,
  82.                                    LT    DATETIME)''')
  83.                     for i in range(0, len(mac)):
  84.                         with con:
  85.                             cur = con.cursor()
  86.                             cur.execute("""Select FT from wifi where MAC=?""", (mac[i],))
  87.                             bi = cur.fetchall()
  88.                             c = datetime.datetime.now()
  89.                             c.strftime('%Y-%m-%d %H:%M:%S')
  90.                             c = str(c)
  91.                             c = c[0:len(c) - 7]
  92.                             if bi == []:
  93.                                 cur.execute(
  94.                                     """INSERT INTO wifi(SSID, MAC, TIPDE,SHIF,TIPSE, FT, LT) VALUES (?,?,?,?,?,?,?)""",
  95.                                     (ssi[i], mac[i], bez[i], shif[i], tip[i], c, c))
  96.                             else:
  97.                                 cur.execute('''Update wifi set LT =? where MAC=?;''', (c, mac[i]))
  98.                             bi = str(bi)
  99.                             bi = bi[3:-4]
  100.                             ft.append(bi)
  101.                 elif cost == 2:
  102.                     hote = Login.retho(self)
  103.                     pote = Login.retpo(self)
  104.                     pasw = Login.retpasw(self)
  105.                     log = Login.retlog(self)
  106.                     con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw, db='net')
  107.                     with con:
  108.                         cur = con.cursor()
  109.                         # try:
  110.                         cur.execute('''SET sql_notes = 0;    
  111.                                        CREATE TABLE if not exists `net`.`wifi` (
  112.                                        `id` INT NOT NULL AUTO_INCREMENT,
  113.                                        `SSID` VARCHAR(45) NULL,
  114.                                        `MAC` VARCHAR(45) NULL,
  115.                                        `TIPDE` VARCHAR(45) NULL,
  116.                                        `SHIF` VARCHAR(45) NULL,
  117.                                        `TIPSE` VARCHAR(45) NULL,
  118.                                        `FT` DATETIME NULL,
  119.                                        `LT` DATETIME NULL,
  120.                                        PRIMARY KEY (`id`),
  121.                                        UNIQUE INDEX `MAC_UNIQUE` (`MAC` ASC));
  122.                                        SET sql_notes = 1; ''')
  123.                     for i in range(0, len(mac)):
  124.                         with con:
  125.                             cur = con.cursor()
  126.                             cur.execute("""Select `FT` from `net`.`wifi` where `MAC`=%s""", (mac[i],))
  127.                             bi = cur.fetchall()
  128.                             c = datetime.datetime.now()
  129.                             c.strftime('%Y-%m-%d %H:%M:%S')
  130.                             c = str(c)
  131.                             c = c[0:len(c) - 7]
  132.                             if str(bi) == "()":
  133.                                 cur.execute(
  134.                                     """INSERT INTO `net`.`wifi`(`SSID`, `MAC`, `TIPDE`,`SHIF`,`TIPSE`, `FT`, `LT`) VALUES (%s,%s,%s,%s,%s,%s,%s)""",
  135.                                     (ssi[i], mac[i], bez[i], shif[i], tip[i], c, c))
  136.                             else:
  137.                                 cur.execute('''Update `net`.`wifi` set `LT` =%s where `MAC`=%s;''', (c, mac[i]))
  138.                             bi = str(bi)
  139.                             bi = bi[20:-5]
  140.                             bi = bi.split(',')
  141.                             ti = datetime.datetime(int(bi[0]), int(bi[1]), int(bi[2]), int(bi[3]), int(bi[4]),
  142.                                                    int(bi[5]))
  143.                             ft.append(str(ti))
  144.                 self.emit(
  145.                     QtCore.SIGNAL("wisignal(PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject)"),
  146.                     ssi, sig, bez, mac, shif, tip, ft)
  147.                 self.sleep(1)
  148.         elif a==1:
  149.             ssi=[]
  150.             mac=[]
  151.             ft=[]
  152.             self.ru=True
  153.             while self.ru:
  154.                 mac.clear()
  155.                 ssi.clear()
  156.                 ft.clear()
  157.                 try:
  158.                     nearby_devices = bluetooth.discover_devices(duration=4, lookup_names=True, flush_cache=True,
  159.                                                                 lookup_class=False)
  160.                     for addr, name in nearby_devices:
  161.                         ssi.append(name)
  162.                         mac.append(addr)
  163.  
  164.                 except OSError:
  165.                     pass
  166.                 if cost == 1:
  167.                     con = lite.connect('net.db')
  168.                     with con:
  169.                         cur = con.cursor()
  170.                         cur.execute("""CREATE TABLE IF NOT EXISTS bluetooth (
  171.                        ID   INTEGER  PRIMARY KEY AUTOINCREMENT
  172.                        NOT NULL, NAME VARCHAR,
  173.                        MAC  VARCHAR  UNIQUE,
  174.                        FT   DATETIME,
  175.                        LT   DATETIME);""")
  176.                     for i in range(0, len(mac)):
  177.                         with con:
  178.                             cur = con.cursor()
  179.                             cur.execute("""Select FT from bluetooth where MAC=?""", (mac[i],))
  180.                             bi = cur.fetchall()
  181.                             c = datetime.datetime.now()
  182.                             c.strftime('%Y-%m-%d %H:%M:%S')
  183.                             c = str(c)
  184.                             c = c[0:len(c) - 7]
  185.                             if bi == []:
  186.                                 cur.execute(
  187.                                     """INSERT INTO bluetooth (NAME, MAC, FT, LT) VALUES (?,?,?,?)""",
  188.                                     (ssi[i], mac[i], c, c))
  189.                             else:
  190.                                 cur.execute('''Update bluetooth set LT =? where MAC=?;''', (c, mac[i]))
  191.                             cur.execute("""Select NAME from bluetooth where MAC=?""", (mac[i],))
  192.                             name = cur.fetchall()
  193.                             if str(name) == "[('',)]":
  194.                                 cur.execute('''Update bluetooth set NAME=? where MAC=?;''',(ssi[i], mac[i]))
  195.                             bi = str(bi)
  196.                             bi = bi[3:-4]
  197.                             ft.append(bi)
  198.                 if cost == 2:
  199.                     hote = Login.retho(self)
  200.                     pote = Login.retpo(self)
  201.                     pasw = Login.retpasw(self)
  202.                     log = Login.retlog(self)
  203.                     con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw, db='net')
  204.                     with con:
  205.                         cur = con.cursor()
  206.                         # try:
  207.                         cur.execute('''SET sql_notes = 0;
  208.                            CREATE TABLE if not exists `net`.`bluetooth` (
  209.                            `ID` INT NOT NULL AUTO_INCREMENT,
  210.                            `NAME` VARCHAR(45) NULL,
  211.                            `MAC` VARCHAR(45) NULL,
  212.                            `FT` DATETIME NULL,
  213.                            `LT` DATETIME NULL,
  214.                            PRIMARY KEY (`ID`),
  215.                            UNIQUE INDEX `MAC_UNIQUE` (`MAC` ASC));
  216.                            SET sql_notes = 1; ''')
  217.                     for i in range(0, len(mac)):
  218.                         with con:
  219.                             cur = con.cursor()
  220.                             cur.execute("""Select `FT` from `net`.`bluetooth` where `MAC`=%s""", (mac[i],))
  221.                             bi = cur.fetchall()
  222.                             c = datetime.datetime.now()
  223.                             c.strftime('%Y-%m-%d %H:%M:%S')
  224.                             c = str(c)
  225.                             c = c[0:len(c) - 7]
  226.                             if str(bi) == "()":
  227.                                 cur.execute(
  228.                                     """INSERT INTO `net`.`bluetooth`(`NAME`, `MAC`, `FT`, `LT`) VALUES (%s,%s,%s,%s)""",
  229.                                     (ssi[i], mac[i], c, c))
  230.                                 ft.append(c)
  231.                             else:
  232.                                 cur.execute('''Update `net`.`bluetooth` set `LT` =%s where `MAC`=%s;''', (c, mac[i]))
  233.                                 bi = str(bi)
  234.                                 bi = bi[20:-5]
  235.                                 bi = bi.split(',')
  236.                                 ti = datetime.datetime(int(bi[0]), int(bi[1]), int(bi[2]), int(bi[3]), int(bi[4]),
  237.                                                        int(bi[5]))
  238.                                 ft.append(str(ti))
  239.                             cur.execute("""Select `NAME` from `net`.`bluetooth` where `MAC`=%s""", (mac[i],))
  240.                             name = cur.fetchall()
  241.                             if str(name)=="()":
  242.                                 cur.execute('''Update `net`.`bluetooth` set `NAME` =%s where `MAC`=%s;''', (ssi[i], mac[i]))
  243.  
  244.                 self.emit(
  245.                     QtCore.SIGNAL("blsignal(PyObject, PyObject, PyObject)"),
  246.                     ssi, mac,  ft)
  247.                 self.sleep(1)
  248.  
  249. import time
  250. import pymysql
  251. import xlsxwriter
  252. from logon import Login
  253. import sqlite3 as lite
  254. from MThread import MyThread
  255. from PySide import QtCore, QtGui
  256. import datetime
  257. try:
  258.     _fromUtf8 = QtCore.QString.fromUtf8
  259. except AttributeError:
  260.     def _fromUtf8(s):
  261.         return s
  262.  
  263. try:
  264.     _encoding = QtGui.QApplication.UnicodeUTF8
  265.  
  266.  
  267.     def _translate(context, text, disambig):
  268.         return QtGui.QApplication.translate(context, text, disambig, _encoding)
  269. except AttributeError:
  270.     def _translate(context, text, disambig):
  271.         return QtGui.QApplication.translate(context, text, disambig)
  272. global k
  273. k=[]
  274. class Ui_MainWindow(QtGui.QMainWindow):
  275.     def setupUi(self, MainWindow):
  276.         MainWindow.setObjectName(_fromUtf8("MainWindow"))
  277.         MainWindow.resize(669, 526)
  278.         MainWindow.setWindowFlags(QtCore.Qt.MSWindowsFixedSizeDialogHint | QtCore.Qt.WindowMaximizeButtonHint)
  279.         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
  280.         sizePolicy.setHorizontalStretch(0)
  281.         sizePolicy.setVerticalStretch(0)
  282.         sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
  283.         icon = QtGui.QIcon()
  284.         icon.addPixmap(QtGui.QPixmap(_fromUtf8("../Prjct/signal-2-256x256.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
  285.         MainWindow.setWindowIcon(icon)
  286.         self.centralwidget = QtGui.QWidget(MainWindow)
  287.         self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
  288.         global table
  289.         self.table = QtGui.QTableWidget(self.centralwidget)
  290.         self.table.setGeometry(QtCore.QRect(10, 30, 651, 181))
  291.         self.table.setMinimumSize(QtCore.QSize(0, 0))
  292.         self.table2 = QtGui.QTableWidget(self.centralwidget)
  293.         self.table2.setGeometry(QtCore.QRect(10, 280, 651, 181))
  294.         self.table2.setObjectName(_fromUtf8("tableWidget_2"))
  295.         a = Login.reta(self)
  296.         global u
  297.         if  a == 0:
  298.             u = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Тип сети', 'Замечен первый раз',
  299.              'Последний раз замечен']
  300.         elif a==1:
  301.             u=['Название','MAC-адрес','Замечен первый раз', 'Последний раз замечен']
  302.         self.table2.setColumnCount(len(u))
  303.         self.table2.setHorizontalHeaderLabels(u)
  304.         self.table2.resizeColumnsToContents()
  305.         global k
  306.         if a == 0:
  307.             k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адрес', 'Сигнал', 'Тип сети', 'Замечен первый раз']
  308.         elif a==1:
  309.             k = ['Название','MAC-адрес','Замечен первый раз']
  310.         self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
  311.         self.table.setObjectName(_fromUtf8("tableView"))
  312.         self.table.setColumnCount(len(k))
  313.         self.table.setHorizontalHeaderLabels(k)
  314.         self.table.resizeColumnsToContents()
  315.         self.pushButton = QtGui.QPushButton(self.centralwidget)
  316.         self.pushButton.setGeometry(QtCore.QRect(580, 220, 75, 23))
  317.         self.pushButton.setObjectName(_fromUtf8("pushButton"))
  318.         self.pushButton1 = QtGui.QPushButton(self.centralwidget)
  319.         self.pushButton1.setGeometry(QtCore.QRect(500, 220, 75, 23))
  320.         self.pushButton1.setObjectName(_fromUtf8("pushButton"))
  321.         self.pushButton2 = QtGui.QPushButton(self.centralwidget)
  322.         self.pushButton2.setGeometry(QtCore.QRect(580, 470, 75, 23))
  323.         self.pushButton2.setObjectName(_fromUtf8("pushButton"))
  324.         self.label = QtGui.QLabel(self.centralwidget)
  325.         self.label.setGeometry(QtCore.QRect(10, 15, 71, 13))
  326.         self.label.setObjectName(_fromUtf8("label"))
  327.         self.label_2 = QtGui.QLabel(self.centralwidget)
  328.         self.label_2.setGeometry(QtCore.QRect(10, 264, 92, 13))
  329.         self.label_2.setObjectName(_fromUtf8("label_2"))
  330.         MainWindow.setCentralWidget(self.centralwidget)
  331.         self.menubar = QtGui.QMenuBar(MainWindow)
  332.         self.menubar.setGeometry(QtCore.QRect(0, 0, 551, 21))
  333.         self.menubar.setObjectName(_fromUtf8("menubar"))
  334.         self.menu = QtGui.QMenu(self.menubar)
  335.         self.menu.setObjectName(_fromUtf8("menu"))
  336.         MainWindow.setMenuBar(self.menubar)
  337.         self.action_fi = QtGui.QAction(MainWindow)
  338.         self.action_fi.setObjectName(_fromUtf8("action_fi"))
  339.         self.action_tw = QtGui.QAction(MainWindow)
  340.         self.action_tw.setObjectName(_fromUtf8("action_tw"))
  341.         self.action_th = QtGui.QAction(MainWindow)
  342.         self.action_th.setObjectName(_fromUtf8("action_th"))
  343.         self.action_fo = QtGui.QAction(MainWindow)
  344.         self.action_fo.setObjectName(_fromUtf8("action_th"))
  345.         self.mythread = MyThread()
  346.         self.menu.addAction(self.action_fi)#Добавление пунктов в меню
  347.         self.menu.addAction(self.action_fo)
  348.         self.menu.addAction(self.action_tw)
  349.         self.menu.addAction(self.action_th)
  350.         self.action_th.connect(self.action_fi, QtCore.SIGNAL('triggered()'), self.fir)#Привязка действий по нажатию на пункт
  351.         self.action_th.connect(self.action_th, QtCore.SIGNAL('triggered()'), self.all)
  352.         self.action_th.connect(self.action_tw, QtCore.SIGNAL('triggered()'), self.thr)
  353.         self.action_th.connect(self.action_fo, QtCore.SIGNAL('triggered()'), self.two)
  354.         self.menubar.addAction(self.menu.menuAction())
  355.         self.pushButton.connect(self.pushButton, QtCore.SIGNAL('clicked()'), self.on_clicked)
  356.         self.retranslateUi(MainWindow)
  357.         QtCore.QMetaObject.connectSlotsByName(MainWindow)
  358.         self.pushButton1.connect(self.pushButton1, QtCore.SIGNAL("clicked()"),
  359.                                  self.stop)
  360.         self.pushButton2.connect(self.pushButton2, QtCore.SIGNAL("clicked()"),
  361.                                  self.bd)
  362.         self.connect(self.mythread, QtCore.SIGNAL("started()"),
  363.                      self.on_started)
  364.         self.connect(self.mythread, QtCore.SIGNAL("finished()"),
  365.                      self.on_finished)
  366.         self.connect(self.mythread,
  367.                      QtCore.SIGNAL("wisignal(PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject)"),
  368.                      self.wif, QtCore.Qt.QueuedConnection)
  369.         self.connect(self.mythread,
  370.                      QtCore.SIGNAL("blsignal(PyObject, PyObject, PyObject)"),
  371.                      self.blu, QtCore.Qt.QueuedConnection)
  372.  
  373.     def retranslateUi(self, MainWindow):
  374.         MainWindow.setWindowTitle(_translate("MainWindow", "Wifi/Bluetooth Checker", None))
  375.         self.pushButton.setText(_translate("MainWindow", "Старт", None))
  376.         self.pushButton1.setText(_translate("MainWindow", "Стоп", None))
  377.         self.pushButton1.setDisabled(True)
  378.         self.pushButton2.setText(_translate("MainWindow", "Обновить", None))
  379.         self.label.setText(_translate("MainWindow", "Текущие сети", None))
  380.         self.label_2.setText(_translate("MainWindow", "Сети за всё время", None))
  381.         self.menu.setTitle(_translate("MainWindow", "Сгенерировать отчет по вхождению в промежуток ...", None))
  382.         self.action_fi.setText(_translate("MainWindow", "... только `Замечен первый раз`", None))
  383.         self.action_tw.setText(_translate("MainWindow", "... `Замечен первый раз` и `Замечен последний раз`", None))
  384.         self.action_fo.setText(_translate("MainWindow", "... только `Замечен последний раз`", None))
  385.         self.action_th.setText(_translate("MainWindow", "... за всё время существования БД", None))
  386.  
  387.     def on_clicked(self):
  388.         self.pushButton1.setDisabled(False)
  389.         if not self.mythread.isRunning():
  390.             self.mythread.start()  # Запускаем поток
  391.  
  392.     def on_started(self):  # Вызывается при запуске потока
  393.         self.pushButton.setDisabled(True)
  394.  
  395.     def stop(self):
  396.         self.mythread.ru = False
  397.  
  398.     def on_finished(self):  # Вызывается при завершении потока
  399.         self.pushButton.setDisabled(False)
  400.         self.pushButton1.setDisabled(True)
  401.  
  402.     def wif(self, ssi, sig, bez, mac, shif, tip, ft): #Функция генерации таблицы, если выбран Wi-Fi
  403.         self.table.setRowCount(len(ssi))
  404.         for i in range(0, len(ssi)):
  405.             self.table.setItem(i, 0, QtGui.QTableWidgetItem(ssi[i]))
  406.             self.table.setItem(i, 1, QtGui.QTableWidgetItem(bez[i]))
  407.             self.table.setItem(i, 2, QtGui.QTableWidgetItem(shif[i]))
  408.             self.table.setItem(i, 3, QtGui.QTableWidgetItem(mac[i]))
  409.             self.table.setItem(i, 4, QtGui.QTableWidgetItem(sig[i]))
  410.             self.table.setItem(i, 5, QtGui.QTableWidgetItem(tip[i]))
  411.             self.table.setItem(i, 6, QtGui.QTableWidgetItem(ft[i]))
  412.             self.table.resizeColumnsToContents()
  413.     def blu(self, ssi, mac, ft): #Функция генерации таблицы, если выбран Bluetooth
  414.         self.table.setRowCount(len(ssi))
  415.         for i in range(0, len(ssi)):
  416.             self.table.setItem(i, 0, QtGui.QTableWidgetItem(ssi[i]))
  417.             self.table.setItem(i, 1, QtGui.QTableWidgetItem(mac[i]))
  418.             self.table.setItem(i, 2, QtGui.QTableWidgetItem(ft[i]))
  419.             self.table.resizeColumnsToContents()
  420.  
  421.     def bd(self):
  422.         global u
  423.         a=Login.reta(self)
  424.         cost = Login.retco(self)
  425.         if a==0:
  426.             if cost == 1:
  427.                 con = lite.connect('net.db')
  428.                 with con:
  429.                     cur = con.cursor()
  430.                     cur.execute("""Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi""")
  431.                     bi = cur.fetchall()
  432.                     self.table2.setRowCount(len(bi))
  433.                     for j in range(0, len(bi)):
  434.                         te = bi[j]
  435.                         for i in range(0, len(u)):
  436.                             self.table2.setItem(j, i, QtGui.QTableWidgetItem(te[i]))
  437.                     self.table2.resizeColumnsToContents()
  438.             elif cost == 2:
  439.                 hote = Login.retho(self)
  440.                 pote = Login.retpo(self)
  441.                 pasw = Login.retpasw(self)
  442.                 log = Login.retlog(self)
  443.                 con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw, db='net')
  444.                 with con:
  445.                     cur = con.cursor()
  446.                     cur.execute("""Select `SSID`, `TIPDE`,`SHIF`, `MAC`,`TIPSE`,`FT`,`LT` from `net`.`wifi`""")
  447.                     bi = cur.fetchall()
  448.                     self.table2.setRowCount(len(bi))
  449.                     for j in range(0, len(bi)):
  450.                         te = bi[j]
  451.                         for i in range(0, len(u)):
  452.                             self.table2.setItem(j, i, QtGui.QTableWidgetItem(str(te[i])))
  453.                     self.table2.resizeColumnsToContents()
  454.         elif a==1:
  455.             if cost == 1:
  456.                 con = lite.connect('net.db')
  457.                 with con:
  458.                     cur = con.cursor()
  459.                     cur.execute("""Select NAME, MAC,FT, LT from bluetooth""")
  460.                     bi = cur.fetchall()
  461.                     self.table2.setRowCount(len(bi))
  462.                     for j in range(0, len(bi)):
  463.                         te = bi[j]
  464.                         for i in range(0, len(u)):
  465.                             self.table2.setItem(j, i, QtGui.QTableWidgetItem(te[i]))
  466.                     self.table2.resizeColumnsToContents()
  467.             elif cost == 2:
  468.                 hote = Login.retho(self)
  469.                 pote = Login.retpo(self)
  470.                 pasw = Login.retpasw(self)
  471.                 log = Login.retlog(self)
  472.                 con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw, db='net')
  473.                 with con:
  474.                     cur = con.cursor()
  475.                     cur.execute("""Select `NAME`, `MAC`,`FT`,`LT` from `net`.`bluetooth`""")
  476.                     bi = cur.fetchall()
  477.                     self.table2.setRowCount(len(bi))
  478.                     for j in range(0, len(bi)):
  479.                         te = bi[j]
  480.                         for i in range(0, len(u)):
  481.                             self.table2.setItem(j, i, QtGui.QTableWidgetItem(str(te[i])))
  482.                     self.table2.resizeColumnsToContents()
  483.  
  484.     def exc(self,ql,em,ter):
  485.         bi = []
  486.         global u
  487.         con=''
  488.         cost = Login.retco(self)
  489.         if cost == 1:
  490.             con = lite.connect('net.db')
  491.         elif cost == 2:
  492.             hote = Login.retho(self)
  493.             pote = Login.retpo(self)
  494.             pasw = Login.retpasw(self)
  495.             log = Login.retlog(self)
  496.             con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw, db='net')
  497.         with con:
  498.             cur = con.cursor()
  499.             try:
  500.                 cur.execute(ql,(em,ter))
  501.             except (TypeError,lite.ProgrammingError):
  502.                 try:
  503.                     cur.execute(ql, (em, ter, em, ter))
  504.                 except (TypeError,lite.ProgrammingError):
  505.                     cur.execute(ql)
  506.             bi = cur.fetchall()
  507.         if em!="":
  508.             name = em+" - "+ter+".xlsx"
  509.         else:
  510.             c = datetime.datetime.now()
  511.             c.strftime('%Y-%m-%d')
  512.             c = str(c)
  513.             c = c[0:len(c) - 16]
  514.             name = "Все на " +c+".xlsx"
  515.         if str(bi)!="()":
  516.             workbook = xlsxwriter.Workbook(name)
  517.             worksheet = workbook.add_worksheet(name)
  518.             ma = workbook.add_format({'align':'center'})
  519.             mai =workbook.add_format({'align':'center'})
  520.             ma.set_font_name('Times New Roman')
  521.             mai.set_font_name('Times New Roman')
  522.             mai.set_font_size(18)
  523.             for i in range(0, len(u)):
  524.                 worksheet.write(1, i, u[i], ma)
  525.             if len(u)>5:
  526.                 worksheet.merge_range('A1:G1', 'Отчет по радиоизлучениям', mai)
  527.                 worksheet.set_column(0, 1, 10)
  528.                 worksheet.set_column(1, 4, 15)
  529.                 worksheet.set_column(4, 5, 10)
  530.                 worksheet.set_column(5, 7, 22)
  531.             else:
  532.                 worksheet.merge_range('A1:D1', 'Отчет по радиоизлучениям', mai)
  533.                 worksheet.set_column(0, 1, 10)
  534.                 worksheet.set_column(1, 2, 15)
  535.                 worksheet.set_column(2, 4, 22)
  536.             for j in range(0, len(bi)):
  537.                 temp = bi[j]
  538.                 for i in range(0, len(u)):
  539.                     worksheet.write(j + 2, i, str(temp[i]), ma)
  540.             workbook.close()
  541.             added= 'Сгенерировано в '+ name
  542.             QtGui.QMessageBox.information(
  543.                 self, 'Сгенерировано', added,
  544.                 QtGui.QMessageBox.Yes
  545.             )
  546.         else:
  547.             QtGui.QMessageBox.warning(
  548.                 self, 'Ничего не найдено', 'В указанном промежутке ничего не найдено!',
  549.                 QtGui.QMessageBox.Yes
  550.             )
  551.  
  552.  
  553.     def inp(self):
  554.         em = ''
  555.         ter = ''
  556.         text, ok = QtGui.QInputDialog.getText(self, 'Введение данных',
  557.                                               'Введите первую дату в формате ГГГГ-ММ-ДД(дефисы обязательны)')
  558.         if ok:
  559.             em = text
  560.             text, ok = QtGui.QInputDialog.getText(self, 'Введение данных',
  561.                                               'Введите вторую дату(+1 день, если необходимо включить дату) в формате ГГГГ-ММ-ДД(дефисы обязательны)')
  562.             if ok:
  563.                 ter = text
  564.         return em,ter
  565.  
  566.     def thr(self):
  567.         em=''
  568.         ter=''
  569.         em, ter = self.inp()
  570.         if (em != '') & (ter != ''):
  571.             a = Login.reta(self)
  572.             cost = Login.retco(self)
  573.             if a == 0:
  574.                 if cost == 1:
  575.                     ql = "Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi WHERE LT between ? and ? or FT between ? and ?"
  576.                 else:
  577.                     ql = "Select `SSID`, `TIPDE`,`SHIF`, `MAC`,`TIPSE`,`FT`,`LT` from `net`.`wifi` where `LT` between %s and %s or `FT` between %s and %s"
  578.             else:
  579.                 if cost == 1:
  580.                     ql = "Select NAME, MAC,FT, LT from bluetooth WHERE LT between ? and ? or FT between ? and ?"
  581.                 else:
  582.                     ql = "Select `NAME`, `MAC`,`FT`,`LT` from `net`.`bluetooth` where `LT` between %s and %s or `FT` between %s and %s"
  583.             self.exc(ql, em, ter)
  584.  
  585.  
  586.     def two(self):
  587.         em = ''
  588.         ter = ''
  589.         em, ter = self.inp()
  590.         a = Login.reta(self)
  591.         cost = Login.retco(self)
  592.         if (em != '') & (ter != ''):
  593.             if a == 0:
  594.                 if cost == 1:
  595.                     ql = "Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi WHERE LT between ? and ?"
  596.                 else:
  597.                     ql = "Select `SSID`, `TIPDE`,`SHIF`, `MAC`,`TIPSE`,`FT`,`LT` from `net`.`wifi` where `LT` between %s and %s"
  598.             else:
  599.                 if cost == 1:
  600.                     ql = "Select NAME, MAC,FT, LT from bluetooth WHERE LT between ? and ?"
  601.                 else:
  602.                     ql = "Select `NAME`, `MAC`,`FT`,`LT` from `net`.`bluetooth` where `LT` between %s and %s"
  603.             self.exc(ql, em, ter)
  604.  
  605.     def fir(self):
  606.         em = ''
  607.         ter = ''
  608.         em, ter=self.inp()
  609.         a = Login.reta(self)
  610.         cost = Login.retco(self)
  611.         if (em != '') & (ter!=''):
  612.             if a == 0:
  613.                 if cost == 1:
  614.                     ql = "Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi WHERE FT between ? and ?"
  615.                 else:
  616.                     ql = "Select `SSID`, `TIPDE`,`SHIF`, `MAC`,`TIPSE`,`FT`,`LT` from `net`.`wifi` where `FT` between %s and %s"
  617.             else:
  618.                 if cost == 1:
  619.                     ql = "Select NAME, MAC,FT, LT from bluetooth WHERE FT between ? and ?"
  620.                 else:
  621.                     ql = "Select `NAME`, `MAC`,`FT`,`LT` from `net`.`bluetooth` where `FT` between %s and %s"
  622.             self.exc(ql, em, ter)
  623.  
  624.     def all(self):
  625.         em=''
  626.         ter=''
  627.         a = Login.reta(self)
  628.         cost = Login.retco(self)
  629.         if a==0:
  630.             if cost == 1:
  631.                 ql="Select SSID, TIPDE,SHIF, MAC,TIPSE, FT, LT from wifi"
  632.             else:
  633.                 ql="Select `SSID`, `TIPDE`,`SHIF`, `MAC`,`TIPSE`,`FT`,`LT` from `net`.`wifi`"
  634.         else:
  635.             if cost == 1:
  636.                 ql="Select NAME, MAC,FT, LT from bluetooth"
  637.             else:
  638.                 ql="Select `NAME`, `MAC`,`FT`,`LT` from `net`.`bluetooth`"
  639.         self.exc(ql,em,ter)
  640.  
  641. import sys
  642. app = QtGui.QApplication(sys.argv)
  643. login = Login()
  644. if login.exec_() == QtGui.QDialog.Accepted:
  645.     MainWindow = QtGui.QMainWindow()
  646.     ui = Ui_MainWindow()
  647.     ui.setupUi(MainWindow)
  648.     MainWindow.show()
  649. else:
  650.     sys.exit()
  651. app.exec_()
  652.  
  653. import pymysql
  654. from PySide import QtCore, QtGui
  655. try:
  656.     _fromUtf8 = QtCore.QString.fromUtf8
  657. except AttributeError:
  658.     def _fromUtf8(s):
  659.         return s
  660. global cost
  661. global a
  662. global log, pasw, hote, pote
  663. log, pasw,hote,pote="","","",""
  664. cost = 0
  665. a = 0
  666. try:
  667.     _encoding = QtGui.QApplication.UnicodeUTF8
  668.     def _translate(context, text, disambig):
  669.         return QtGui.QApplication.translate(context, text, disambig, _encoding)
  670. except AttributeError:
  671.     def _translate(context, text, disambig):
  672.         return QtGui.QApplication.translate(context, text, disambig)
  673. class Login(QtGui.QDialog):
  674.     def __init__(self, parent=None):
  675.         super(Login, self).__init__(parent)
  676.         sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
  677.         sizePolicy.setHorizontalStretch(0)
  678.         sizePolicy.setVerticalStretch(0)
  679.         self.setSizePolicy(sizePolicy)
  680.         self.setMinimumSize(QtCore.QSize(180, 100))
  681.         self.setWindowTitle(_fromUtf8("Авторизация"))
  682.         self.setWindowFlags(QtCore.Qt.WindowTitleHint)
  683.         self.setWindowIcon(QtGui.QIcon('icons/test.png'))
  684.         self.textName = QtGui.QLineEdit(self)
  685.         self.textPass = QtGui.QLineEdit(self)
  686.         self.ho = QtGui.QLineEdit(self)
  687.         self.po = QtGui.QLineEdit(self)
  688.         self.textPass.setEchoMode(QtGui.QLineEdit.Password)
  689.         self.buttonLogin = QtGui.QPushButton('Войти', self)
  690.         self.buttonLogin.clicked.connect(self.handleLogin)
  691.         self.buttonbl = QtGui.QPushButton('Bluetooth', self)
  692.         self.buttonbl.clicked.connect(self.seta)
  693.         self.buttonwi = QtGui.QPushButton('Wifi', self)
  694.         self.buttonwi.clicked.connect(self.swi)
  695.         self.buttonLo = QtGui.QPushButton('SQLite локальная база', self)
  696.         self.buttonLo.clicked.connect(self.sqli)
  697.         self.buttontw = QtGui.QPushButton('MySQL локальная база', self)
  698.         self.buttontw.clicked.connect(self.msql)
  699.         self.buttontr = QtGui.QPushButton('Подключиться к БД', self)
  700.         self.buttontr.clicked.connect(self.contact)
  701.         self.label = QtGui.QLabel(self)
  702.         self.label.setObjectName(_fromUtf8("label"))
  703.         self.label_2 = QtGui.QLabel(self)
  704.         self.label_2.setObjectName(_fromUtf8("label_2"))
  705.         self.label_3 = QtGui.QLabel(self)
  706.         self.label_3.setObjectName(_fromUtf8("label_3"))
  707.         self.label_4 = QtGui.QLabel(self)
  708.         self.label_4.setObjectName(_fromUtf8("label_4"))
  709.         self.label_5 = QtGui.QLabel(self)
  710.         self.label_5.setObjectName(_fromUtf8("label_5"))
  711.         self.label.setText(_translate("Dialog", "Логин:", None))
  712.         self.label_2.setText(_translate("Dialog", "Пароль:", None))
  713.         self.label_3.setText(_translate("Dialog", "Хост:", None))
  714.         self.label_4.setText(_translate("Dialog", "Порт:", None))
  715.         self.label_5.setText(_translate("Dialog", "Выберите БД для подключения", None))
  716.         self.label_6 = QtGui.QLabel(self)
  717.         self.label_6.setObjectName(_fromUtf8("label_6"))
  718.         self.label_6.setText(_translate("Dialog", "Выберите тип радиоизлучения", None))
  719.         layout = QtGui.QVBoxLayout(self)
  720.         layout.addWidget(self.label)
  721.         layout.addWidget(self.label_5)
  722.         layout.addWidget(self.textName)
  723.         layout.addWidget(self.label_2)
  724.         layout.addWidget(self.textPass)
  725.         layout.addWidget(self.label_3)
  726.         layout.addWidget(self.ho)
  727.         layout.addWidget(self.label_4)
  728.         layout.addWidget(self.label_6)
  729.         layout.addWidget(self.po)
  730.         layout.addWidget(self.buttonLogin)
  731.         layout.addWidget(self.buttontr)
  732.         layout.addWidget(self.buttonbl)
  733.         layout.addWidget(self.buttonwi)
  734.         self.label.hide()
  735.         self.textName.hide()
  736.         self.label_2.hide()
  737.         self.label_3.hide()
  738.         self.ho.hide()
  739.         self.ho.setText('localhost')
  740.         self.po.setText('3306')
  741.         self.po.hide()
  742.         self.buttontr.hide()
  743.         self.label_4.hide()
  744.         self.label_5.hide()
  745.         self.textPass.hide()
  746.         self.buttonLogin.hide()
  747.         layout.addWidget(self.buttonLo)
  748.         layout.addWidget(self.buttontw)
  749.         self.buttontw.hide()
  750.         self.buttonLo.hide()
  751.     def seta(self):
  752.         global a
  753.         a=1
  754.         self.buttonwi.hide()
  755.         self.buttonbl.hide()
  756.         self.label_6.hide()
  757.         self.label_5.show()
  758.         self.buttontw.show()
  759.         self.buttonLo.show()
  760.         self.resize(185, 100)
  761.     def swi(self):
  762.         self.buttonwi.hide()
  763.         self.buttonbl.hide()
  764.         self.label_6.hide()
  765.         self.label_5.show()
  766.         self.buttontw.show()
  767.         self.buttonLo.show()
  768.         self.resize(185, 100)
  769.     def sqli(self):
  770.         self.label.show()
  771.         self.label_5.hide()
  772.         self.textName.show()
  773.         self.label_2.show()
  774.         self.label_3.hide()
  775.         self.ho.hide()
  776.         self.label_4.hide()
  777.         self.textPass.show()
  778.         self.buttonLogin.show()
  779.         self.buttontw.hide()
  780.         self.buttonLo.hide()
  781.         self.po.hide()
  782.         self.buttontr.hide()
  783.         self.setMaximumSize(QtCore.QSize(150, 150))
  784.         self.resize(150,150)
  785.         global cost
  786.         cost=cost+1
  787.     def msql(self):
  788.         self.label_3.show()
  789.         self.label_5.hide()
  790.         self.textName.show()
  791.         self.label_4.show()
  792.         self.label.show()
  793.         self.ho.show()
  794.         self.po.show()
  795.         self.label_2.show()
  796.         self.textPass.show()
  797.         self.buttonLo.hide()
  798.         self.buttontw.hide()
  799.         self.buttontr.show()
  800.         self.setMinimumSize(QtCore.QSize(180, 200))
  801.         global cost
  802.         cost = cost + 1
  803.         self.resize(200,200)
  804.  
  805.     def contact(self):
  806.         global log, pasw, hote, pote
  807.         log=self.textName.text()
  808.         pasw = self.textPass.text()
  809.         hote = self.ho.text()
  810.         pote = self.po.text()
  811.         try:
  812.             con = pymysql.connect(host=hote, port=int(pote), user=log, passwd=pasw,db='net')
  813.             cur = con.cursor()
  814.             cur.close()
  815.             con.close()
  816.             self.sqli()
  817.         except pymysql.err.OperationalError:
  818.             QtGui.QMessageBox.warning(self, 'Ошибка', 'Неверные данные, проверьте снова')
  819.  
  820.  
  821.     def retco(self):
  822.         return cost
  823.  
  824.     def retho(self):
  825.         return hote
  826.  
  827.     def retpo(self):
  828.         return pote
  829.  
  830.     def retlog(self):
  831.         return log
  832.  
  833.     def retpasw(self):
  834.         return pasw
  835.  
  836.     def reta(self):
  837.         return a
  838.  
  839.     def handleLogin(self):
  840.         if (self.textName.text() == 'admin' and self.textPass.text() == 'test'):
  841.             self.accept()
  842.         else:
  843.             QtGui.QMessageBox.warning(self, 'Ошибка', 'Неверный пользоваетель или пароль')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement