You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

358 lines
12 KiB

# coding=utf-8
import sys
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QWidget, QFrame, QCheckBox, QLineEdit, QLabel, QPushButton, QTextBrowser, QTableWidget, \
QAbstractItemView, QTableWidgetItem, QMenuBar, QStatusBar, QApplication, QMainWindow
# mysql模块
import pymysql
import pygal
from fuzzywuzzy import fuzz, process
import re
import os
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt
from PyQt5 import QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.conn = pymysql.connect(host='124.222.200.220', port=3306, user='root', password='Fei1912760', db='data',charset='utf8',)
self.cur = self.conn.cursor()
self.sqlstring = "select * from "
MainWindow.setObjectName("MainWindow")
MainWindow.resize(900, 700)
MainWindow.setWindowIcon(QtGui.QIcon('../test1.jpg'))
# 根据窗口的大小固定大小 这里相当于设置全屏
MainWindow.setFixedSize(MainWindow.width(), MainWindow.height())
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(10, 10, 711, 141))
self.frame.setFrameShape( QFrame.StyledPanel)
self.frame.setFrameShadow( QFrame.Raised)
self.frame.setObjectName("frame")
#大框
self.Cname = QLineEdit(self.frame) #QLineEdit单行输入文本框
self.Cname.setGeometry(QtCore.QRect(280, 50, 200, 31))
self.Cname.setObjectName("Cname")
self.Cname.setPlaceholderText('请输入...')
#cnnvd
self.Cnnvd = QPushButton(self.frame)
self.Cnnvd.setGeometry(QtCore.QRect(1, 0, 70, 31))
self.Cnnvd.setObjectName("Cnnvd")
self.Cnnvd.clicked.connect(self.cnnvd_btn)
#wooyun
self.Wooyun = QPushButton(self.frame)
self.Wooyun.setGeometry(QtCore.QRect(71, 0, 70, 31))
self.Wooyun.setObjectName("Wooyun")
self.Wooyun.clicked.connect(self.wooyun_btn)
#seebug
self.Seebug = QPushButton(self.frame)
self.Seebug.setGeometry(QtCore.QRect(141, 0, 70, 31))
self.Seebug.setObjectName("Seebug")
self.Seebug.clicked.connect(self.seebug_btn)
#查询按钮
self.find = QPushButton(self.frame)
self.find.setGeometry(QtCore.QRect(630, 30, 75, 31))
self.find.setObjectName("find")
self.find.clicked.connect(self.find_btn)
#圆饼图按钮
self.yuan = QPushButton(self.frame)
self.yuan.setGeometry(QtCore.QRect(630, 70, 75, 31))
self.yuan.setObjectName("yuan")
self.yuan.clicked.connect(self.shuju_btn)
#结果框
self.result_out = QTableWidget(self.centralwidget)
# self.result_out = QTableWidget(4, 100)
self.result_out.setEditTriggers( QAbstractItemView.NoEditTriggers) # 不可编辑表格
self.result_out.setGeometry(QtCore.QRect(40, 150, 800, 448)) #左上宽高
self.result_out.setObjectName("result_out")
self.result_out.setColumnCount(4)
self.result_out.setRowCount(100)
self.result_out.setHorizontalHeaderLabels(['name','numbering','href','time'])
self.result_out.horizontalHeader().setDefaultSectionSize(171) #总列长
self.result_out.horizontalHeader().setMinimumSectionSize(43) #单个列的长度
self.result_out.verticalHeader().setDefaultSectionSize(20)
self.pushButton_2 = QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(765, 620, 75, 31))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_2.clicked.connect(self.p2_clicked)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 509, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def p2_clicked(self):
self.pyqt_clicked1.emit()
def find_btn(self):
self.pyqt_clicked2.emit()
def cnnvd_btn(self):
self.pyqt_clicked3.emit()
def wooyun_btn(self):
self.pyqt_clicked4.emit()
def seebug_btn(self):
self.pyqt_clicked6.emit()
def shuju_btn(self):
self.pyqt_clicked5.emit()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("v1.0", "v1.0", None))
#按钮名称
self.find.setText(_translate("MainWindow", "查询", None))
self.Cnnvd.setText(_translate("MainWindow","cnnvd",None))
self.Wooyun.setText(_translate("MainWindow", "Wuyun", None))
self.yuan.setText(_translate("MainWindow", "结果图", None))
self.Seebug.setText(_translate("MainWindow", "seebug", None))
self.pushButton_2.setText(_translate("MainWindow", "退出", None))
def mousePressEvent(self, event):
# if event.KeyWord == Qt.LeftButton:
print("nihao")
#点击cnnvd表
def buttonCnnvd(self):
print("1")
self.temp_sqlstring1 =self.sqlstring+"cnnvd where "
self.temp = "cnnvd"
# 点击wooyun表
def buttonWuyun(self):
print("2")
self.temp_sqlstring1 = self.sqlstring + "wooyun where "
self.temp = "wooyun"
# 点击seebug表
def buttonSeebug(self):
print("3")
self.temp_sqlstring1 = self.sqlstring + "seebug where "
self.temp = "seebug"
def buttonTest(self):
Ui_MainWindow.temp_sqlstring =self.temp_sqlstring1
is_first = True
mystr = self.Cname.text()
if is_first:
is_first = False
if mystr.find("%") == -1:
Ui_MainWindow.temp_sqlstring += "name like '" +"%"+self.Cname.text() +"%"+"'"
else:
Ui_MainWindow.temp_sqlstring += "name like '" +"%"+self.Cname.text() +"%"+"'"
else:
if mystr.find("%") == -1:
Ui_MainWindow.temp_sqlstring += " and name like '" +"%"+self.Cname.text() +"%"+"'"
else:
Ui_MainWindow.temp_sqlstring += " and name like '" +"%"+self.Cname.text() +"%"+"'"
self.result_out.clearContents() # 每一次查询时清除表格中信息
if not (is_first):
print(Ui_MainWindow.temp_sqlstring)
self.cur.execute(Ui_MainWindow.temp_sqlstring)
data = self.cur.fetchall()
print(data)
x = 0
for i in data:
y = 0
for j in i:
self.result_out.setItem(x, y, QTableWidgetItem(str(data[x][y])))
y = y + 1
x = x + 1
print("find button pressed")
#输出圆饼图
def fenXi(self):
print('3')
# self.temp = self.temp
Ui_MainWindow.temp_sql = "select name from cnnvd"
print(Ui_MainWindow.temp_sql)
# self.cur.execute("(select name from cnnvd where name like '%sql%') union all (select name from wooyun where name like '%sql%')")
self.cur.execute(Ui_MainWindow.temp_sql)
result=[]
d ={}
d1 ={}
for i in self.cur:
for j in i:
result.append(j)
for i in result:
x = i.split(" ")
for i in x:
chinese = re.findall('[\u4e00-\u9fa5]+',i)
# print(chinese)
for j in chinese:
if j in d:
d[j]+=1
else:
d[j]=1
lst= sorted(d.items(),key=lambda x:x[1],reverse=True)
# print(lst)
return lst
# print(lst[0])
def buttonExit(self):
self.conn.commit()
self.cur.close()
self.conn.close()
self.close()
def keyPressEvent(self, e):
if e.key() == QtCore.Qt.Key_Escape:
self.buttonExit()
class MyWindow(QMainWindow, Ui_MainWindow):
pyqt_clicked1 = pyqtSignal()
pyqt_clicked2 = pyqtSignal()
pyqt_clicked3 = pyqtSignal()
pyqt_clicked4 = pyqtSignal()
pyqt_clicked5 = pyqtSignal()
pyqt_clicked6 = pyqtSignal()
def __init__(self):
super(MyWindow, self).__init__()
self.setupUi(self)
self.pyqt_clicked1.connect(self.buttonExit)
self.pyqt_clicked2.connect(self.buttonTest)
self.pyqt_clicked3.connect(self.buttonCnnvd)
self.pyqt_clicked4.connect(self.buttonWuyun)
self.pyqt_clicked5.connect(self.fenXi)
self.pyqt_clicked6.connect(self.buttonSeebug)
self.show()
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("数据分析")
self.setGeometry(100, 100, 1280, 600)
self.create_piechart()
def create_piechart(self):
series = QPieSeries()
series.append("跨站脚本漏洞", 161)
series.append("缓冲区错误漏洞", 155)
series.append("输入验证错误漏洞", 143)
series.append("代码问题漏洞", 125)
series.append("SQL注入漏洞", 101)
series.append("资源管理错误漏洞", 91)
series.append("路径遍历漏洞", 32)
series.append("信息泄露漏洞", 30)
series.append("权限许可和访问控制问题漏洞", 28)
series.append("跨站请求伪造漏洞", 27)
slice0 = QPieSlice()
slice0 = series.slices()[0]
slice0.setLabelVisible(True)
slice1 = QPieSlice()
slice1 = series.slices()[1]
slice1.setLabelVisible(True)
slice2 = QPieSlice()
slice2 = series.slices()[2]
slice2.setLabelVisible(True)
slice3 = QPieSlice()
slice3 = series.slices()[3]
slice3.setLabelVisible(True)
slice4 = QPieSlice()
slice4 = series.slices()[4]
slice4.setLabelVisible(True)
slice5 = QPieSlice()
slice5 = series.slices()[5]
slice5.setLabelVisible(True)
slice6 = QPieSlice()
slice6 = series.slices()[6]
slice6.setLabelVisible(True)
slice7 = QPieSlice()
slice7 = series.slices()[7]
slice7.setLabelVisible(True)
slice8 = QPieSlice()
slice8 = series.slices()[8]
slice8.setLabelVisible(True)
slice9 = QPieSlice()
slice9 = series.slices()[9]
slice9.setLabelVisible(True)
chart = QChart()
chart.legend().hide()
chart.addSeries(series)
chart.createDefaultAxes()
chart.setAnimationOptions(QChart.SeriesAnimations)
chart.setTitle("Pie Chart Example")
chart.legend().setVisible(True)
chart.legend().setAlignment(Qt.AlignBottom)
chartview = QChartView(chart)
chartview.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartview)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.aboutToQuit.connect(app.deleteLater)
myshow = MyWindow()
b = Window()
myshow.yuan.clicked.connect(b.show)
sys.exit(app.exec_())
# app.exec_()
# sys.exit(0)