Compare commits

..
168 Commits
Author SHA1 Message Date
PYDT f4d032e5c7 Add files via upload 2024-02-25 02:17:22 +08:00
PYDT 4114aac6c3 Add files via upload 2024-02-25 01:45:23 +08:00
PYDT 0c43c6bb5f Add files via upload 2024-02-24 23:43:10 +08:00
PYDT 7b3c965b88 Add files via upload 2024-02-24 21:55:53 +08:00
PYDT 02a8de4696 Add files via upload 2024-02-23 08:38:55 +08:00
PYDT 22fa3eff71 Add files via upload 2024-02-22 14:32:17 +08:00
PYDT 69361209c3 Add files via upload 2024-02-22 01:08:15 +08:00
PYDT ff0aeaa4ef Add files via upload 2024-02-21 10:21:38 +08:00
PYDT 3c461dfd4b Add files via upload 2024-02-21 10:13:11 +08:00
PYDT c6beda383e Add files via upload 2024-02-21 07:10:15 +08:00
PYDT 3d59f3befd Add files via upload 2024-02-21 00:42:59 +08:00
PYDT e54f0db239 Update README.md 2024-02-20 14:41:04 +08:00
PYDT 0f877f2749 Delete PYAS_Function.vdb 2024-02-20 14:02:47 +08:00
PYDT b69ba165d9 Add files via upload 2024-02-20 14:02:37 +08:00
PYDT 965076fe52 Delete PYAS_Compress.py 2024-02-20 13:43:32 +08:00
PYDT f4d6cb0430 Add files via upload 2024-02-19 10:39:21 +08:00
PYDT 19d412188c Add files via upload 2024-02-19 10:38:19 +08:00
PYDT 798d85978a Add files via upload 2024-02-11 19:53:57 +08:00
PYDT 819742d753 Add files via upload 2024-02-11 16:12:59 +08:00
PYDT 9b32fa6219 Add files via upload 2024-02-11 10:56:55 +08:00
PYDT 2c93661726 Add files via upload 2024-02-10 23:02:45 +08:00
PYDT bddaca2a1e Add files via upload 2024-02-10 22:08:39 +08:00
PYDT 2f06f2e051 Add files via upload 2024-02-10 20:52:38 +08:00
PYDT 1d26e46bd9 Add files via upload 2024-02-10 20:01:52 +08:00
PYDT fa0ff826a3 Add files via upload 2024-02-10 19:50:01 +08:00
PYDT e1b3114c83 Add files via upload 2024-02-10 19:41:34 +08:00
PYDT a655f075db Add files via upload 2024-02-10 19:40:54 +08:00
PYDT 13d4ebbf6b Add files via upload 2024-02-09 14:24:52 +08:00
PYDT 913d10b1ee Add files via upload 2024-02-09 14:18:30 +08:00
PYDT eb541a0104 Add files via upload 2024-01-30 19:03:05 +08:00
PYDT 2063186994 Add files via upload 2024-01-28 16:20:22 +08:00
PYDT 860d571039 Delete PYAS_Function.py 2024-01-28 15:41:03 +08:00
PYDT c6d79adf9a Add files via upload 2024-01-28 15:40:44 +08:00
PYDT 5453900ba1 Add files via upload 2024-01-28 03:29:28 +08:00
PYDT 5029ff1e37 Add files via upload 2024-01-28 03:13:40 +08:00
PYDT 47fb691339 Add files via upload 2024-01-28 03:12:42 +08:00
PYDT dff9dd17bf Add files via upload 2024-01-27 11:58:36 +08:00
PYDT 5bc4a16b90 Add files via upload 2024-01-26 10:14:32 +08:00
PYDT b1918953b0 Update README.md 2024-01-26 09:35:36 +08:00
PYDT 6e89ed7007 Add files via upload 2024-01-26 09:33:16 +08:00
PYDT 744e8bc941 Add files via upload 2024-01-25 20:21:35 +08:00
PYDT 0b98ce7ffd Add files via upload 2024-01-25 20:19:27 +08:00
PYDT ca8b293b06 Delete PYAS_Function.zip 2024-01-25 18:10:50 +08:00
PYDT e28d99a257 Add files via upload 2024-01-25 18:09:58 +08:00
PYDT 488feb6108 Add files via upload 2024-01-25 16:12:47 +08:00
PYDT 6cdb106f07 Add files via upload 2024-01-24 22:58:36 +08:00
PYDT a7c5ccd27a Add files via upload 2024-01-24 22:56:15 +08:00
PYDT 136f9dbf0a Add files via upload 2024-01-24 22:47:40 +08:00
PYDT 16b45c3450 Add files via upload 2024-01-24 15:13:42 +08:00
PYDT 68330fad52 Add files via upload 2024-01-24 12:57:03 +08:00
PYDT dca167518d Add files via upload 2024-01-24 12:18:50 +08:00
PYDT bcc44422ef Add files via upload 2024-01-24 08:18:06 +08:00
PYDT e080e03466 Add files via upload 2024-01-24 07:54:57 +08:00
PYDT b6e75490de Add files via upload 2024-01-23 22:19:24 +08:00
PYDT 196c014576 Add files via upload 2024-01-23 16:58:43 +08:00
PYDT 236110df5e Update README.md 2024-01-23 12:34:58 +08:00
PYDT b2ae192056 Update README.md 2024-01-23 11:56:05 +08:00
PYDT f080969a62 Update README.md 2024-01-23 11:52:38 +08:00
PYDT 69d969898d Update README.md 2024-01-23 11:44:26 +08:00
PYDT a21a766926 Update README.md 2024-01-23 11:41:44 +08:00
PYDT f11fdb6b96 Update README.md 2024-01-23 11:34:02 +08:00
PYDT c7445df4c6 Update README.md 2024-01-23 11:07:51 +08:00
PYDT 2c45c9bc5b Update README.md 2024-01-23 11:02:53 +08:00
PYDT ae5ed27cb6 Update README.md 2024-01-23 10:57:13 +08:00
PYDT 11f9fe3c8b Add files via upload 2024-01-23 10:55:05 +08:00
PYDT e93ad3bd33 Delete PYAS_Function.7z 2024-01-23 10:54:34 +08:00
PYDT 20c26ea0a8 Add files via upload 2024-01-23 10:45:31 +08:00
PYDT 5925a80d3b Add files via upload 2024-01-22 16:19:31 +08:00
PYDT 56cb95e523 Add files via upload 2024-01-22 16:11:56 +08:00
PYDT a6e101cc5d Add files via upload 2024-01-22 12:49:46 +08:00
PYDT e8292b6f81 Add files via upload 2024-01-21 23:35:59 +08:00
PYDT 37a4392c94 Add files via upload 2024-01-21 15:49:43 +08:00
PYDT a897f75ecf Add files via upload 2024-01-20 22:16:36 +08:00
PYDT 79055d3779 Add files via upload 2024-01-19 16:31:27 +08:00
PYDT 3d39aa7f97 Delete PYAS_Function_Virus.7z 2024-01-19 11:18:58 +08:00
PYDT 2c1d09affc Delete PYAS_Function_Safe.7z 2024-01-19 11:18:42 +08:00
PYDT 4775358a79 Add files via upload 2024-01-19 11:18:28 +08:00
PYDT cb5f8e8191 Add files via upload 2024-01-19 11:10:48 +08:00
PYDT 8209b4ff01 Add files via upload 2024-01-19 11:05:39 +08:00
PYDT e110134d24 Add files via upload 2024-01-19 07:30:45 +08:00
PYDT c2248fdd49 Add files via upload 2024-01-18 16:51:36 +08:00
PYDT 58fea5b0ca Add files via upload 2024-01-18 15:29:15 +08:00
PYDT 7a36946545 Add files via upload 2024-01-18 13:00:09 +08:00
PYDT 563d9a8a36 Add files via upload 2024-01-18 12:52:17 +08:00
PYDT bdbd0617b5 Add files via upload 2024-01-18 09:04:50 +08:00
PYDT 67006d88cb Add files via upload 2024-01-17 21:39:54 +08:00
PYDT ded2083462 Add files via upload 2024-01-17 16:18:32 +08:00
PYDT 87b7d044f8 Add files via upload 2024-01-17 14:37:47 +08:00
PYDT 9781cef29b Add files via upload 2024-01-17 13:45:19 +08:00
PYDT 52c393148b Add files via upload 2024-01-17 13:33:21 +08:00
PYDT b98d617d6f Add files via upload 2024-01-16 17:00:10 +08:00
PYDT b475573e0e Add files via upload 2024-01-16 15:37:53 +08:00
PYDT ba3c85d5b2 Add files via upload 2024-01-16 10:06:13 +08:00
PYDT 410777efb3 Add files via upload 2024-01-15 22:11:42 +08:00
PYDT 0b3fb452b4 Add files via upload 2024-01-15 19:26:37 +08:00
PYDT aaff565172 Add files via upload 2024-01-15 17:13:45 +08:00
PYDT dd0786648e Add files via upload 2024-01-15 16:46:10 +08:00
PYDT e145ffa111 Add files via upload 2024-01-15 11:31:14 +08:00
PYDT b322468c1c Add files via upload 2024-01-15 11:17:40 +08:00
PYDT 992d8b909c Add files via upload 2024-01-15 09:39:53 +08:00
PYDT d5327c6370 Delete How To Use.py 2024-01-15 09:39:35 +08:00
PYDT 0d13bb5f8f Add files via upload 2024-01-15 09:39:08 +08:00
PYDT 3ad08a33a9 Add files via upload 2024-01-15 09:35:25 +08:00
PYDT 533e0ed736 Add files via upload 2024-01-15 09:15:58 +08:00
PYDT e7ba77b600 Add files via upload 2024-01-15 00:12:33 +08:00
PYDT f3b84b04f7 Add files via upload 2024-01-14 21:17:04 +08:00
PYDT f4c948aca9 Add files via upload 2024-01-13 23:01:02 +08:00
PYDT 1507f5df5a Add files via upload 2024-01-13 18:32:48 +08:00
PYDT 0562d11a71 Add files via upload 2024-01-13 13:23:35 +08:00
PYDT b3a9f5cce0 Add files via upload 2024-01-13 13:17:56 +08:00
PYDT 5974a3c85a Add files via upload 2024-01-13 13:14:37 +08:00
PYDT 78c732d2b8 Add files via upload 2024-01-13 12:42:11 +08:00
PYDT d087b2dc16 Add files via upload 2024-01-12 19:08:57 +08:00
PYDT 16c5d014aa Add files via upload 2024-01-12 10:42:34 +08:00
PYDT e661ff400f Update README.md 2024-01-12 09:53:48 +08:00
PYDT b8c8e2d04d Update README.md 2024-01-12 09:42:24 +08:00
PYDT 8fc36f2b20 Update README.md 2024-01-12 09:37:35 +08:00
PYDT 4b73a09a09 Update README.md 2024-01-12 09:26:49 +08:00
PYDT 65c4d5d5b7 Update README.md 2024-01-12 09:25:45 +08:00
PYDT 19d0702aee Update LICENSE.md 2024-01-12 09:15:08 +08:00
PYDT b74e8330de Add files via upload 2024-01-12 08:24:21 +08:00
PYDT 334b837d43 Add files via upload 2024-01-11 18:57:45 +08:00
PYDT 169cb37f08 Add files via upload 2024-01-11 18:54:52 +08:00
PYDT 8f29c3f0da Add files via upload 2024-01-11 11:26:50 +08:00
PYDT bec5cc4a04 Delete PYAS_Function.7z 2024-01-11 11:25:28 +08:00
PYDT af627ee202 Delete PYAS_Compress.py 2024-01-11 11:25:17 +08:00
PYDT 1e091a3e7c Delete PYAS_Function_Virus.7z 2024-01-11 10:23:11 +08:00
PYDT 8840da91d7 Delete PYAS_Function_Safe.7z 2024-01-11 10:22:59 +08:00
PYDT 1f4ff04ed3 Add files via upload 2024-01-11 10:22:17 +08:00
PYDT 60974e8f72 Add files via upload 2024-01-11 09:31:52 +08:00
PYDT 86f68994c2 Add files via upload 2024-01-10 09:19:18 +08:00
PYDT 21c4918486 Add files via upload 2024-01-09 08:20:17 +08:00
PYDT c6a426ec25 Add files via upload 2024-01-08 21:22:54 +08:00
PYDT db75a22c1c Add files via upload 2024-01-08 19:31:04 +08:00
PYDT 7e85d22ecd Add files via upload 2024-01-08 18:53:53 +08:00
PYDT 67adadc0a4 Add files via upload 2024-01-08 17:46:19 +08:00
PYDT 6b78562454 Add files via upload 2024-01-08 08:33:37 +08:00
PYDT 4f13afc867 Add files via upload 2024-01-07 20:06:03 +08:00
PYDT c34e8f193f Add files via upload 2024-01-06 16:53:56 +08:00
PYDT 4bcb507eae Add files via upload 2024-01-06 12:45:32 +08:00
PYDT a50d457d75 Add files via upload 2024-01-05 10:51:12 +08:00
PYDT 9f119265a9 Add files via upload 2024-01-05 10:21:49 +08:00
PYDT 0b121a624b Add files via upload 2024-01-05 09:34:07 +08:00
PYDT 0f47f5ec8f Add files via upload 2024-01-05 08:12:45 +08:00
PYDT f89896d041 Add files via upload 2024-01-04 15:47:23 +08:00
PYDT 5e335fd5e8 Add files via upload 2024-01-04 15:47:06 +08:00
PYDT fd245dec14 Add files via upload 2024-01-04 14:56:46 +08:00
PYDT 774cdc5de3 Add files via upload 2024-01-04 13:28:02 +08:00
PYDT 633cfad1a8 Add files via upload 2024-01-04 11:39:51 +08:00
PYDT cb7875c320 Add files via upload 2024-01-04 10:08:12 +08:00
PYDT 7960a57fc0 Add files via upload 2024-01-03 23:08:28 +08:00
PYDT a23f693921 Delete PYAS_Function.zip 2024-01-03 22:55:51 +08:00
PYDT c49cb8bc4a Delete PYAS_Compress.py 2024-01-03 22:55:39 +08:00
PYDT 02c425cfc0 Add files via upload 2024-01-03 11:50:11 +08:00
PYDT be96ba0a0e Add files via upload 2024-01-02 11:19:37 +08:00
PYDT df5e00977a Add files via upload 2024-01-02 07:53:56 +08:00
PYDT f055650365 Add files via upload 2024-01-02 07:21:14 +08:00
PYDT b0baddda3b Delete PYAS_Function.7z 2024-01-02 07:20:32 +08:00
PYDT 69359cba05 Delete PYAS_Function_Virus.7z 2024-01-02 00:16:56 +08:00
PYDT 8b0b29e39b Delete PYAS_Function_Safe.7z 2024-01-02 00:16:45 +08:00
PYDT 21ac50667d Add files via upload 2024-01-02 00:16:07 +08:00
PYDT b843a438ba Add files via upload 2024-01-01 03:59:04 +08:00
PYDT 441cc30c0b Add files via upload 2024-01-01 03:42:15 +08:00
PYDT 85adf5dc80 Add files via upload 2023-12-31 20:55:32 +08:00
PYDT 0c48f0981d Delete PYML.py 2023-12-31 17:30:22 +08:00
PYDT 88b646e41c Delete PYAS_Database.7z 2023-12-31 17:30:03 +08:00
PYDT dc4c3e0a99 Add files via upload 2023-12-31 17:29:47 +08:00
PYDT 262f6d55a0 Add files via upload 2023-12-29 11:22:07 +08:00
14 changed files with 6481 additions and 7197 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020-2023 87owo (PYAS Security)
Copyright (c) 2020-2024 87owo (PYAS Security)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+358 -302
View File
File diff suppressed because it is too large. Load diff
BIN
View File
Binary file not shown.
+83
View File
@@ -0,0 +1,83 @@
import re, time, json, hashlib, numpy
from itertools import groupby
class ListSimHash:
def __init__(self):
self.model = {}
def save_model(self, file_name):
with open(file_name, 'w') as f:
json.dump(self.model, f)
print(f"\nModel Is Saved In {file_name}")
def load_model(self, model_data):
if isinstance(model_data, str):
with open(model_data, 'r') as f:
model_data = json.load(f)
self.model = model_data
def get_model(self, label):
return self.model[label]
def train_model(self, ones, zero, feature=128, batch_size=1000):
self.model["ones"] = []
self.model["zero"] = []
self.model["feature"] = feature
self.model["batch_size"] = batch_size
start = time.time()
print("Convert ones")
for i, x in enumerate(ones, 1):
self.model["ones"].append(self.build_text(x))
used = "{0:.2f}".format(time.time()-start)
self.progress_bar(i, len(ones), prefix=f'{i}/{len(ones)}:', suffix=f'{used}s')
start = time.time()
print("Convert zero")
for i, y in enumerate(zero, 1):
self.model["zero"].append(self.build_text(y))
used = "{0:.2f}".format(time.time()-start)
self.progress_bar(i, len(zero), prefix=f'{i}/{len(zero)}:', suffix=f'{used}s')
def build_text(self, content, width=4):
sums, batch, count = [], [], 0
if isinstance(content, list):
content = ' '.join(content)
elif isinstance(content, bytes):
content = content.decode('utf-8', errors='ignore')
content = ''.join(re.findall(r'[\w\u4e00-\u9fcc]+', content.lower()))
features = [content[i:i + width] for i in range(max(len(content) - width + 1, 1))]
features = {k: sum(1 for _ in g) for k, g in groupby(sorted(features))}
for f, w in features.items():
count += w
h = hashlib.md5(f.encode('utf-8')).digest()
batch.append(h * w)
if len(batch) >= self.model["batch_size"]:
sums.append(self.sum_hashes(batch))
batch = []
if batch:
sums.append(self.sum_hashes(batch))
combined_sums = numpy.sum(sums, 0)
v = numpy.packbits(combined_sums > count / 2).tobytes()
return int.from_bytes(v, 'big')
def sum_hashes(self, digests):
bitarray = numpy.unpackbits(numpy.frombuffer(b''.join(digests), dtype='>B'))
return numpy.sum(numpy.reshape(bitarray, (-1, self.model["feature"])), 0)
def progress_bar(self, iteration, total, prefix='', suffix='', length=50, fill='█'):
percent = min(100.0, max(0.0, 100 * (iteration / float(total))))
end_char = '\n' if percent >= 100 else '\r'
percent_string = "{0:.2f}".format(percent)
filled_length = int(length * iteration // total)
bar = fill * filled_length + ' ' * (length - filled_length)
print(f'\r {prefix: <10} |{bar}| {percent_string}% {suffix}', end=end_char)
def predict(self, query):
query_hash = self.build_text(query)
max_ones = max(self.similar(x, query_hash) for x in self.model["ones"])
max_zero = max(self.similar(y, query_hash) for y in self.model["zero"])
return max_ones, max_zero
def similar(self, x, y):
hamming_distance = bin(x ^ y).count('1')
similarity = 1 - hamming_distance / self.model["feature"]
return similarity
+1 -2
View File
@@ -5,5 +5,4 @@ alist = [".ppt",".pptx",".wps",".txt",".rtf",
".pdf",".xls",".xlsx",".doc",".docx",
".jpg",".jpeg",".png",".webp",".gif",
".mp3",".wav",".aac",".ogg",".flac",
".mp4",".avi",".mov",".wmv",".mkv",
".zip",".7z",".rar",".tar",".gz"]
".mp4",".avi",".mov",".wmv",".mkv"]
Binary file not shown.
Binary file not shown.
+221 -237
View File
@@ -29,6 +29,7 @@ class Ui_MainWindow(object):
self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 851, 541))
self.widget.setStyleSheet("")
self.widget.setObjectName("widget")
self.Protection_widget = QtWidgets.QWidget(self.widget)
self.Protection_widget.setGeometry(QtCore.QRect(170, 50, 671, 481))
@@ -37,7 +38,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Protection_widget.setFont(font)
self.Protection_widget.setStyleSheet("background-color:rgba(255, 255, 255,240);")
self.Protection_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Protection_widget.setObjectName("Protection_widget")
self.Real_time_Protection_widget = QtWidgets.QWidget(self.Protection_widget)
self.Real_time_Protection_widget.setGeometry(QtCore.QRect(40, 10, 591, 91))
@@ -87,13 +88,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Protection_switch_Button.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button.setCheckable(False)
self.Protection_switch_Button.setObjectName("Protection_switch_Button")
@@ -145,13 +147,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button_2.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Protection_switch_Button_2.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_2.setCheckable(False)
self.Protection_switch_Button_2.setObjectName("Protection_switch_Button_2")
@@ -201,13 +204,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button_3.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Protection_switch_Button_3.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_3.setCheckable(False)
self.Protection_switch_Button_3.setObjectName("Protection_switch_Button_3")
@@ -257,13 +261,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button_4.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Protection_switch_Button_4.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_4.setCheckable(False)
self.Protection_switch_Button_4.setObjectName("Protection_switch_Button_4")
@@ -313,13 +318,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button_5.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Protection_switch_Button_5.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_5.setCheckable(False)
self.Protection_switch_Button_5.setObjectName("Protection_switch_Button_5")
@@ -330,14 +336,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Navigation_Bar.setFont(font)
self.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar\n"
"{\n"
" background-color:rgb(230, 230, 230);\n"
" border-top-right-radius:2px;\n"
" border-bottom-right-radius:2px;\n"
"}\n"
"\n"
"")
self.Navigation_Bar.setStyleSheet("background-color: rgb(230, 230, 230);")
self.Navigation_Bar.setObjectName("Navigation_Bar")
self.verticalLayoutWidget = QtWidgets.QWidget(self.Navigation_Bar)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 161, 481))
@@ -365,8 +364,8 @@ class Ui_MainWindow(object):
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n"
" border-bottom-left-radius:15px;\n"
" border-top-left-radius:10px;\n"
" border-bottom-left-radius:10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
@@ -376,7 +375,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(255, 255, 255,110);\n"
"}")
"}\n"
"")
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/icon/State.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.State_Button.setIcon(icon1)
@@ -403,8 +403,8 @@ class Ui_MainWindow(object):
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n"
" border-bottom-left-radius:15px;\n"
" border-top-left-radius:10px;\n"
" border-bottom-left-radius:10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
@@ -414,7 +414,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(255, 255, 255,110);\n"
"}")
"}\n"
"")
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/icon/Scan.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Virus_Scan_Button.setIcon(icon2)
@@ -444,8 +445,8 @@ class Ui_MainWindow(object):
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n"
" border-bottom-left-radius:15px;\n"
" border-top-left-radius:10px;\n"
" border-bottom-left-radius:10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
@@ -455,7 +456,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(255, 255, 255,110);\n"
"}")
"}\n"
"")
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/icon/Tool.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Tools_Button.setIcon(icon3)
@@ -482,8 +484,8 @@ class Ui_MainWindow(object):
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n"
" border-bottom-left-radius:15px;\n"
" border-top-left-radius:10px;\n"
" border-bottom-left-radius:10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
@@ -493,7 +495,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(255, 255, 255,110);\n"
"}")
"}\n"
"")
icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/icon/Protect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Protection_Button.setIcon(icon4)
@@ -526,7 +529,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Virus_Scan_widget.setFont(font)
self.Virus_Scan_widget.setStyleSheet("background-color:rgba(255, 255, 255,240);")
self.Virus_Scan_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Virus_Scan_widget.setObjectName("Virus_Scan_widget")
self.Virus_Scan_title = QtWidgets.QLabel(self.Virus_Scan_widget)
self.Virus_Scan_title.setGeometry(QtCore.QRect(45, 30, 281, 41))
@@ -550,7 +553,7 @@ class Ui_MainWindow(object):
self.Virus_Scan_text.setWordWrap(True)
self.Virus_Scan_text.setObjectName("Virus_Scan_text")
self.Virus_Scan_choose_Button = QtWidgets.QPushButton(self.Virus_Scan_widget)
self.Virus_Scan_choose_Button.setGeometry(QtCore.QRect(480, 35, 141, 31))
self.Virus_Scan_choose_Button.setGeometry(QtCore.QRect(490, 35, 131, 31))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -565,16 +568,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_choose_Button.setTabletTracking(False)
self.Virus_Scan_choose_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_choose_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_choose_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(100,200,100,200);\n"
" border-radius: 3px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(100,220,100,200);\n"
"}")
self.Virus_Scan_choose_Button.setStyleSheet("QPushButton{border:none;background-color:rgb(190,250,190);border-radius: 10px;}QPushButton:hover{background-color:rgb(200,250,200);}\n"
"")
self.Virus_Scan_choose_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_choose_Button.setCheckable(False)
self.Virus_Scan_choose_Button.setAutoRepeat(False)
@@ -585,16 +580,19 @@ class Ui_MainWindow(object):
self.Virus_Scan_choose_Button.setFlat(False)
self.Virus_Scan_choose_Button.setObjectName("Virus_Scan_choose_Button")
self.Virus_Scan_choose_widget = QtWidgets.QWidget(self.Virus_Scan_widget)
self.Virus_Scan_choose_widget.setGeometry(QtCore.QRect(480, 67, 141, 31))
self.Virus_Scan_choose_widget.setGeometry(QtCore.QRect(490, 67, 131, 31))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.Virus_Scan_choose_widget.sizePolicy().hasHeightForWidth())
self.Virus_Scan_choose_widget.setSizePolicy(sizePolicy)
self.Virus_Scan_choose_widget.setStyleSheet("background-color:rgba(200, 200, 200,200);")
self.Virus_Scan_choose_widget.setStyleSheet("QWidget {\n"
" background-color: rgb(230, 230, 230);\n"
" border-radius: 10px;\n"
" }")
self.Virus_Scan_choose_widget.setObjectName("Virus_Scan_choose_widget")
self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.Virus_Scan_choose_widget)
self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(0, 0, 141, 101))
self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(0, 0, 131, 101))
self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
self.Virus_Scan_choose_verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
self.Virus_Scan_choose_verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
@@ -616,17 +614,18 @@ class Ui_MainWindow(object):
self.File_Scan_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(50, 50, 50,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(50, 50, 50,90);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.File_Scan_Button.setIconSize(QtCore.QSize(16, 16))
self.File_Scan_Button.setCheckable(False)
self.File_Scan_Button.setObjectName("File_Scan_Button")
@@ -646,17 +645,18 @@ class Ui_MainWindow(object):
self.Path_Scan_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(50, 50, 50,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(50, 50, 50,90);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Path_Scan_Button.setIconSize(QtCore.QSize(16, 16))
self.Path_Scan_Button.setCheckable(False)
self.Path_Scan_Button.setObjectName("Path_Scan_Button")
@@ -676,23 +676,24 @@ class Ui_MainWindow(object):
self.Disk_Scan_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(50, 50, 50,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(50, 50, 50,90);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Disk_Scan_Button.setIconSize(QtCore.QSize(16, 16))
self.Disk_Scan_Button.setCheckable(False)
self.Disk_Scan_Button.setObjectName("Disk_Scan_Button")
self.Virus_Scan_choose_verticalLayout.addWidget(self.Disk_Scan_Button)
self.Virus_Scan_Solve_Button = QtWidgets.QPushButton(self.Virus_Scan_widget)
self.Virus_Scan_Solve_Button.setGeometry(QtCore.QRect(330, 35, 141, 31))
self.Virus_Scan_Solve_Button.setGeometry(QtCore.QRect(350, 35, 131, 31))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -707,16 +708,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_Solve_Button.setTabletTracking(False)
self.Virus_Scan_Solve_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_Solve_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_Solve_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(230,70,70,200);\n"
" border-radius: 3px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(255,70,70,200);\n"
"}")
self.Virus_Scan_Solve_Button.setStyleSheet("QPushButton{border:none;background-color:rgb(250,190,190);border-radius: 10px;}QPushButton:hover{background-color:rgb(250,200,200);}\n"
"")
self.Virus_Scan_Solve_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_Solve_Button.setCheckable(False)
self.Virus_Scan_Solve_Button.setAutoRepeat(False)
@@ -727,7 +720,7 @@ class Ui_MainWindow(object):
self.Virus_Scan_Solve_Button.setFlat(False)
self.Virus_Scan_Solve_Button.setObjectName("Virus_Scan_Solve_Button")
self.Virus_Scan_Break_Button = QtWidgets.QPushButton(self.Virus_Scan_widget)
self.Virus_Scan_Break_Button.setGeometry(QtCore.QRect(480, 35, 141, 31))
self.Virus_Scan_Break_Button.setGeometry(QtCore.QRect(490, 35, 131, 31))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -742,16 +735,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_Break_Button.setTabletTracking(False)
self.Virus_Scan_Break_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_Break_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_Break_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(230,70,70,200);\n"
" border-radius: 3px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(255,70,70,200);\n"
"}")
self.Virus_Scan_Break_Button.setStyleSheet("QPushButton{border:none;background-color:rgb(250,190,190);border-radius: 10px;}QPushButton:hover{background-color:rgb(250,200,200);}\n"
"")
self.Virus_Scan_Break_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_Break_Button.setCheckable(False)
self.Virus_Scan_Break_Button.setAutoRepeat(False)
@@ -800,6 +785,13 @@ class Ui_MainWindow(object):
self.Virus_Scan_output.setUniformItemSizes(False)
self.Virus_Scan_output.setSelectionRectVisible(False)
self.Virus_Scan_output.setObjectName("Virus_Scan_output")
self.Virus_Scan_title.raise_()
self.Virus_Scan_text.raise_()
self.Virus_Scan_choose_widget.raise_()
self.Virus_Scan_Solve_Button.raise_()
self.Virus_Scan_output.raise_()
self.Virus_Scan_Break_Button.raise_()
self.Virus_Scan_choose_Button.raise_()
self.State_widget = QtWidgets.QWidget(self.widget)
self.State_widget.setGeometry(QtCore.QRect(170, 49, 671, 481))
font = QtGui.QFont()
@@ -807,7 +799,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.State_widget.setFont(font)
self.State_widget.setStyleSheet("background-color:rgb(255, 255, 255);")
self.State_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.State_widget.setObjectName("State_widget")
self.State_title = QtWidgets.QLabel(self.State_widget)
self.State_title.setGeometry(QtCore.QRect(50, 210, 571, 41))
@@ -823,14 +815,24 @@ class Ui_MainWindow(object):
self.State_title.setAlignment(QtCore.Qt.AlignCenter)
self.State_title.setObjectName("State_title")
self.State_icon = QtWidgets.QLabel(self.State_widget)
self.State_icon.setGeometry(QtCore.QRect(250, 30, 171, 171))
self.State_icon.setGeometry(QtCore.QRect(240, 20, 191, 191))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.State_icon.sizePolicy().hasHeightForWidth())
self.State_icon.setSizePolicy(sizePolicy)
self.State_icon.setMinimumSize(QtCore.QSize(0, 171))
self.State_icon.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(1)
font.setStrikeOut(False)
font.setKerning(True)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.State_icon.setFont(font)
self.State_icon.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
self.State_icon.setToolTip("")
self.State_icon.setStyleSheet("")
self.State_icon.setFrameShape(QtWidgets.QFrame.NoFrame)
self.State_icon.setLineWidth(1)
self.State_icon.setText("")
@@ -853,6 +855,8 @@ class Ui_MainWindow(object):
self.State_output.setFont(font)
self.State_output.setAutoFillBackground(False)
self.State_output.setStyleSheet("")
self.State_output.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.State_output.setFrameShadow(QtWidgets.QFrame.Sunken)
self.State_output.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
self.State_output.setUndoRedoEnabled(True)
self.State_output.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
@@ -876,7 +880,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.About_widget.setFont(font)
self.About_widget.setStyleSheet("background-color:rgba(255, 255, 255,255);")
self.About_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.About_widget.setObjectName("About_widget")
self.About_Back = QtWidgets.QPushButton(self.About_widget)
self.About_Back.setGeometry(QtCore.QRect(20, 10, 101, 41))
@@ -891,17 +895,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.About_Back.setFont(font)
self.About_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.About_Back.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" color:rgba(60,60,60,200);\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" color:rgba(60,60,60,255);\n"
"}\n"
"")
self.About_Back.setStyleSheet("QPushButton{border:none; background-color:rgba(0,0,0,0); color:rgba(60,60,60,200);} QPushButton:hover{ color:rgba(60,60,60,255);}")
icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/icon/Back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.About_Back.setIcon(icon5)
@@ -1026,7 +1020,13 @@ class Ui_MainWindow(object):
font.setPointSize(11)
self.License_terms.setFont(font)
self.License_terms.setStyleSheet("")
self.License_terms.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.License_terms.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
self.License_terms.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
self.License_terms.setTabChangesFocus(False)
self.License_terms.setLineWrapColumnOrWidth(0)
self.License_terms.setReadOnly(True)
self.License_terms.setOverwriteMode(False)
self.License_terms.setObjectName("License_terms")
self.License_terms_title = QtWidgets.QLabel(self.About_widget)
self.License_terms_title.setGeometry(QtCore.QRect(45, 260, 581, 31))
@@ -1046,10 +1046,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Window_widget.setFont(font)
self.Window_widget.setStyleSheet("QWidget#Window_widget\n"
"{\n"
"background-color:rgb(240, 240, 240);\n"
"}")
self.Window_widget.setStyleSheet("background-color: rgb(240, 240, 240);")
self.Window_widget.setObjectName("Window_widget")
self.Close_Button = QtWidgets.QPushButton(self.Window_widget)
self.Close_Button.setGeometry(QtCore.QRect(790, 5, 31, 31))
@@ -1172,7 +1169,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Process_widget.setFont(font)
self.Process_widget.setStyleSheet("background-color:rgba(255, 255, 255,240);")
self.Process_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Process_widget.setObjectName("Process_widget")
self.Process_Tools_Back = QtWidgets.QPushButton(self.Process_widget)
self.Process_Tools_Back.setGeometry(QtCore.QRect(20, 10, 101, 41))
@@ -1187,17 +1184,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Process_Tools_Back.setFont(font)
self.Process_Tools_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Process_Tools_Back.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" color:rgba(60,60,60,200);\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" color:rgba(60,60,60,255);\n"
"}\n"
"")
self.Process_Tools_Back.setStyleSheet("QPushButton{border:none; background-color:rgba(0,0,0,0); color:rgba(60,60,60,200);} QPushButton:hover{ color:rgba(60,60,60,255);}")
self.Process_Tools_Back.setIcon(icon5)
self.Process_Tools_Back.setIconSize(QtCore.QSize(20, 20))
self.Process_Tools_Back.setCheckable(False)
@@ -1265,7 +1252,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Tools_widget.setFont(font)
self.Tools_widget.setStyleSheet("background-color:rgba(255, 255, 255,240);")
self.Tools_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Tools_widget.setObjectName("Tools_widget")
self.More_Tools_Back_Button = QtWidgets.QPushButton(self.Tools_widget)
self.More_Tools_Back_Button.setGeometry(QtCore.QRect(20, 10, 101, 41))
@@ -1280,13 +1267,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.More_Tools_Back_Button.setFont(font)
self.More_Tools_Back_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.More_Tools_Back_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" color:rgba(60,60,60,200);\n"
"}\n"
"")
self.More_Tools_Back_Button.setStyleSheet("QPushButton{border:none; background-color:rgba(0,0,0,0); color:rgba(60,60,60,200);} QPushButton:hover{ color:rgba(60,60,60,255);}")
self.More_Tools_Back_Button.setIconSize(QtCore.QSize(20, 20))
self.More_Tools_Back_Button.setCheckable(False)
self.More_Tools_Back_Button.setObjectName("More_Tools_Back_Button")
@@ -1312,17 +1293,18 @@ class Ui_MainWindow(object):
self.System_Process_Manage_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(20,20,20,70);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.System_Process_Manage_Button.setIconSize(QtCore.QSize(16, 16))
self.System_Process_Manage_Button.setCheckable(False)
self.System_Process_Manage_Button.setObjectName("System_Process_Manage_Button")
@@ -1342,17 +1324,18 @@ class Ui_MainWindow(object):
self.Clean_System_Files_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(20,20,20,70);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Clean_System_Files_Button.setIconSize(QtCore.QSize(16, 16))
self.Clean_System_Files_Button.setCheckable(False)
self.Clean_System_Files_Button.setObjectName("Clean_System_Files_Button")
@@ -1372,17 +1355,18 @@ class Ui_MainWindow(object):
self.Repair_System_Files_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(20,20,20,70);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Repair_System_Files_Button.setIconSize(QtCore.QSize(16, 16))
self.Repair_System_Files_Button.setCheckable(False)
self.Repair_System_Files_Button.setObjectName("Repair_System_Files_Button")
@@ -1402,17 +1386,18 @@ class Ui_MainWindow(object):
self.Repair_System_Network_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(20,20,20,70);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Repair_System_Network_Button.setIconSize(QtCore.QSize(16, 16))
self.Repair_System_Network_Button.setCheckable(False)
self.Repair_System_Network_Button.setObjectName("Repair_System_Network_Button")
@@ -1432,25 +1417,22 @@ class Ui_MainWindow(object):
self.Window_Block_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
" background-color:rgb(220,220,220);\n"
"}\n"
"QPushButton:pressed\n"
"{\n"
" background-color:rgba(20,20,20,70);\n"
"}")
" background-color:rgb(230,230,230);\n"
"}\n"
"")
self.Window_Block_Button.setIconSize(QtCore.QSize(16, 16))
self.Window_Block_Button.setCheckable(False)
self.Window_Block_Button.setObjectName("Window_Block_Button")
self.System_verticalLayout.addWidget(self.Window_Block_Button)
self.widget_2 = QtWidgets.QWidget(self.widget)
self.widget_2.setGeometry(QtCore.QRect(170, 50, 671, 481))
self.widget_2.setStyleSheet("background-color:rgb(255, 255, 255);")
self.widget_2.setObjectName("widget_2")
self.Setting_widget = QtWidgets.QWidget(self.widget)
self.Setting_widget.setGeometry(QtCore.QRect(10, 50, 831, 481))
font = QtGui.QFont()
@@ -1458,7 +1440,7 @@ class Ui_MainWindow(object):
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Setting_widget.setFont(font)
self.Setting_widget.setStyleSheet("background-color:rgba(255, 255, 255,255);")
self.Setting_widget.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Setting_widget.setObjectName("Setting_widget")
self.Show_high_sensitivity = QtWidgets.QWidget(self.Setting_widget)
self.Show_high_sensitivity.setGeometry(QtCore.QRect(30, 50, 781, 81))
@@ -1505,13 +1487,14 @@ class Ui_MainWindow(object):
self.high_sensitivity_switch_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.high_sensitivity_switch_Button.setIconSize(QtCore.QSize(16, 16))
self.high_sensitivity_switch_Button.setCheckable(False)
self.high_sensitivity_switch_Button.setObjectName("high_sensitivity_switch_Button")
@@ -1559,6 +1542,14 @@ class Ui_MainWindow(object):
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout")
self.Language_English = QtWidgets.QRadioButton(self.gridLayoutWidget)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Language_English.setFont(font)
self.Language_English.setObjectName("Language_English")
self.gridLayout.addWidget(self.Language_English, 1, 2, 1, 1)
self.Language_Traditional_Chinese = QtWidgets.QRadioButton(self.gridLayoutWidget)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
@@ -1575,14 +1566,6 @@ class Ui_MainWindow(object):
self.Language_Simplified_Chinese.setFont(font)
self.Language_Simplified_Chinese.setObjectName("Language_Simplified_Chinese")
self.gridLayout.addWidget(self.Language_Simplified_Chinese, 1, 1, 1, 1)
self.Language_English = QtWidgets.QRadioButton(self.gridLayoutWidget)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Language_English.setFont(font)
self.Language_English.setObjectName("Language_English")
self.gridLayout.addWidget(self.Language_English, 1, 2, 1, 1)
self.Language_illustrate.raise_()
self.Language_Choose_widget.raise_()
self.Language_title.raise_()
@@ -1631,13 +1614,14 @@ class Ui_MainWindow(object):
self.cloud_services_switch_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.cloud_services_switch_Button.setIconSize(QtCore.QSize(16, 16))
self.cloud_services_switch_Button.setCheckable(False)
self.cloud_services_switch_Button.setObjectName("cloud_services_switch_Button")
@@ -1657,17 +1641,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Setting_Back.setFont(font)
self.Setting_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Setting_Back.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(0,0,0,0);\n"
" color:rgba(60,60,60,200);\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" color:rgba(60,60,60,255);\n"
"}\n"
"")
self.Setting_Back.setStyleSheet("QPushButton{border:none; background-color:rgba(0,0,0,0); color:rgba(60,60,60,200);} QPushButton:hover{ color:rgba(60,60,60,255);}")
self.Setting_Back.setIcon(icon5)
self.Setting_Back.setIconSize(QtCore.QSize(20, 20))
self.Setting_Back.setCheckable(False)
@@ -1717,13 +1691,14 @@ class Ui_MainWindow(object):
self.Add_White_list_Button.setStyleSheet("QPushButton\n"
"{\n"
" border:none;\n"
" background-color:rgba(20,20,20,30);\n"
" border-radius: 15px;\n"
" background-color:rgb(230,230,230);\n"
" border-radius: 10px;\n"
"}\n"
"QPushButton:hover\n"
"{\n"
" background-color:rgba(20,20,20,50);\n"
"}")
" background-color:rgb(220,220,220);\n"
"}\n"
"")
self.Add_White_list_Button.setIconSize(QtCore.QSize(16, 16))
self.Add_White_list_Button.setCheckable(False)
self.Add_White_list_Button.setObjectName("Add_White_list_Button")
@@ -1769,22 +1744,6 @@ class Ui_MainWindow(object):
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2")
self.Theme_Black = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Black.setFont(font)
self.Theme_Black.setObjectName("Theme_Black")
self.gridLayout_2.addWidget(self.Theme_Black, 1, 1, 1, 1)
self.Theme_White = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_White.setFont(font)
self.Theme_White.setObjectName("Theme_White")
self.gridLayout_2.addWidget(self.Theme_White, 1, 0, 1, 1)
self.Theme_Yellow = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
@@ -1793,13 +1752,37 @@ class Ui_MainWindow(object):
self.Theme_Yellow.setFont(font)
self.Theme_Yellow.setObjectName("Theme_Yellow")
self.gridLayout_2.addWidget(self.Theme_Yellow, 1, 2, 1, 1)
self.Theme_Green = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
self.Theme_Green.setFont(font)
self.Theme_Green.setObjectName("Theme_Green")
self.gridLayout_2.addWidget(self.Theme_Green, 2, 0, 1, 1)
self.Theme_Blue = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Blue.setFont(font)
self.Theme_Blue.setObjectName("Theme_Blue")
self.gridLayout_2.addWidget(self.Theme_Blue, 2, 0, 1, 1)
self.gridLayout_2.addWidget(self.Theme_Blue, 2, 1, 1, 1)
self.Theme_Customize = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Customize.setFont(font)
self.Theme_Customize.setObjectName("Theme_Customize")
self.gridLayout_2.addWidget(self.Theme_Customize, 2, 2, 1, 1)
self.Theme_White = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_White.setFont(font)
self.Theme_White.setObjectName("Theme_White")
self.gridLayout_2.addWidget(self.Theme_White, 1, 0, 1, 1)
self.Theme_Red = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
@@ -1807,27 +1790,23 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Red.setFont(font)
self.Theme_Red.setObjectName("Theme_Red")
self.gridLayout_2.addWidget(self.Theme_Red, 2, 1, 1, 1)
self.Theme_Green = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont()
font.setFamily("Microsoft YaHei")
font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Green.setFont(font)
self.Theme_Green.setObjectName("Theme_Green")
self.gridLayout_2.addWidget(self.Theme_Green, 2, 2, 1, 1)
self.gridLayout_2.addWidget(self.Theme_Red, 1, 1, 1, 1)
self.Theme_illustrate.raise_()
self.Language_Choose_widget_2.raise_()
self.Theme_title.raise_()
self.Protection_widget.raise_()
self.Setting_widget.raise_()
self.About_widget.raise_()
self.Tools_widget.raise_()
self.widget_2 = QtWidgets.QWidget(self.widget)
self.widget_2.setGeometry(QtCore.QRect(170, 50, 671, 481))
self.widget_2.setStyleSheet("background-color: rgb(255, 255, 255);")
self.widget_2.setObjectName("widget_2")
self.widget_2.raise_()
self.Setting_widget.raise_()
self.Tools_widget.raise_()
self.Process_widget.raise_()
self.Virus_Scan_widget.raise_()
self.About_widget.raise_()
self.Protection_widget.raise_()
self.Window_widget.raise_()
self.Navigation_Bar.raise_()
self.Virus_Scan_widget.raise_()
self.State_widget.raise_()
MainWindow.setCentralWidget(self.centralwidget)
@@ -1873,16 +1852,21 @@ class Ui_MainWindow(object):
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.State_log.setText(_translate("MainWindow", "日誌:"))
self.About_Back.setText(_translate("MainWindow", "返回"))
self.PYAS_Version.setText(_translate("MainWindow", "PYAS v2.3.5"))
self.PYAS_Version.setText(_translate("MainWindow", "PYAS V0.0.0 (0000-00-00)"))
self.GUI_Made_title.setText(_translate("MainWindow", "介面製作:"))
self.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
self.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao"))
self.Core_Made_title.setText(_translate("MainWindow", "核心製作:"))
self.Core_Made_Name.setText(_translate("MainWindow", "PYAS_Dev#0629"))
self.Core_Made_Name.setText(_translate("MainWindow", "87owo"))
self.Testers_title.setText(_translate("MainWindow", "測試人員:"))
self.Testers_Name.setText(_translate("MainWindow", "PYAS_Dev#0629"))
self.Testers_Name.setText(_translate("MainWindow", "87owo"))
self.PYAS_URL_title.setText(_translate("MainWindow", "官方網站:"))
self.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://xiaomi69ai.wixsite.com/pyas\"><span style=\" text-decoration: underline; color:#0000ff;\">https://xiaomi69ai.wixsite.com/pyas</span></a></p></body></html>"))
self.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
self.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://github.com/87owo/PYAS\"><span style=\" text-decoration: underline; color:#000000;\">https://github.com/87owo/PYAS</span></a></p></body></html>"))
self.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 0000-9999 PYAS Security"))
self.License_terms.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:11pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.License_terms_title.setText(_translate("MainWindow", "許可條款:"))
self.Window_title.setText(_translate("MainWindow", "PYAS V0.0.0"))
self.Process_Tools_Back.setText(_translate("MainWindow", "返回"))
@@ -1896,26 +1880,26 @@ class Ui_MainWindow(object):
self.high_sensitivity_title.setText(_translate("MainWindow", "高靈敏度模式"))
self.high_sensitivity_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
self.high_sensitivity_switch_Button.setText(_translate("MainWindow", "已關閉"))
self.Language_title.setText(_translate("MainWindow", "語言"))
self.Language_title.setText(_translate("MainWindow", "顯示語言"))
self.Language_illustrate.setText(_translate("MainWindow", "請選擇語言"))
self.Language_English.setText(_translate("MainWindow", "English"))
self.Language_Traditional_Chinese.setText(_translate("MainWindow", "繁體中文"))
self.Language_Simplified_Chinese.setText(_translate("MainWindow", "简体中文"))
self.Language_English.setText(_translate("MainWindow", "English"))
self.cloud_services_title.setText(_translate("MainWindow", "高靈敏度模式"))
self.cloud_services_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
self.cloud_services_title.setText(_translate("MainWindow", "雲端掃描服務"))
self.cloud_services_illustrate.setText(_translate("MainWindow", "啟用此選項可以連接雲端掃描服務"))
self.cloud_services_switch_Button.setText(_translate("MainWindow", "已關閉"))
self.Setting_Back.setText(_translate("MainWindow", "返回"))
self.Add_White_list_title.setText(_translate("MainWindow", "高靈敏度模式"))
self.Add_White_list_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
self.Add_White_list_title.setText(_translate("MainWindow", "增加到白名單"))
self.Add_White_list_illustrate.setText(_translate("MainWindow", "此選項可以選擇檔案並增加到白名單"))
self.Add_White_list_Button.setText(_translate("MainWindow", "已關閉"))
self.Theme_title.setText(_translate("MainWindow", "顯色主題"))
self.Theme_illustrate.setText(_translate("MainWindow", "請選擇主題"))
self.Theme_Black.setText(_translate("MainWindow", "黑色主題"))
self.Theme_White.setText(_translate("MainWindow", "白色主題"))
self.Theme_Yellow.setText(_translate("MainWindow", "粉色主題"))
self.Theme_Blue.setText(_translate("MainWindow", "藍色主題"))
self.Theme_Red.setText(_translate("MainWindow", "紅色主題"))
self.Theme_Yellow.setText(_translate("MainWindow", "黃色主題"))
self.Theme_Green.setText(_translate("MainWindow", "綠色主題"))
self.Theme_Blue.setText(_translate("MainWindow", "藍色主題"))
self.Theme_Customize.setText(_translate("MainWindow", "自訂主題"))
self.Theme_White.setText(_translate("MainWindow", "白色主題"))
self.Theme_Red.setText(_translate("MainWindow", "紅色主題"))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
+8 -7
View File
@@ -10,22 +10,22 @@ translate_dict = {
"攔":"拦","請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选",
"啟":"启","監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动",
"狀":"状","誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语",
"無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","訂":"订",
"無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","介":"界",
"稱":"称","類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网",
"詢":"询","製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红",
"綠":"绿","態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关",
"強":"强","驅":"驱","為":"为","腳":"脚","增":"增","單":"单","開":"开",
"惡":"恶","介":"界"},
"惡":"恶","據":"据","庫":"库","經":"经","敗":"败"},
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website",
"惡意檔案":"Virus ","惡意軟體":"Malware ","勒索軟體":"Ransom ",
"惡意檔案":"Virus ","惡意軟體":"Malware ","勒索行為":"Ransom ",
"惡意腳本":"Script ","惡意行為":"Behavior ","可疑軟體":"Suspicious ",
"許可條款":"License Terms","惡意":"Malicious","可疑":"Suspicious",
"啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ",
"正在掃描":"Scanning ","正在刪除":"Deleting ","最小化到":"Minimize To ",
"確定要":"Sure Want To ","靈敏度":"Sensitivity ","更新":"Update",
"白色主題":"White","黑色主題":"Black","黃色主題":"Yellow","紅色主題":"Red",
"藍色主題":"Blue","綠色主題":"Green","語言":"Language ","製作":"Make",
"確定要":"Sure Want To ","靈敏度":"Sensitivity ","更新":"Update ",
"白色主題":"White","黃色主題":"Yellow","紅色主題":"Red","語言":"Language ",
"藍色主題":"Blue","綠色主題":"Green","自定主題":"Custom","最新":"Latest ",
"測試人員":"Testers","版本資訊":"Information","通訊":"Communication ",
"註冊表":"Registry ","退出":"Quit ","檔案":"File ","當前":"Currently ",
"狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ",
@@ -47,7 +47,8 @@ translate_dict = {
"增加到":"Add File To ","白名單":"White List ","軟體":"Software ",
"增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ","稱":"",
"複製":"Copy ","開啟":"Open ","此":"This ","並":"And ","全盤":"Full ",
"已經是":"Already ","數據庫":"Database ","誤報":"False Positive ",
"高":"High ","新":"New ","和":"And ","可能會":"Possible ","會":"Can ",
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Drive ",
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","立即":"",
"密鑰":"Key ","檢測":"Detect ","誤報":"False Positive "," ":" "}}
"密鑰":"Key ","檢測":"Detect ","製作":"Make"," ":" "}}
+1
View File
@@ -0,0 +1 @@
{"ones": [138514579140422510314615591404235408110, 138884061479927293269157399561321625124, 106913533745562494950237068000717194857, 56400517596638244422894049797604820621, 57509758994800025148320631233619478382, 266907975564823269757642468520682218021, 268764573572222081482569414853338147421, 301824928671740406049708617676147983911, 216322613833371885512412681366080352834, 305869899604823982125728318036880769198, 139390375862009821188813492031092843045, 140636369840301821837859972310736757357, 93525514883026399429643965685843744494, 85423552611944120389541188728576853614, 212959202992585676402479957744392065258, 310175323171803986711996189701871919269, 267073946987621142567955636205481517613, 130213060982497483351391950606798445166, 309453635424025901100964431663839207981, 98595718339270037315648519699911042861, 804810740308425468096265735208257617, 308840950453806983092423514217084578476, 322017788596429201866715226549004966766, 96855081274446633945978062387702817317, 309443088174281869980853203902500569645, 145963460354456926129955518358155059877, 100726355023313678737270049805708838766, 163055950804159105041684713458861453642, 139400638929619405534171854486176686629, 314740690747489056417995540920077280813, 309174548517306493765742812127600992824, 42649730517016866640152470265639253071, 266991032348753532132223164567115948653, 310834785753961546009345771577019752617, 138794485055151379651410532066913608701, 131790595577365633473641510877883811372, 333214357055760258309229460312077263456, 266919150567781465017126522717174383268, 309443250354319958579894353439906751021, 314760122553781807187305329030403597869, 309526327094009133336072658832466510380, 140783818610473943253735333316647117357, 266908765191386477077819778373267636908, 141960523677151839211304480019230155437, 236708587517087268685876607084596151010, 147109497140790587393132625769962294828, 98101030488836797416915605797123547821, 309443006965336732125112839751851204645, 163777668652403995261587270005386479850, 96850943187510051473774485962306807341, 314740690747489056417995540920077280813, 266907874033546142647711315245141475885, 128087963732730699244600678440497496745, 122948904762874323200167759687292791479, 144623683762647410432822459404215795881, 175281760716791954210630508746562429745, 98185566304403225600012489980760220205, 312173101091522310981766359248219144333, 165719174729833763978390369816514151589, 130453416906105788293089319006359032458, 309459962424693681697118037040663257637, 312110631309585432258276350165909913633, 266898908365541525694120496365498163769, 301974605256105130746947982559953757414, 46088979409888770325991887802833783310, 98097114716132427630865195752911955500, 98179117726185629973687845690377904685, 128833381668692705604881271753964704076, 288187285762824132116353144464193487405, 440767454710337817086060213441032296, 308755229979748206303057066098374746633, 310789353473439559353693532556983984677, 309443331008521396576751777765001683629, 272224825421632604778319829685274829501, 314740690747489056417995540920077280813, 288162135445850533606754792760600323239, 266908765349823459293196338896727065260, 266919475084642627997330537792153215533, 118095062731544531316068994170817536096, 309460205972074921952248716662523977893, 138980104556989140895595181268125835917, 96753309757095605084115148461573554213, 96783566280022178361451345888136274605, 267006527672619154632784726463056593709, 268325411442133354907118265595969561133, 45423085047571636176304357087088791778, 140693602135645422745421550777944908460, 266908927450643968163503768535437820588, 139317724478784922140315175893335437861, 98075229203956313888405997203836658285, 139307136862901466424877793378792006181, 141949813792938456152307200983465099405, 266887023150038950813539942248450810413, 266907873517942888138024343981564256813, 309527625168214095599527134475951948333, 288176899901775619274666676430489666220, 132687201639749430771754766010675328697, 298809467903569967359434970965896200999, 266909251929602884051145652263806452396, 96856378081010667424655802311172842021, 334364013698977648789398548127408169731, 138478276465840759527093181786120602252, 309517280516176477337549624053815730737, 309532816881431070079891773455787762221, 267006688625182579765726710919333306917, 301342822028899395690309866891238953529, 140889247564697972421510238399255437956, 301704982992736118799149217975167423010, 123342205008290812825969949820881134509, 309444547834874662752143629118327890477, 120368316428277902366824346477250637709, 96608366161759132771693290653207750157, 309258884864988268167108821321512280229, 266887185302388558609052276779780547237, 120204759374330029658546372684809684013, 266750361825108195839408748923433296011, 309541905261615072912890344878225383465, 136838710717061085016646030313491257547, 139400638929619405533018932981569839653, 309535252305417442974606230157044113441, 96865343064503306525844664637493502501, 98091942701683498853848791423305786021, 12268668727495Line truncated
+5649 -6472
View File
File diff suppressed because it is too large. Load diff
+2 -1
View File
@@ -1,7 +1,8 @@
import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile(
output_file="versionfile.txt",
version='2.9.6',
version='3.0.5',
company_name="PYAS Security",
file_description="Python Antivirus Software",
internal_name="PYAS",
-166
View File
@@ -1,166 +0,0 @@
from collections import defaultdict
import math, json, time, types, random
class ListClassifier:
def __init__(self):
self.word_weights = defaultdict(lambda: {'ones': 0, 'zero': 0})
self.total_counts = {'ones': 0, 'zero': 0}
self.prior_probs = {'ones': 0, 'zero': 0}
self.class_weights = {'ones': 1, 'zero': 1}
self.min_quantity = 0
self.max_quantity = 1.0
self.learning_rate = 0.1
self.max_sequence = 100
self.test_data = []
self.train_data = []
def load_model(self, model_data):
if isinstance(model_data, str):
with open(model_data, 'r') as f:
model_data = json.load(f)
self.word_weights = defaultdict(lambda: {'ones': 0, 'zero': 0})
self.word_weights.update(model_data['word_weights'])
self.total_counts = model_data['total_counts']
self.prior_probs = model_data['prior_probs']
self.max_sequence = model_data.get('max_sequence')
def save_model(self, filename):
model_data = {
'word_weights': dict(self.word_weights),
'total_counts': self.total_counts,
'prior_probs': self.prior_probs,
'max_sequence': self.max_sequence}
with open(filename, 'w') as f:
json.dump(model_data, f)
print(f"\nModel Is Safe In {filename}")
def train_model(self, ones_data, zero_data, epochs=1, batch_size=32, min_quantity=0, max_quantity=1.0, max_sequence=10, test_size=0.2, learning_rate=None, random_seed=None, class_weights=None):
self.min_quantity = min_quantity
self.max_quantity = max_quantity
self.max_sequence = max_sequence
self.learning_rate = learning_rate if learning_rate is not None else self.learning_rate
self.class_weights = class_weights if class_weights is not None else self.class_weights
is_generator = isinstance(ones_data[0], types.GeneratorType)
all_data = ones_data + zero_data
random.seed(random_seed)
random.shuffle(all_data)
split_index = int((1 - test_size) * len(all_data))
self.train_data = all_data[:split_index]
self.test_data = all_data[split_index:]
train_accuracies, train_losses = [], []
test_accuracies, test_losses = [], []
for epoch in range(epochs):
print(f'Epoch: {epoch + 1}/{epochs}')
train_accuracy, train_loss = self._train_epoch(self.train_data, batch_size, is_generator, prefix='Training:')
test_accuracy, test_loss = self._test_epoch(self.test_data, batch_size, is_generator, prefix='Testing: ')
train_accuracies.append(train_accuracy)
train_losses.append(train_loss)
test_accuracies.append(test_accuracy)
test_losses.append(test_loss)
self._print_table(train_accuracies, train_losses, test_accuracies, test_losses)
total_lists = len(self.train_data) + len(self.test_data)
self.prior_probs['ones'] = len(ones_data) / total_lists
self.prior_probs['zero'] = len(zero_data) / total_lists
self._filter_word_weights()
def _train_epoch(self, data, batch_size, is_generator, prefix=''):
start_time = time.time()
correct_predictions, total_samples, total_loss = 0, 0, 0
for i in range(0, len(data), batch_size):
batch = data[i:i + batch_size]
for lst_gen in batch:
lst = list(lst_gen) if is_generator else lst_gen
correct_predictions += self._update_weights(lst, 'ones')
total_samples += len(lst)
total_loss += self._calculate_loss(lst, 'ones')
elapsed_time = time.time() - start_time
suffix = f'(Accuracy: {correct_predictions/total_samples:.2%}, Loss: {total_loss/total_samples:.4f}, Elapsed: {elapsed_time:.2f}s)'
self._print_progress_bar(i + batch_size, len(data), prefix=prefix, suffix=suffix)
print('')
accuracy = correct_predictions / total_samples
average_loss = total_loss / total_samples
return accuracy, average_loss
def _test_epoch(self, data, batch_size, is_generator, prefix=''):
start_time = time.time()
correct_predictions, total_samples, total_loss = 0, 0, 0
for i in range(0, len(data), batch_size):
batch = data[i:i + batch_size]
for lst_gen in batch:
lst = list(lst_gen) if is_generator else lst_gen
correct_predictions += (len(lst) - self._update_weights(lst, 'zero'))
total_samples += len(lst)
total_loss += self._calculate_loss(lst, 'zero')
elapsed_time = time.time() - start_time
suffix = f'(Accuracy: {correct_predictions/total_samples:.2%}, Loss: {total_loss/total_samples:.4f}, Elapsed: {elapsed_time:.2f}s)'
self._print_progress_bar(i + batch_size, len(data), prefix=prefix, suffix=suffix)
print('')
accuracy = correct_predictions / total_samples
average_loss = total_loss / total_samples
return accuracy, average_loss
def _print_table(self, train_accuracies, train_losses, test_accuracies, test_losses):
print("\nEpoch\tTrain Accuracy\tTrain Loss\tTest Accuracy\tTest Loss (Table):")
for i, (train_acc, train_loss, test_acc, test_loss) in enumerate(zip(train_accuracies, train_losses, test_accuracies, test_losses), 1):
print(f"{i}\t{train_acc:.2%}\t\t{train_loss:.4f}\t\t{test_acc:.2%}\t\t{test_loss:.4f}")
def _print_progress_bar(self, iteration, total, prefix='', suffix='', length=30, fill='█'):
percent = min(100.0, max(0.0, 100 * (iteration / float(total))))
percent_string = "{0:.2f}".format(percent)
filled_length = int(length * iteration // total)
bar = fill * filled_length + ' ' * (length - filled_length)
print(f'\r {prefix} |{bar}| {percent_string}% {suffix}', end='\r')
def _filter_word_weights(self):
for word, weights in list(self.word_weights.items()):
total_weight = weights['ones'] + weights['zero']
if (total_weight < self.min_quantity or total_weight > self.max_quantity * max(self.total_counts.values())):
del self.word_weights[word]
def _get_data_for_word(self, word, category):
data = []
if isinstance(self.word_weights[word][category], list):
for lst in self.word_weights[word][category]:
data.append(lst)
return data
def predict(self, new_list):
ones_log_prob = self._calculate_category_log_prob(new_list, 'ones')
zero_log_prob = self._calculate_category_log_prob(new_list, 'zero')
if ones_log_prob > zero_log_prob:
return 1
else:
return 0
def _update_weights(self, lst, category):
correct_prediction = 0
for i, word in enumerate(lst):
position_encoding = min(i / len(lst), 1.0)
word_frequency = self.word_weights[word][category]
learning_rate = self.learning_rate / (word_frequency + 1)
self.word_weights[word][category] += learning_rate * self.class_weights[category] * position_encoding
self.total_counts[category] += learning_rate
prediction = self.predict([word])
correct_prediction += 1 if prediction == int(category == 'ones') else 0
return correct_prediction
def _calculate_loss(self, lst, category):
loss = 0.0
for word in lst:
if word in self.word_weights:
word_weight_category = self.word_weights[word][category]
total_weight_category = self.total_counts[category]
prob = (word_weight_category + 1) / (total_weight_category + len(self.word_weights))
loss += -math.log(prob)
return loss
def _calculate_category_log_prob(self, lst, category):
log_prob = 0.0
for word in lst:
if word in self.word_weights:
word_weight_category = self.word_weights[word][category]
total_weight_category = self.total_counts[category]
prob = (word_weight_category + 1) / (total_weight_category + len(self.word_weights))
log_prob += math.log(prob)
log_prob += math.log(self.prior_probs[category] + 1e-10)
return log_prob
+157 -9
View File
@@ -1,22 +1,170 @@
# PYAS (Python Antivirus Software)
![PYAS](https://github.com/87owo/PYAS/assets/85057800/153bcad9-18ab-4c81-bcb6-186434d0ef1b)
## File Information
PYAS.py -> Main PYAS Program (including animation, scanning, protection functions, etc.)
PYAS_Engine.py -> Conversion Database (used to convert database dict and list to and from each other)
PYAS_Extension.py -> File Extension (including scanned file extensions and common file extensions)
PYAS_Model.* -> Virus Database (the virus database must be placed in the same directory)
PYAS_Interface.py -> PyQt5 Interface (designed by QT designer, must be matched with the main program)
PYAS_Resource.py -> PyQt5 Resource (status pictures, icon packages, button icons, etc.)
PYAS_Language.py -> Translate Dict (Traditional Chinese, Simplified Chinese, English)
PYAS_Version.py -> Pyinstaller Info (file information, version information, original name, etc.)
## Requirements
Use pip install requirements to install import module
```
psutil==5.9.5
pefile==2023.2.7
requests==2.31.0
pyperclip==1.8.2
pywin32==306
PyQt5==5.15.9
```
## Hash Scanning
Use Qihoo 360 cloud service to scan known malicious files
```
import hashlib, requests
import xml.etree.ElementTree as xmlet
def hash_scan(file):
try:
with open(file, "rb") as f:
text = str(hashlib.md5(f.read()).hexdigest())
strBody = f'-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="md5s"\r\n\r\n{text}\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="format"\r\n\r\nXML\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="product"\r\n\r\n360zip\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="combo"\r\n\r\n360zip_main\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="v"\r\n\r\n2\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="osver"\r\n\r\n5.1\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="vk"\r\n\r\na03bc211\r\n-------------------------------7d83e2d7a141e\r\nContent-Disposition: form-data; name="mid"\r\n\r\n8a40d9eff408a78fe9ec10a0e7e60f62\r\n-------------------------------7d83e2d7a141e--'
response = requests.post('http://qup.f.360.cn/file_health_info.php', data=strBody, timeout=3)
if response.status_code == 200:
level = float(xmlet.fromstring(response.text).find('.//e_level').text)
if level > 50:
return "Virus"
elif level <= 10:
return "Safe"
return "Unknown"
return f"Error: {response.status_code}"
except Exception as e:
return f"Error: {e}"
info = hash_scan("path to file")
print(info)
```
## Pefile Scanning
Get the pefile file function import table for scanning
```
import pefile
def pe_scan(file):
try:
fn = []
with pefile.PE(file) as pe:
for entry in pe.DIRECTORY_ENTRY_IMPORT:
for func in entry.imports:
try:
fn.append(str(func.name, "utf-8"))
except:
pass
if fn in known_malicious_list:
return "Virus"
return "Safe"
return "Unknown"
except Exception as e:
return f"Error: {e}"
info = pe_scan("path to file")
print(info)
```
## Process Detect
Show the new process name, file path, cmd line, pid
```
import psutil, time
def proc_detect():
existing_processes = set()
for p in psutil.process_iter():
if p.pid not in existing_processes:
existing_processes.add(p.pid)
while True:
time.sleep(0.1)
for p in psutil.process_iter():
try:
if p.pid not in existing_processes:
existing_processes.add(p.pid)
name, file, cmd = p.name(), p.exe(), p.cmdline()
print(f"Name: {name}")
print(f"File: {file}")
print(f"Pid: {p.pid}")
print(f"Cmd: {cmd}")
except:
pass
proc_detect()
```
## File Detect
Monitor file changes under the specified path
```
import os, win32file, win32con
def file_detect(path):
hDir = win32file.CreateFile(path,win32con.GENERIC_READ,win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE|win32con.FILE_SHARE_DELETE,None,win32con.OPEN_EXISTING,win32con.FILE_FLAG_BACKUP_SEMANTICS,None)
while True:
for action, file in win32file.ReadDirectoryChangesW(hDir,10485760,True,win32con.FILE_NOTIFY_CHANGE_FILE_NAME|win32con.FILE_NOTIFY_CHANGE_DIR_NAME|win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES|win32con.FILE_NOTIFY_CHANGE_SIZE|win32con.FILE_NOTIFY_CHANGE_LAST_WRITE|win32con.FILE_NOTIFY_CHANGE_SECURITY,None,None):
try:
fpath = os.path.join(path, file)
if action == 1:
print(f"File Create: {fpath}")
elif action == 2:
print(f"File Delete: {fpath}")
elif action == 3:
print(f"File Modify: {fpath}")
elif action == 4:
print(f"File Rename: {fpath}")
elif action == 5:
print(f"File Rename: {fpath}")
except:
pass
file_detect("path")
```
## Official Website
https://pyantivirus.wixsite.com/pyas , https://github.com/87owo/PYAS
https://pyantivirus.wixsite.com/pyas
https://github.com/87owo/PYAS
## MIT license
## MIT License
https://github.com/87owo/PYAS/blob/main/LICENSE.md
## Support System
Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
## Requirements
psutil==5.9.5, pefile==2023.2.7, requests==2.31.0, pyperclip==1.8.2, pywin32==306, PyQt5==5.15.9
## Import Module
os, gc, sys, time, json, psutil, hashlib, pefile, socket, msvcrt, requests, pyperclip, win32file, win32gui, win32api, win32con, xml, PYAS_Function, PYAS_Function_Safe, PYAS_Extension, PYAS_Language, PYAS_Interface, threading, PyQt5
Other systems may experience software malfunctions or crash
## Special Thanks
360, Wix, VirusShare, mtkiao129, LenStevens, AV-T Team of LisectGroup
360, Wix, VirusShare, mtkiao129, AV-T Team of LisectGroup
Copyright© 2020~2023 PYAS Security By 87owo
Copyright© 2020~2024 PYAS Security By 87owo