· 7 years ago · Dec 27, 2018, 12:16 PM
1import datetime
2import bluetooth
3import sqlite3 as lite
4import pymysql
5from PySide import QtCore
6from logon import Login
7k = ['SSID', 'Тип защиты', 'Шифрование', 'MAC-адреÑ', 'Сигнал', 'Тип Ñети']
8class 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
249import time
250import pymysql
251import xlsxwriter
252from logon import Login
253import sqlite3 as lite
254from MThread import MyThread
255from PySide import QtCore, QtGui
256import datetime
257try:
258 _fromUtf8 = QtCore.QString.fromUtf8
259except AttributeError:
260 def _fromUtf8(s):
261 return s
262
263try:
264 _encoding = QtGui.QApplication.UnicodeUTF8
265
266
267 def _translate(context, text, disambig):
268 return QtGui.QApplication.translate(context, text, disambig, _encoding)
269except AttributeError:
270 def _translate(context, text, disambig):
271 return QtGui.QApplication.translate(context, text, disambig)
272global k
273k=[]
274class 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
641import sys
642app = QtGui.QApplication(sys.argv)
643login = Login()
644if login.exec_() == QtGui.QDialog.Accepted:
645 MainWindow = QtGui.QMainWindow()
646 ui = Ui_MainWindow()
647 ui.setupUi(MainWindow)
648 MainWindow.show()
649else:
650 sys.exit()
651app.exec_()
652
653import pymysql
654from PySide import QtCore, QtGui
655try:
656 _fromUtf8 = QtCore.QString.fromUtf8
657except AttributeError:
658 def _fromUtf8(s):
659 return s
660global cost
661global a
662global log, pasw, hote, pote
663log, pasw,hote,pote="","","",""
664cost = 0
665a = 0
666try:
667 _encoding = QtGui.QApplication.UnicodeUTF8
668 def _translate(context, text, disambig):
669 return QtGui.QApplication.translate(context, text, disambig, _encoding)
670except AttributeError:
671 def _translate(context, text, disambig):
672 return QtGui.QApplication.translate(context, text, disambig)
673class 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, 'Ошибка', 'Ðеверный пользоваетель или пароль')