Compare commits

..
192 Commits
Author SHA1 Message Date
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
PYDT 2d68400670 Delete PYAS_Function.7z 2023-12-29 09:42:48 +08:00
PYDT 8acaae3f0d Add files via upload 2023-12-29 09:42:10 +08:00
PYDT a5cb26528f Add files via upload 2023-12-15 08:58:39 +08:00
PYDT ac2520a03f Add files via upload 2023-12-15 08:43:04 +08:00
PYDT 9c15cc7b33 Add files via upload 2023-12-14 22:49:20 +08:00
PYDT c38f460163 Add files via upload 2023-12-14 22:25:15 +08:00
PYDT 9bda8c9e77 Add files via upload 2023-12-14 15:48:01 +08:00
PYDT 558be68bad Add files via upload 2023-12-14 15:25:36 +08:00
PYDT 6b9d27ce9b Add files via upload 2023-12-14 09:57:22 +08:00
PYDT 412745eede Add files via upload 2023-12-14 09:44:59 +08:00
PYDT 91ea771af1 Add files via upload 2023-12-14 07:17:45 +08:00
PYDT 238ab03db3 Add files via upload 2023-12-14 07:16:10 +08:00
PYDT 2d63da193d Add files via upload 2023-12-13 09:31:18 +08:00
PYDT fa4c20a241 Add files via upload 2023-12-12 18:00:47 +08:00
PYDT 6294fc33d1 Add files via upload 2023-12-11 18:17:39 +08:00
PYDT c4cf48a94b Add files via upload 2023-12-11 09:12:24 +08:00
PYDT 2934c7eb57 Add files via upload 2023-12-11 07:53:44 +08:00
PYDT 46ce454105 Add files via upload 2023-12-10 18:02:52 +08:00
PYDT 9ab06a0ea9 Add files via upload 2023-12-10 12:33:37 +08:00
PYDT e6f742380a Add files via upload 2023-12-09 17:43:10 +08:00
PYDT 2686812470 Add files via upload 2023-12-09 17:01:08 +08:00
PYDT cd11b5b7b2 Add files via upload 2023-12-08 21:28:06 +08:00
PYDT aae35dc640 Add files via upload 2023-12-08 18:21:31 +08:00
PYDT f0b669ff85 Add files via upload 2023-12-08 08:18:32 +08:00
PYDT 237605bb9f Add files via upload 2023-12-07 16:17:34 +08:00
PYDT 1778046581 Add files via upload 2023-12-07 09:45:20 +08:00
PYDT ff10adfabb Add files via upload 2023-12-06 14:35:52 +08:00
PYDT 1cb0f8d7ba Add files via upload 2023-12-06 14:29:34 +08:00
PYDT 5813bbdcd1 Add files via upload 2023-12-06 09:52:59 +08:00
PYDT b38e5b177e Add files via upload 2023-12-06 09:08:11 +08:00
PYDT 9d66cf248c Add files via upload 2023-12-06 06:37:25 +08:00
PYDT ebcf90d426 Add files via upload 2023-12-05 15:58:41 +08:00
PYDT 51904db187 Add files via upload 2023-12-05 15:15:21 +08:00
PYDT 4fc8755b8d Add files via upload 2023-12-05 11:27:36 +08:00
PYDT 7afcbfaa26 Add files via upload 2023-12-05 09:16:49 +08:00
PYDT 55cb96d978 Add files via upload 2023-12-05 08:44:24 +08:00
PYDT a1de099974 Add files via upload 2023-12-04 21:24:39 +08:00
PYDT a0238732fe Add files via upload 2023-12-04 19:59:48 +08:00
PYDT 6c100b0679 Add files via upload 2023-12-04 19:25:29 +08:00
PYDT e4d159840f Add files via upload 2023-12-04 19:25:10 +08:00
PYDT 0375b3ff02 Add files via upload 2023-12-04 17:01:02 +08:00
PYDT 746bae5103 Add files via upload 2023-12-04 14:10:23 +08:00
PYDT 70eb2c4500 Add files via upload 2023-12-03 23:18:21 +08:00
PYDT 69175f3ae1 Add files via upload 2023-12-02 20:21:07 +08:00
PYDT ed5fab2c54 Add files via upload 2023-12-01 22:26:39 +08:00
PYDT 1425ff8e6c Add files via upload 2023-12-01 19:43:30 +08:00
PYDT 832ab549a1 Add files via upload 2023-12-01 09:25:11 +08:00
PYDT 4ec1661c26 Add files via upload 2023-12-01 08:26:16 +08:00
PYDT ea27712b62 Add files via upload 2023-12-01 08:25:59 +08:00
PYDT 6f65efe2d8 Add files via upload 2023-11-30 21:11:48 +08:00
PYDT 8edcf60baf Add files via upload 2023-11-30 17:23:46 +08:00
PYDT 74f6aec367 Add files via upload 2023-11-30 16:02:10 +08:00
PYDT 62c65a766a Add files via upload 2023-11-30 15:09:35 +08:00
11 changed files with 6421 additions and 6998 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
MIT License 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
+305 -223
View File
@@ -1,10 +1,10 @@
import os, gc, sys, time, json, psutil import os, gc, sys, time, json, psutil
import hashlib, pefile, socket, msvcrt import hashlib, pefile, socket, msvcrt
import xml.etree.ElementTree as xmlet
import requests, pyperclip, win32file import requests, pyperclip, win32file
import win32gui, win32api, win32con import win32gui, win32api, win32con
import xml.etree.ElementTree as xmlet
from PYAS_Function import function_list
from PYAS_Extension import slist, alist from PYAS_Extension import slist, alist
from PYAS_Compress import ListCompressor
from PYAS_Language import translate_dict from PYAS_Language import translate_dict
from PYAS_Interface import Ui_MainWindow from PYAS_Interface import Ui_MainWindow
from threading import Thread from threading import Thread
@@ -17,22 +17,23 @@ class MainWindow_Controller(QMainWindow):
super(MainWindow_Controller, self).__init__() super(MainWindow_Controller, self).__init__()
self.setAttribute(Qt.WA_TranslucentBackground) self.setAttribute(Qt.WA_TranslucentBackground)
self.setWindowFlags(Qt.FramelessWindowHint) self.setWindowFlags(Qt.FramelessWindowHint)
self.pyas = str(sys.argv[0]).replace("\\", "/") self.pyas = sys.argv[0].replace("\\", "/")
self.pyas_version = "2.9.4" self.dir = os.path.dirname(self.pyas)
self.pyae_version = "0000-00-00"
self.pyas_version = "3.0.2"
self.ui = Ui_MainWindow() self.ui = Ui_MainWindow()
self.ui.setupUi(self) self.ui.setupUi(self)
self.init_show_pyas()
self.init_data_base()
self.init_read_json()
self.init_tray_icon() self.init_tray_icon()
self.init_virus_list() self.init_config_boot()
self.init_state_safe()
self.init_config_path()
self.init_config_read()
self.init_config_json() self.init_config_json()
self.init_config_list() self.init_config_list()
self.init_config_boot()
self.init_config_qtui() self.init_config_qtui()
self.init_change_lang() self.init_change_lang()
self.init_theme_color()
self.init_control() self.init_control()
self.show_pyas_ui()
self.init_threads() self.init_threads()
def init_threads(self): def init_threads(self):
@@ -46,44 +47,19 @@ class MainWindow_Controller(QMainWindow):
def init_tray_icon(self): def init_tray_icon(self):
self.tray_icon = QSystemTrayIcon(self) self.tray_icon = QSystemTrayIcon(self)
self.tray_icon.setIcon(QFileIconProvider().icon(QFileInfo(self.pyas))) self.tray_icon.setIcon(QFileIconProvider().icon(QFileInfo(self.pyas)))
self.tray_icon.activated.connect(self.show_pyas_ui) self.tray_icon.activated.connect(self.init_show_pyas)
self.tray_icon.show() self.tray_icon.show()
def init_config_path(self): def init_data_base(self):
try: try:
if not os.path.exists("C:/ProgramData/PYAS"): file_path = os.path.join(self.dir, "PYAS_Function.vdb")
os.makedirs("C:/ProgramData/PYAS") if os.path.exists(file_path):
self.pe = ListCompressor()
self.pe.load_model(file_path)
self.pyae_version = self.pe.get_label()
except Exception as e: except Exception as e:
self.bug_event(e) self.bug_event(e)
def write_config(self, config):
try:
with open("C:/ProgramData/PYAS/PYAS.json", "w", encoding="utf-8") as f:
f.write(json.dumps(config, indent=4, ensure_ascii=False))
except:
pass
def init_virus_list(self):
try:
self.virus_lock = {}
self.virus_list = []
self.virus_list_ui = []
except:
pass
def init_config_list(self):
try:
self.whitelist = []
if os.path.exists("C:/ProgramData/PYAS/Whitelist.ini"):
with open("C:/ProgramData/PYAS/Whitelist.ini", "r", encoding="utf-8") as f:
self.whitelist = [line.strip() for line in f.readlines()]
self.blocklist = []
if os.path.exists("C:/ProgramData/PYAS/Blocklist.ini"):
with open("C:/ProgramData/PYAS/Blocklist.ini", "r", encoding="utf-8") as f:
self.blocklist = [line.strip() for line in f.readlines()]
except:
pass
def init_config_boot(self): def init_config_boot(self):
try: try:
with open(r"\\.\PhysicalDrive0", "r+b") as f: with open(r"\\.\PhysicalDrive0", "r+b") as f:
@@ -93,40 +69,77 @@ class MainWindow_Controller(QMainWindow):
except: except:
self.mbr_value = False self.mbr_value = False
def init_config_read(self): def write_config(self, config):
try: try:
with open("C:/ProgramData/PYAS/PYAS.json", "w") as f:
f.write(json.dumps(config, indent=4, ensure_ascii=False))
except Exception as e:
self.bug_event(e)
def init_config_list(self):
try:
self.whitelist = []
if os.path.exists("C:/ProgramData/PYAS/Whitelist.ini"):
with open("C:/ProgramData/PYAS/Whitelist.ini", "r") as f:
self.whitelist = [line.strip() for line in f.readlines()]
self.blocklist = []
if os.path.exists("C:/ProgramData/PYAS/Blocklist.ini"):
with open("C:/ProgramData/PYAS/Blocklist.ini", "r") as f:
self.blocklist = [line.strip() for line in f.readlines()]
except:
pass
def init_read_json(self):
try:
if not os.path.exists("C:/ProgramData/PYAS"):
os.makedirs("C:/ProgramData/PYAS")
if not os.path.exists("C:/ProgramData/PYAS/PYAS.json"): if not os.path.exists("C:/ProgramData/PYAS/PYAS.json"):
self.write_config({"language":"en_US","high_sensitivity":0,"cloud_services":1}) self.write_config({"high_sensitive":0,"cloud_services":1,
with open("C:/ProgramData/PYAS/PYAS.json", "r", encoding="utf-8") as f: "language":"en_US","theme_color":"White","theme_custom":""})
with open("C:/ProgramData/PYAS/PYAS.json", "r") as f:
self.json = json.load(f) self.json = json.load(f)
except: except:
self.write_config({"language":"en_US","high_sensitivity":0,"cloud_services":1}) self.write_config({"high_sensitive":0,"cloud_services":1,
with open("C:/ProgramData/PYAS/PYAS.json", "r", encoding="utf-8") as f: "language":"en_US","theme_color":"White","theme_custom":""})
with open("C:/ProgramData/PYAS/PYAS.json", "r") as f:
self.json = json.load(f) self.json = json.load(f)
def init_config_json(self): def init_config_json(self):
self.high_sensitivity = self.json.get("high_sensitivity", 0) self.json["high_sensitive"] = self.json.get("high_sensitive", 0)
if self.high_sensitivity == 1: self.json["cloud_services"] = self.json.get("cloud_services", 1)
self.json["language"] = self.json.get("language", "en_US")
self.json["theme_color"] = self.json.get("theme_color", "White")
self.json["theme_custom"] = self.json.get("theme_custom", "")
if self.json["high_sensitive"] == 1:
self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟")) self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟"))
self.ui.high_sensitivity_switch_Button.setStyleSheet(""" self.ui.high_sensitivity_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
self.cloud_services = self.json.get("cloud_services", 1) if self.json["cloud_services"] == 1:
if self.cloud_services == 1:
self.ui.cloud_services_switch_Button.setText(self.trans("已開啟")) self.ui.cloud_services_switch_Button.setText(self.trans("已開啟"))
self.ui.cloud_services_switch_Button.setStyleSheet(""" self.ui.cloud_services_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
self.language = self.json.get("language", "en_US") if self.json["language"] == "zh_TW":
if self.language == "zh_TW":
self.ui.Language_Traditional_Chinese.setChecked(True) self.ui.Language_Traditional_Chinese.setChecked(True)
elif self.language == "zh_CN": elif self.json["language"] == "zh_CN":
self.ui.Language_Simplified_Chinese.setChecked(True) self.ui.Language_Simplified_Chinese.setChecked(True)
else: elif self.json["language"] == "en_US":
self.ui.Language_English.setChecked(True) self.ui.Language_English.setChecked(True)
if self.json["theme_color"] == "White":
self.ui.Theme_White.setChecked(True)
elif self.json["theme_color"] == "Red":
self.ui.Theme_Red.setChecked(True)
elif self.json["theme_color"] == "Green":
self.ui.Theme_Green.setChecked(True)
elif self.json["theme_color"] == "Yellow":
self.ui.Theme_Yellow.setChecked(True)
elif self.json["theme_color"] == "Blue":
self.ui.Theme_Blue.setChecked(True)
elif self.json["theme_color"] == "Custom":
self.ui.Theme_Customize.setChecked(True)
def init_control(self): def init_control(self):
self.ui.Theme_White.setChecked(True)
self.ui.Close_Button.clicked.connect(self.close) self.ui.Close_Button.clicked.connect(self.close)
self.ui.Minimize_Button.clicked.connect(self.showMinimized) self.ui.Minimize_Button.clicked.connect(self.showMinimized)
self.ui.Menu_Button.clicked.connect(self.show_menu) self.ui.Menu_Button.clicked.connect(self.show_menu)
@@ -164,7 +177,7 @@ class MainWindow_Controller(QMainWindow):
self.ui.Language_Simplified_Chinese.clicked.connect(self.init_change_lang) self.ui.Language_Simplified_Chinese.clicked.connect(self.init_change_lang)
self.ui.Language_English.clicked.connect(self.init_change_lang) self.ui.Language_English.clicked.connect(self.init_change_lang)
self.ui.Theme_White.clicked.connect(self.change_theme) self.ui.Theme_White.clicked.connect(self.change_theme)
self.ui.Theme_Black.clicked.connect(self.change_theme) self.ui.Theme_Customize.clicked.connect(self.change_theme)
self.ui.Theme_Green.clicked.connect(self.change_theme) self.ui.Theme_Green.clicked.connect(self.change_theme)
self.ui.Theme_Yellow.clicked.connect(self.change_theme) self.ui.Theme_Yellow.clicked.connect(self.change_theme)
self.ui.Theme_Blue.clicked.connect(self.change_theme) self.ui.Theme_Blue.clicked.connect(self.change_theme)
@@ -228,8 +241,8 @@ class MainWindow_Controller(QMainWindow):
return text return text
def init_lang_text(self): def init_lang_text(self):
self.ui.State_title.setText(self.trans("此裝置已受到防護" if self.safe else "此裝置當前不安全")) self.ui.State_title.setText(self.trans("此裝置已受到防護"))
self.ui.Window_title.setText(self.trans(f"PYAS V{self.pyas_version}")) self.ui.Window_title.setText(self.trans(f"PYAS Security"))
self.ui.PYAS_CopyRight.setText(self.trans(f"Copyright© 2020-{max(int(time.strftime('%Y')), 2020)} PYAS Security")) self.ui.PYAS_CopyRight.setText(self.trans(f"Copyright© 2020-{max(int(time.strftime('%Y')), 2020)} PYAS Security"))
self.ui.State_Button.setText(self.trans(" 狀態")) self.ui.State_Button.setText(self.trans(" 狀態"))
self.ui.Virus_Scan_Button.setText(self.trans(" 掃描")) self.ui.Virus_Scan_Button.setText(self.trans(" 掃描"))
@@ -268,7 +281,7 @@ class MainWindow_Controller(QMainWindow):
self.ui.Window_Block_Button.setText(self.trans("軟體彈窗攔截")) self.ui.Window_Block_Button.setText(self.trans("軟體彈窗攔截"))
self.ui.Repair_System_Network_Button.setText(self.trans("系統網路修復")) self.ui.Repair_System_Network_Button.setText(self.trans("系統網路修復"))
self.ui.About_Back.setText(self.trans("返回")) self.ui.About_Back.setText(self.trans("返回"))
self.ui.PYAS_Version.setText(self.trans(f"PYAS V{self.pyas_version} (ML Engine)")) self.ui.PYAS_Version.setText(self.trans(f"PYAS V{self.pyas_version} ({self.pyae_version})"))
self.ui.GUI_Made_title.setText(self.trans("介面製作:")) self.ui.GUI_Made_title.setText(self.trans("介面製作:"))
self.ui.GUI_Made_Name.setText(self.trans("mtkiao")) self.ui.GUI_Made_Name.setText(self.trans("mtkiao"))
self.ui.Core_Made_title.setText(self.trans("核心製作:")) self.ui.Core_Made_title.setText(self.trans("核心製作:"))
@@ -289,8 +302,8 @@ class MainWindow_Controller(QMainWindow):
self.ui.Add_White_list_Button.setText(self.trans("選擇")) self.ui.Add_White_list_Button.setText(self.trans("選擇"))
self.ui.Theme_title.setText(self.trans("顯色主題")) self.ui.Theme_title.setText(self.trans("顯色主題"))
self.ui.Theme_illustrate.setText(self.trans("請選擇主題")) self.ui.Theme_illustrate.setText(self.trans("請選擇主題"))
self.ui.Theme_Customize.setText(self.trans("自定主題"))
self.ui.Theme_White.setText(self.trans("白色主題")) self.ui.Theme_White.setText(self.trans("白色主題"))
self.ui.Theme_Black.setText(self.trans("黑色主題"))
self.ui.Theme_Yellow.setText(self.trans("黃色主題")) self.ui.Theme_Yellow.setText(self.trans("黃色主題"))
self.ui.Theme_Red.setText(self.trans("紅色主題")) self.ui.Theme_Red.setText(self.trans("紅色主題"))
self.ui.Theme_Green.setText(self.trans("綠色主題")) self.ui.Theme_Green.setText(self.trans("綠色主題"))
@@ -300,30 +313,70 @@ class MainWindow_Controller(QMainWindow):
self.ui.Language_illustrate.setText(self.trans("請選擇語言")) self.ui.Language_illustrate.setText(self.trans("請選擇語言"))
self.ui.License_terms_title.setText(self.trans("許可條款:")) self.ui.License_terms_title.setText(self.trans("許可條款:"))
def init_theme_color(self):
try:
if self.json["theme_color"] == "White":
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(240,240,240);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(230,230,230);}")
elif self.json["theme_color"] == "Red":
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(250,230,230);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(250,220,220);}")
elif self.json["theme_color"] == "Yellow":
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(250,250,230);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(250,250,220);}")
elif self.json["theme_color"] == "Green":
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(230,250,230);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(220,250,220);}")
elif self.json["theme_color"] == "Blue":
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(230,250,250);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(220,250,250);}")
elif self.json["theme_color"] == "Custom":
with open(os.path.join(self.json["theme_custom"],"Color.ini"), "r") as f:
self.themecolor = [line.strip() for line in f.readlines()]
self.ui.Window_widget.setStyleSheet(self.themecolor[0])
self.ui.Navigation_Bar.setStyleSheet(self.themecolor[1])
file = os.path.join(self.json["theme_custom"],"Check.png")
self.ui.State_icon.setPixmap(QPixmap(file))
except:
self.ui.Theme_White.setChecked(True)
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.Window_widget.setStyleSheet("QWidget#Window_widget {background-color:rgb(240,240,240);}")
self.ui.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar {background-color:rgb(230,230,230);}")
def read_custom_theme(self):
try:
path = str(QFileDialog.getExistingDirectory(self,self.trans("自定主題"),"C:/"))
if os.path.exists(os.path.join(path,"Color.ini")):
self.json["theme_custom"] = path
except:
pass
def change_theme(self): def change_theme(self):
if self.ui.Theme_White.isChecked(): if self.ui.Theme_White.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(240,240,240);}""") self.json["theme_color"] = "White"
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(230,230,230);}""")
elif self.ui.Theme_Red.isChecked(): elif self.ui.Theme_Red.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(255,150,150);}""") self.json["theme_color"] = "Red"
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(255,140,140);}""")
elif self.ui.Theme_Black.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(150,150,150);}""")
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(140,140,140);}""")
elif self.ui.Theme_Green.isChecked(): elif self.ui.Theme_Green.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(150,255,150);}""") self.json["theme_color"] = "Green"
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(130,255,130);}""")
elif self.ui.Theme_Yellow.isChecked(): elif self.ui.Theme_Yellow.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(255,255,150);}""") self.json["theme_color"] = "Yellow"
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(240,240,140);}""")
elif self.ui.Theme_Blue.isChecked(): elif self.ui.Theme_Blue.isChecked():
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(0,200,255);}""") self.json["theme_color"] = "Blue"
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(0,190,255);}""") elif self.ui.Theme_Customize.isChecked():
self.read_custom_theme()
self.json["theme_color"] = "Custom"
self.write_config(self.json)
self.init_theme_color()
def change_animation(self,widget): def change_animation(self,widget):
x, y = 170, widget.pos().y() x, y = 170, widget.pos().y()
self.anim = QPropertyAnimation(widget, b"geometry") self.anim = QPropertyAnimation(widget, b"geometry")
widget.setGeometry(QRect(x - 100,y, 671,481)) widget.setGeometry(QRect(x - 100,y, 671, 481))
self.anim.setKeyValueAt(0.2, QRect(x - 60,y,671,481)) self.anim.setKeyValueAt(0.2, QRect(x - 60,y,671,481))
self.anim.setKeyValueAt(0.4, QRect(x - 10,y,671,481)) self.anim.setKeyValueAt(0.4, QRect(x - 10,y,671,481))
self.anim.setKeyValueAt(0.7, QRect(x - 3,y,671,481)) self.anim.setKeyValueAt(0.7, QRect(x - 3,y,671,481))
@@ -360,8 +413,8 @@ class MainWindow_Controller(QMainWindow):
self.timer.start(2) self.timer.start(2)
def timeout(self): def timeout(self):
if self.opacity.i < 1: if self.opacity.i <= 1:
self.opacity.i += 0.02 self.opacity.i += 0.05
self.opacity.setOpacity(self.opacity.i) self.opacity.setOpacity(self.opacity.i)
else: else:
self.timer.stop() self.timer.stop()
@@ -370,8 +423,8 @@ class MainWindow_Controller(QMainWindow):
x, y = widget.pos().x(), widget.pos().y() x, y = widget.pos().x(), widget.pos().y()
self.anim4 = QPropertyAnimation(widget, b"geometry") self.anim4 = QPropertyAnimation(widget, b"geometry")
self.anim4.setDuration(time) self.anim4.setDuration(time)
self.anim4.setStartValue(QRect(x, y, 141, ny)) self.anim4.setStartValue(QRect(x, y, 131, ny))
self.anim4.setEndValue(QRect(x, y, 141, ny2)) self.anim4.setEndValue(QRect(x, y, 131, ny2))
self.anim4.start() self.anim4.start()
def change_animation_5(self,widget,x,y,nx,ny): def change_animation_5(self,widget,x,y,nx,ny):
@@ -505,10 +558,10 @@ class MainWindow_Controller(QMainWindow):
rect.setHeight(rect.height()-10) rect.setHeight(rect.height()-10)
pat2.drawRoundedRect(rect, 1, 1) pat2.drawRoundedRect(rect, 1, 1)
def show_pyas_ui(self): def init_show_pyas(self):
def update_opacity(): def update_opacity():
if self.pyas_opacity <= 100: if self.pyas_opacity <= 100:
self.pyas_opacity += 1 self.pyas_opacity += 2
self.setWindowOpacity(self.pyas_opacity/100) self.setWindowOpacity(self.pyas_opacity/100)
else: else:
self.timer.stop() self.timer.stop()
@@ -518,10 +571,10 @@ class MainWindow_Controller(QMainWindow):
self.timer.timeout.connect(update_opacity) self.timer.timeout.connect(update_opacity)
self.timer.start(2) self.timer.start(2)
def hide_pyas_ui(self): def init_hide_pyas(self):
def update_opacity(): def update_opacity():
if self.pyas_opacity >= 0: if self.pyas_opacity >= 0:
self.pyas_opacity -= 1 self.pyas_opacity -= 2
self.setWindowOpacity(self.pyas_opacity/100) self.setWindowOpacity(self.pyas_opacity/100)
else: else:
self.timer.stop() self.timer.stop()
@@ -532,11 +585,11 @@ class MainWindow_Controller(QMainWindow):
def showMinimized(self): def showMinimized(self):
if self.block_window: if self.block_window:
self.hide_pyas_ui() self.init_hide_pyas()
self.send_notify(self.trans("PYAS 已最小化到系統托盤圖標")) self.send_notify(self.trans("PYAS 已最小化到系統托盤圖標"))
def closeEvent(self, event): def closeEvent(self, event):
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要退出 PYAS 和所有防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("您確定要退出 PYAS 和所有防護嗎?"):
self.virus_scan_break() self.virus_scan_break()
event.accept() event.accept()
else: else:
@@ -544,24 +597,57 @@ class MainWindow_Controller(QMainWindow):
def bug_event(self, text): def bug_event(self, text):
try: try:
print(f"[Error] {text}") print(f"[Error] > {text}")
QMessageBox.critical(self,self.trans("錯誤"), text, QMessageBox.Ok) QMessageBox.critical(self, "Error", str(text), QMessageBox.Ok)
except: except:
pass pass
def send_notify(self,text): def info_event(self, text):
try: try:
now_time = time.strftime('%Y/%m/%d %H:%M:%S') print(f"[Info] > {text}")
self.ui.State_output.append(f"[{now_time}] {text}") QMessageBox.information(self, "Info", self.trans(str(text)), QMessageBox.Ok)
self.tray_icon.showMessage(now_time, text, 5000)
except: except:
pass pass
def question_event(self, text):
try:
print(f"[Quest] > {text}")
return QMessageBox.question(self, "Quest", self.trans(str(text)),QMessageBox.Yes|QMessageBox.No) == 16384
except:
return False
def send_notify(self, text):
try:
now_time = time.strftime('%Y-%m-%d %H:%M:%S')
print(f"[Notify] > [{now_time}] {text}")
self.tray_icon.showMessage(now_time, text, 5000)
QMetaObject.invokeMethod(self.ui.State_output, "append", Qt.QueuedConnection, Q_ARG(str, f"[{now_time}] {text}"))
except:
pass
def update_database(self):
try:
if self.question_event("您確定要更新數據庫嗎?"):
file_path = os.path.join(self.dir, "PYAS_Function.vdb")
response = requests.get('http://27.147.30.238:5001/database', params={"version": self.pyae_version}, timeout=5)
if response.status_code == 200:
with open(file_path, 'wb') as f:
f.write(response.content)
self.init_data_base()
self.init_lang_text()
self.info_event(f"數據庫更新成功: {self.pyae_version}")
elif response.status_code == 204:
self.info_event(f"數據庫已經是最新: {self.pyae_version}")
except Exception as e:
self.bug_event(e)
def show_menu(self): def show_menu(self):
self.WindowMenu = QMenu() self.WindowMenu = QMenu()
Main_Settings = QAction(self.trans("設定"),self) Main_Settings = QAction(self.trans("設定"),self)
Main_Update = QAction(self.trans("更新"),self)
Main_About = QAction(self.trans("關於"),self) Main_About = QAction(self.trans("關於"),self)
self.WindowMenu.addAction(Main_Settings) self.WindowMenu.addAction(Main_Settings)
self.WindowMenu.addAction(Main_Update)
self.WindowMenu.addAction(Main_About) self.WindowMenu.addAction(Main_About)
Qusetion = self.WindowMenu.exec_(self.ui.Menu_Button.mapToGlobal(QPoint(0, 30))) Qusetion = self.WindowMenu.exec_(self.ui.Menu_Button.mapToGlobal(QPoint(0, 30)))
if Qusetion == Main_About and self.ui.About_widget.isHidden(): if Qusetion == Main_About and self.ui.About_widget.isHidden():
@@ -579,67 +665,54 @@ class MainWindow_Controller(QMainWindow):
self.ui.Window_widget.raise_() self.ui.Window_widget.raise_()
self.change_animation_3(self.ui.Setting_widget,0.5) self.change_animation_3(self.ui.Setting_widget,0.5)
self.change_animation_5(self.ui.Setting_widget,10,50,831,481) self.change_animation_5(self.ui.Setting_widget,10,50,831,481)
if Qusetion == Main_Update:
self.update_database()
def change_sensitive(self): def change_sensitive(self):
sw_state = self.ui.high_sensitivity_switch_Button.text() sw_state = self.ui.high_sensitivity_switch_Button.text()
if sw_state == self.trans("已開啟"): if sw_state == self.trans("已開啟"):
self.high_sensitivity = 0 self.json["high_sensitive"] = 0
self.json["high_sensitivity"] = 0
self.ui.high_sensitivity_switch_Button.setText(self.trans("已關閉")) self.ui.high_sensitivity_switch_Button.setText(self.trans("已關閉"))
self.ui.high_sensitivity_switch_Button.setStyleSheet(""" self.ui.high_sensitivity_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230,230,230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220,220,220);}""")
elif QMessageBox.warning(self,self.trans("警告"),self.trans("此選項可能會誤報檔案,您確定要開啟嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: elif self.question_event("此選項可能會誤報檔案,您確定要開啟嗎?"):
self.high_sensitivity = 1 self.json["high_sensitive"] = 1
self.json["high_sensitivity"] = 1
self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟")) self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟"))
self.ui.high_sensitivity_switch_Button.setStyleSheet(""" self.ui.high_sensitivity_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200,250,200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210,250,210);}""")
self.write_config(self.json) self.write_config(self.json)
def change_cloud_service(self): def change_cloud_service(self):
sw_state = self.ui.cloud_services_switch_Button.text() sw_state = self.ui.cloud_services_switch_Button.text()
if sw_state == self.trans("已關閉"): if sw_state == self.trans("已關閉"):
self.cloud_services = 1
self.json["cloud_services"] = 1 self.json["cloud_services"] = 1
self.ui.cloud_services_switch_Button.setText(self.trans("已開啟")) self.ui.cloud_services_switch_Button.setText(self.trans("已開啟"))
self.ui.cloud_services_switch_Button.setStyleSheet(""" self.ui.cloud_services_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200,250,200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210,250,210);}""")
elif sw_state == self.trans("已開啟"): elif sw_state == self.trans("已開啟"):
self.cloud_services = 0
self.json["cloud_services"] = 0 self.json["cloud_services"] = 0
self.ui.cloud_services_switch_Button.setText(self.trans("已關閉")) self.ui.cloud_services_switch_Button.setText(self.trans("已關閉"))
self.ui.cloud_services_switch_Button.setStyleSheet(""" self.ui.cloud_services_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230,230,230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220,220,220);}""")
self.write_config(self.json) self.write_config(self.json)
def init_state_safe(self):
try:
self.safe = True
self.ui.State_icon.setPixmap(QPixmap(":/icon/Check.png"))
self.ui.State_title.setText(self.trans("此裝置已受到防護"))
except:
pass
def init_state_unsafe(self):
try:
self.safe = False
self.ui.State_icon.setPixmap(QPixmap(":/icon/Close.png"))
self.ui.State_title.setText(self.trans("此裝置當前不安全"))
except:
pass
def init_scan(self): def init_scan(self):
try: try:
self.ui.Virus_Scan_text.setText(self.trans("正在初始化中")) self.ui.Virus_Scan_text.setText(self.trans("正在初始化中"))
QApplication.processEvents() QApplication.processEvents()
for file in self.virus_list: try:
self.unlock_file(file) for file in self.virus_list:
self.unlock_file(file)
except:
pass
self.scan_file = True self.scan_file = True
self.init_virus_list() self.virus_lock = {}
self.virus_list = []
self.virus_list_ui = []
self.ui.Virus_Scan_Solve_Button.hide() self.ui.Virus_Scan_Solve_Button.hide()
self.ui.Virus_Scan_choose_widget.hide() self.ui.Virus_Scan_choose_widget.hide()
self.ui.Virus_Scan_choose_Button.hide() self.ui.Virus_Scan_choose_Button.hide()
@@ -654,7 +727,7 @@ class MainWindow_Controller(QMainWindow):
for i in self.ui.Virus_Scan_output.selectedIndexes(): for i in self.ui.Virus_Scan_output.selectedIndexes():
item_row = self.virus_list[i.row()] item_row = self.virus_list[i.row()]
if item_row: if item_row:
pyperclip.copy(item_row) pyperclip.copy(item_row.replace("/", "\\"))
menu = QMenu() menu = QMenu()
copyPath = menu.addAction(self.trans("複製路徑")) copyPath = menu.addAction(self.trans("複製路徑"))
copyPath.triggered.connect(lambda: copyPathFunc()) copyPath.triggered.connect(lambda: copyPathFunc())
@@ -688,8 +761,9 @@ class MainWindow_Controller(QMainWindow):
self.unlock_file(file) self.unlock_file(file)
except: except:
continue continue
self.init_state_safe() self.virus_lock = {}
self.init_virus_list() self.virus_list = []
self.virus_list_ui = []
self.ui.Virus_Scan_output.clear() self.ui.Virus_Scan_output.clear()
self.ui.Virus_Scan_text.setText(self.trans("成功: 刪除成功")) self.ui.Virus_Scan_text.setText(self.trans("成功: 刪除成功"))
except Exception as e: except Exception as e:
@@ -711,14 +785,12 @@ class MainWindow_Controller(QMainWindow):
def answer_scan(self): def answer_scan(self):
try: try:
if self.virus_list: if self.virus_list:
self.init_state_unsafe()
self.ui.Virus_Scan_Solve_Button.show() self.ui.Virus_Scan_Solve_Button.show()
self.ui.Virus_Scan_Break_Button.hide() self.ui.Virus_Scan_Break_Button.hide()
self.ui.Virus_Scan_choose_Button.show() self.ui.Virus_Scan_choose_Button.show()
text = self.trans(f"當前發現 {len(self.virus_list)} 個病毒") text = self.trans(f"當前發現 {len(self.virus_list)} 個病毒")
else: else:
self.virus_scan_break() self.virus_scan_break()
self.init_state_safe()
text = self.trans("當前未發現病毒") text = self.trans("當前未發現病毒")
self.ui.Virus_Scan_text.setText(text) self.ui.Virus_Scan_text.setText(text)
self.send_notify(text) self.send_notify(text)
@@ -775,12 +847,12 @@ class MainWindow_Controller(QMainWindow):
def start_scan(self, file): def start_scan(self, file):
try: try:
file_type = str(f".{file.split('.')[-1]}").lower() file_type = str(f".{file.split('.')[-1]}").lower()
if self.high_sensitivity and file != self.pyas: if self.json["high_sensitive"] and file != self.pyas:
if self.api_scan(file): if self.api_scan(file):
self.write_scan(self.trans("惡意"),file) self.write_scan(self.trans("惡意"),file)
elif self.pe_scan(file): elif self.pe_scan(file):
self.write_scan(self.trans("可疑"),file) self.write_scan(self.trans("可疑"),file)
elif file_type in slist and self.sign_scan(file): elif file_type in slist and file != self.pyas:
if self.api_scan(file): if self.api_scan(file):
self.write_scan(self.trans("惡意"),file) self.write_scan(self.trans("惡意"),file)
elif self.pe_scan(file): elif self.pe_scan(file):
@@ -808,11 +880,11 @@ class MainWindow_Controller(QMainWindow):
def api_scan(self, file): def api_scan(self, file):
try: try:
if self.cloud_services == 1: if self.json["cloud_services"] == 1:
with open(file, "rb") as f: with open(file, "rb") as f:
text = str(hashlib.md5(f.read()).hexdigest()) 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--' 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) response = requests.post('http://qup.f.360.cn/file_health_info.php', data=strBody, timeout=5)
return response.status_code == 200 and float(xmlet.fromstring(response.text).find('.//e_level').text) > 50 return response.status_code == 200 and float(xmlet.fromstring(response.text).find('.//e_level').text) > 50
return False return False
except: except:
@@ -835,26 +907,34 @@ class MainWindow_Controller(QMainWindow):
fn.append(str(func.name, "utf-8")) fn.append(str(func.name, "utf-8"))
except: except:
pass pass
for vfl in function_list: if self.json["high_sensitive"]:
QApplication.processEvents() return self.pe.predict(fn)
similarity = len(set(fn)&set(vfl))/len(set(fn)|set(vfl)) elif "_CorExeMain" not in fn:
if self.high_sensitivity and similarity >= 0.9: return self.pe.predict(fn)
return True return False
elif "_CorExeMain" not in fn and similarity == 1.0: except:
return True return False
def proc_scan(self, pid):
try:
for entry in psutil.Process(pid).memory_maps():
file = entry.path.replace("\\", "/")
if ":/Windows" not in file and ":/Program" not in file:
if self.api_scan(file) or self.pe_scan(file):
return True
return False return False
except: except:
return False return False
def repair_system(self): def repair_system(self):
try: try:
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要修復系統檔案嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("您確定要修復系統檔案嗎?"):
self.repair_system_wallpaper() self.repair_system_wallpaper()
self.repair_system_restrict() self.repair_system_restrict()
self.repair_system_file_type() self.repair_system_file_type()
self.repair_system_file_icon() self.repair_system_file_icon()
self.repair_system_image() self.repair_system_image()
QMessageBox.information(self,self.trans("成功"),self.trans("修復系統檔案成功"),QMessageBox.Ok) self.info_event("修復系統檔案成功")
except Exception as e: except Exception as e:
self.bug_event(e) self.bug_event(e)
@@ -948,7 +1028,8 @@ class MainWindow_Controller(QMainWindow):
try: try:
win32api.RegDeleteValue(key,i) win32api.RegDeleteValue(key,i)
self.proc.kill() self.proc.kill()
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.name().replace("\\", "/")) file = self.proc.exe().replace("\\", "/")
self.send_notify(self.trans("惡意行為攔截: ")+file)
except: except:
pass pass
win32api.RegCloseKey(key) win32api.RegCloseKey(key)
@@ -966,12 +1047,12 @@ class MainWindow_Controller(QMainWindow):
def clean_system(self): def clean_system(self):
try: try:
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要清理系統垃圾嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("您確定要清理系統垃圾嗎?"):
self.total_deleted_size = 0 self.total_deleted_size = 0
self.traverse_temp(f"C:/Users/{os.getlogin()}/AppData/Local/Temp/") self.traverse_temp(f"C:/Users/{os.getlogin()}/AppData/Local/Temp/")
self.traverse_temp(f"C:/Windows/Temp/") self.traverse_temp(f"C:/Windows/Temp/")
self.traverse_temp(f"C:/$Recycle.Bin/") self.traverse_temp(f"C:/$Recycle.Bin/")
QMessageBox.information(self,self.trans("成功"),self.trans(f"成功清理了 {self.total_deleted_size} 位元的系統垃圾"),QMessageBox.Ok) self.info_event(f"成功清理了 {self.total_deleted_size} 位元的系統垃圾")
except Exception as e: except Exception as e:
self.bug_event(e) self.bug_event(e)
@@ -993,40 +1074,40 @@ class MainWindow_Controller(QMainWindow):
try: try:
file = str(QFileDialog.getOpenFileName(self,self.trans("增加到白名單"),"C:/")[0]).replace("\\", "/") file = str(QFileDialog.getOpenFileName(self,self.trans("增加到白名單"),"C:/")[0]).replace("\\", "/")
if file and file not in self.whitelist: if file and file not in self.whitelist:
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("您確定要增加到白名單嗎?"):
self.whitelist.append(file) self.whitelist.append(file)
with open("C:/ProgramData/PYAS/Whitelist.ini", "a+", encoding="utf-8") as f: with open("C:/ProgramData/PYAS/Whitelist.ini", "a+") as f:
f.write(f"{file}\n") f.write(f"{file}\n")
QMessageBox.information(self,self.trans("成功"),self.trans(f"成功增加到白名單: ")+file,QMessageBox.Ok) self.info_event(f"成功增加到白名單: "+file)
elif file and QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要取消增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: elif file and self.question_event("您確定要取消增加到白名單嗎?"):
self.whitelist.remove(file) self.whitelist.remove(file)
with open("C:/ProgramData/PYAS/Whitelist.ini", "w", encoding="utf-8") as f: with open("C:/ProgramData/PYAS/Whitelist.ini", "w") as f:
for white_file in self.whitelist: for white_file in self.whitelist:
f.write(f'{white_file}\n') f.write(f'{white_file}\n')
QMessageBox.information(self,self.trans("成功"),self.trans(f"成功取消增加到白名單: ")+file,QMessageBox.Ok) self.info_event(f"成功取消增加到白名單: "+file)
except Exception as e: except Exception as e:
self.bug_event(e) self.bug_event(e)
def get_software_window(self): def get_software_window(self):
try: try:
self.block_window = False self.block_window = False
if QMessageBox.warning(self,self.trans("警告"),self.trans("請選擇要攔截的軟體彈窗"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("請選擇要攔截的軟體彈窗"):
while not self.block_window: while not self.block_window:
window_name = str(win32gui.GetWindowText(win32gui.GetForegroundWindow())) window_name = str(win32gui.GetWindowText(win32gui.GetForegroundWindow()))
QApplication.processEvents() QApplication.processEvents()
if window_name not in ["","PYAS",self.trans("警告")]: if window_name not in ["","PYAS",self.trans("警告")]:
if window_name not in self.blocklist: if window_name not in self.blocklist:
if QMessageBox.warning(self,self.trans("警告"),self.trans(f"您確定要攔截 {window_name} 嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event(f"您確定要攔截 {window_name} 嗎?"):
self.blocklist.append(window_name) self.blocklist.append(window_name)
with open("C:/ProgramData/PYAS/Blocklist.ini", "a+", encoding="utf-8") as f: with open("C:/ProgramData/PYAS/Blocklist.ini", "a+") as f:
f.write(f'{window_name}\n') f.write(f'{window_name}\n')
QMessageBox.information(self,self.trans("成功"),self.trans(f"成功增加到彈窗攔截: ")+window_name,QMessageBox.Ok) self.info_event(f"成功增加到彈窗攔截: "+window_name)
elif QMessageBox.warning(self,self.trans("警告"),self.trans(f"您確定要取消攔截 {window_name} 嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: elif self.question_event(f"您確定要取消攔截 {window_name} 嗎?"):
self.blocklist.remove(window_name) self.blocklist.remove(window_name)
with open("C:/ProgramData/PYAS/Blocklist.ini", "w", encoding="utf-8") as f: with open("C:/ProgramData/PYAS/Blocklist.ini", "w") as f:
for block_name in self.blocklist: for block_name in self.blocklist:
f.write(f'{block_name}\n') f.write(f'{block_name}\n')
QMessageBox.information(self,self.trans("成功"),self.trans(f"成功取消彈窗攔截: ")+window_name,QMessageBox.Ok) self.info_event(f"成功取消彈窗攔截: "+window_name)
self.block_window = True self.block_window = True
self.block_window_init() self.block_window_init()
except Exception as e: except Exception as e:
@@ -1047,9 +1128,9 @@ class MainWindow_Controller(QMainWindow):
def repair_network(self): def repair_network(self):
try: try:
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要修復系統網路嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("您確定要修復系統網路嗎?"):
os.system("netsh winsock reset") os.system("netsh winsock reset")
if QMessageBox.warning(self,self.trans("警告"),self.trans("使用此選項需要重啟,您確定要重啟嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if self.question_event("使用此選項需要重啟,您確定要重啟嗎?"):
os.system("shutdown -r -t 0") os.system("shutdown -r -t 0")
except Exception as e: except Exception as e:
self.bug_event(e) self.bug_event(e)
@@ -1097,14 +1178,14 @@ class MainWindow_Controller(QMainWindow):
self.proc_protect = False self.proc_protect = False
self.ui.Protection_switch_Button.setText(self.trans("已關閉")) self.ui.Protection_switch_Button.setText(self.trans("已關閉"))
self.ui.Protection_switch_Button.setStyleSheet(""" self.ui.Protection_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230, 230, 230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220, 220, 220);}""")
else: else:
self.proc_protect = True self.proc_protect = True
self.ui.Protection_switch_Button.setText(self.trans("已開啟")) self.ui.Protection_switch_Button.setText(self.trans("已開啟"))
self.ui.Protection_switch_Button.setStyleSheet(""" self.ui.Protection_switch_Button.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
Thread(target=self.protect_proc_thread, daemon=True).start() Thread(target=self.protect_proc_thread, daemon=True).start()
def protect_file_init(self): def protect_file_init(self):
@@ -1112,14 +1193,14 @@ class MainWindow_Controller(QMainWindow):
self.file_protect = False self.file_protect = False
self.ui.Protection_switch_Button_2.setText(self.trans("已關閉")) self.ui.Protection_switch_Button_2.setText(self.trans("已關閉"))
self.ui.Protection_switch_Button_2.setStyleSheet(""" self.ui.Protection_switch_Button_2.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230, 230, 230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220, 220, 220);}""")
else: else:
self.file_protect = True self.file_protect = True
self.ui.Protection_switch_Button_2.setText(self.trans("已開啟")) self.ui.Protection_switch_Button_2.setText(self.trans("已開啟"))
self.ui.Protection_switch_Button_2.setStyleSheet(""" self.ui.Protection_switch_Button_2.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
Thread(target=self.protect_file_thread, daemon=True).start() Thread(target=self.protect_file_thread, daemon=True).start()
def protect_boot_init(self): def protect_boot_init(self):
@@ -1127,14 +1208,14 @@ class MainWindow_Controller(QMainWindow):
self.mbr_protect = False self.mbr_protect = False
self.ui.Protection_switch_Button_3.setText(self.trans("已關閉")) self.ui.Protection_switch_Button_3.setText(self.trans("已關閉"))
self.ui.Protection_switch_Button_3.setStyleSheet(""" self.ui.Protection_switch_Button_3.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230, 230, 230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220, 220, 220);}""")
else: else:
self.mbr_protect = True self.mbr_protect = True
self.ui.Protection_switch_Button_3.setText(self.trans("已開啟")) self.ui.Protection_switch_Button_3.setText(self.trans("已開啟"))
self.ui.Protection_switch_Button_3.setStyleSheet(""" self.ui.Protection_switch_Button_3.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
Thread(target=self.protect_boot_thread, daemon=True).start() Thread(target=self.protect_boot_thread, daemon=True).start()
def protect_reg_init(self): def protect_reg_init(self):
@@ -1142,14 +1223,14 @@ class MainWindow_Controller(QMainWindow):
self.reg_protect = False self.reg_protect = False
self.ui.Protection_switch_Button_4.setText(self.trans("已關閉")) self.ui.Protection_switch_Button_4.setText(self.trans("已關閉"))
self.ui.Protection_switch_Button_4.setStyleSheet(""" self.ui.Protection_switch_Button_4.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230, 230, 230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220, 220, 220);}""")
else: else:
self.reg_protect = True self.reg_protect = True
self.ui.Protection_switch_Button_4.setText(self.trans("已開啟")) self.ui.Protection_switch_Button_4.setText(self.trans("已開啟"))
self.ui.Protection_switch_Button_4.setStyleSheet(""" self.ui.Protection_switch_Button_4.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
Thread(target=self.protect_reg_thread, daemon=True).start() Thread(target=self.protect_reg_thread, daemon=True).start()
def protect_net_init(self): def protect_net_init(self):
@@ -1157,14 +1238,14 @@ class MainWindow_Controller(QMainWindow):
self.net_protect = False self.net_protect = False
self.ui.Protection_switch_Button_5.setText(self.trans("已關閉")) self.ui.Protection_switch_Button_5.setText(self.trans("已關閉"))
self.ui.Protection_switch_Button_5.setStyleSheet(""" self.ui.Protection_switch_Button_5.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;} QPushButton{border:none;background-color:rgb(230, 230, 230);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,20,20,50);}""") QPushButton:hover{background-color:rgb(220, 220, 220);}""")
else: else:
self.net_protect = True self.net_protect = True
self.ui.Protection_switch_Button_5.setText(self.trans("已開啟")) self.ui.Protection_switch_Button_5.setText(self.trans("已開啟"))
self.ui.Protection_switch_Button_5.setStyleSheet(""" self.ui.Protection_switch_Button_5.setStyleSheet("""
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;} QPushButton{border:none;background-color:rgb(200, 250, 200);border-radius: 10px;}
QPushButton:hover{background-color:rgba(20,200,20,120);}""") QPushButton:hover{background-color:rgb(210, 250, 210);}""")
Thread(target=self.protect_net_thread, daemon=True).start() Thread(target=self.protect_net_thread, daemon=True).start()
def protect_proc_thread(self): def protect_proc_thread(self):
@@ -1173,51 +1254,47 @@ class MainWindow_Controller(QMainWindow):
if p.pid not in existing_processes: if p.pid not in existing_processes:
existing_processes.add(p.pid) existing_processes.add(p.pid)
while self.proc_protect: while self.proc_protect:
time.sleep(0.05) time.sleep(0.01)
for p in psutil.process_iter(): for p in psutil.process_iter():
try: try:
name, file, cmd = p.name(), p.exe().replace("\\", "/"), p.cmdline() if p.pid not in existing_processes:
if p.pid not in existing_processes and file not in self.whitelist:
existing_processes.add(p.pid) existing_processes.add(p.pid)
psutil.Process(p.pid).suspend() name, file, cmd = p.name(), p.exe().replace("\\", "/"), p.cmdline()
if ":/Windows" in file and "powershell" in name: if file != self.pyas and file not in self.whitelist:
file = str(cmd[-1].split("'")[-2]).replace("\\", "/") psutil.Process(p.pid).suspend()
elif ":/Windows" in file and "cmd.exe" in name: if "powershell" in name and self.api_scan(cmd[-1].split("'")[-2]):
file = str(" ".join(cmd[2:])).replace("\\", "/") p.kill()
elif ":/Windows" in file and "msiexec.exe" in name: file = cmd[-1].split("'")[-2].replace("\\", "/")
file = str(cmd[-1]).replace("\\", "/") self.send_notify(self.trans("惡意腳本攔截: ")+file)
elif ":/Windows" in file and "cscript.exe" in name: elif "cmd.exe" in name and self.api_scan(" ".join(cmd[2:])):
file = str(cmd[-1]).replace("\\", "/") p.kill()
elif ":/Windows" in file and "wscript.exe" in name: file = " ".join(cmd[2:]).replace("\\", "/")
file = str(cmd[-1]).replace("\\", "/") self.send_notify(self.trans("惡意腳本攔截: ")+file)
if ":/Windows" in file or ":/Program" in file: elif ":/Windows" in file and self.api_scan(cmd[-1]):
if self.sign_scan(file) and self.api_scan(file): p.kill()
file = cmd[-1].replace("\\", "/")
self.send_notify(self.trans("惡意軟體攔截: ")+file)
elif ":/Windows" not in file and self.proc_scan(p.pid):
p.kill() p.kill()
self.send_notify(self.trans("惡意軟體攔截: ")+file) self.send_notify(self.trans("惡意軟體攔截: ")+file)
elif self.api_scan(file) or self.pe_scan(file): elif ":/Windows" not in file and self.sign_scan(file):
p.kill() self.proc = p
self.send_notify(self.trans("惡意軟體攔截: ")+file) psutil.Process(p.pid).resume()
elif file != self.pyas and self.sign_scan(file): gc.collect()
self.proc = p
psutil.Process(p.pid).resume()
gc.collect()
except: except:
pass pass
def protect_file_thread(self): def protect_file_thread(self):
hDir = win32file.CreateFile("C:/Users/",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) hDir = win32file.CreateFile("C:/Users/",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)
self.ransom_block = False
while self.file_protect: while self.file_protect:
for action, file in win32file.ReadDirectoryChangesW(hDir,1048576,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): 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: try:
full_path = str(f"C:/Users/{file}").replace("\\", "/") fpath = str(f"C:/Users/{file}").replace("\\", "/")
file_type = str(f".{full_path.split('.')[-1]}").lower() ftype = str(f".{fpath.split('.')[-1]}").lower()
if action == 2 and "/AppData/" not in full_path and file_type in alist: if action == 3 and ftype in slist and os.path.getsize(fpath) <= 20971520:
if self.ransom_block: if self.api_scan(fpath) or self.pe_scan(fpath):
self.proc.kill() os.remove(fpath)
self.ransom_block = False self.send_notify(self.trans("惡意軟體刪除: ")+fpath)
self.send_notify(self.trans("勒索軟體攔截: ")+self.proc.exe().replace("\\", "/"))
self.ransom_block = True
except: except:
pass pass
@@ -1228,12 +1305,14 @@ class MainWindow_Controller(QMainWindow):
with open(r"\\.\PhysicalDrive0", "r+b") as f: with open(r"\\.\PhysicalDrive0", "r+b") as f:
if self.mbr_value[510:512] != b'\x55\xAA': if self.mbr_value[510:512] != b'\x55\xAA':
self.proc.kill() self.proc.kill()
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.exe().replace("\\", "/")) file = self.proc.exe().replace("\\", "/")
self.send_notify(self.trans("惡意行為攔截: ")+file)
elif f.read(512) != self.mbr_value: elif f.read(512) != self.mbr_value:
f.seek(0) f.seek(0)
f.write(self.mbr_value) f.write(self.mbr_value)
self.proc.kill() self.proc.kill()
self.send_notify(self.trans("惡意行為攔截: ")+self.proc.exe().replace("\\", "/")) file = self.proc.exe().replace("\\", "/")
self.send_notify(self.trans("惡意行為攔截: ")+file)
except: except:
pass pass
@@ -1252,10 +1331,13 @@ class MainWindow_Controller(QMainWindow):
while self.net_protect: while self.net_protect:
try: try:
time.sleep(0.5) time.sleep(0.5)
local = socket.gethostbyname(socket.gethostname())
for conn in self.proc.connections(): for conn in self.proc.connections():
if socket.gethostbyname(socket.gethostname()) == conn.laddr.ip: file = self.proc.exe().replace("\\", "/")
self.proc.kill() if ":/Windows" not in file and ":/Program" not in file:
self.send_notify(self.trans("網路通訊攔截: ")+self.proc.exe().replace("\\", "/")) if conn.laddr.ip == local:
self.proc.kill()
self.send_notify(self.trans("網路通訊攔截: ")+file)
except: except:
pass pass
+31
View File
@@ -0,0 +1,31 @@
import json, hashlib
class ListCompressor:
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 train_model(self, label, data):
if label not in self.model:
self.model[label] = []
for lst in data:
self.model[label].append(hashlib.md5(''.join(map(str, lst)).encode()).hexdigest()[:8])
def predict(self, new_list):
for label, items in self.model.items():
if label != 'word' and hashlib.md5(''.join(map(str, new_list)).encode()).hexdigest()[:8] in items:
return True
return False
def get_label(self):
return list(self.model.keys())[0]
+1 -2
View File
@@ -1,6 +1,5 @@
slist = [".exe",".dll",".com",".msi",".scr", slist = [".exe",".dll",".com",".msi",".scr",
".bat",".cmd",".ps1",".vbs",".jar", ".js",".bat",".cmd",".ps1",".vbs"]
".js",".elf",".doc",".xls",".xlsx"]
alist = [".ppt",".pptx",".wps",".txt",".rtf", alist = [".ppt",".pptx",".wps",".txt",".rtf",
".pdf",".xls",".xlsx",".doc",".docx", ".pdf",".xls",".xlsx",".doc",".docx",
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
{"2024-01-30 18:57:47": ["f8eaca69", "f0f5732f", "1b02d2da", "9b83055e", "fa39258e", "ebad499a", "7e7275ce", "f9f96fde", "dc2bd521", "2e3086b1", "4cbbe367", "62a39640", "628691a4", "7feb71ad", "c8756155", "724103b9", "21bb3aef", "8b136daa", "d2668208", "5e47ce27", "55e78944", "ec90753b", "cb9e21ee", "55634643", "d1ad686f", "319e2db4", "632f4531", "ecf51f02", "57b1794e", "cf04dfb7", "68b4c29f", "776c99fe", "bafe8409", "07483ddf", "e4753bc3", "86f8c21f", "c069d7d5", "0513868a", "55433105", "a51343e5", "5dd1e0c9", "8b6a35fc", "b2c4204c", "736a55d1", "0e2d378e", "221b87e3", "62a348cf", "1f53d69f", "ac0b27eb", "bee130c7", "00b0d86d", "f1dc8325", "d1e142b8", "87074aa5", "2bd013a0", "d2528b9e", "d90657b4", "b16889df", "c21af82e", "e81da5d7", "0ae06db8", "a072f779", "6c48e028", "acf0fbaa", "846a7177", "97be1e02", "94c2d42c", "e1240e10", "ee0a9c21", "0facf2a6", "2beae172", "39ae5ad7", "6a0c7324", "f074f5b4", "e952305f", "c969fd9d", "9af5a01e", "14688765", "596a470f", "94691d9a", "f30de2e7", "191f1163", "bdcb5a86", "18b3bf16", "30739d24", "e91746a4", "36888e71", "e26dfd80", "d8261ac3", "1a5cb45a", "23191f29", "20cb7eec", "94497ba5", "ce095672", "acf3bb61", "94bff605", "aea0475c", "b6a46047", "f1ae2ce5", "f25e7c70", "4c626e62", "d4da4030", "35eeb9fc", "010bd7e6", "088b5c3d", "4e552f39", "234f232b", "be39b5c7", "4d57d439", "3efc231b", "e3e0254f", "cf88078b", "957e7561", "0157ab1a", "6d75bcaa", "fdf069cb", "a1895d33", "aebc3614", "43d61eab", "967929f9", "11b631fb", "fbe63639", "0593e9a2", "c838e850", "a33c2ab4", "fa8ceeae", "71fa160a", "05178537", "f1bde64f", "30547b8f", "7fe931dd", "5dea0cda", "af0d6ebb", "f242ebc1", "ef2ac9f8", "09082309", "85a4b8a4", "65284f49", "cf215013", "6be2182a", "39d583d4", "e65f4785", "3cbb09cf", "73b78451", "61099a43", "1fe35f2e", "690b5995", "19d85999", "fcaa2063", "522ec9f6", "dfea1c9a", "1e54fc8c", "3d19c3b6", "13102764", "f0949aca", "7782a5e0", "a141f55e", "16eb1d17", "f14e284b", "3c36ae8e", "44349994", "0077b966", "8d8e66bb", "26dbaaa7", "69134125", "6be14646", "d4afaff6", "10c1954f", "07687215", "18b6668e", "295e94f1", "4beef072", "15bbc35a", "833b1998", "b81c15eb", "d0c36eb5", "30ff5635", "23edb694", "b5f2dd11", "9542f014", "2ba7934b", "8ac3e370", "be5348af", "2f7ca0b7", "c11f9756", "72646e9e", "ebaa875f", "d8efdadd", "cea3f4a5", "8f74e253", "c8ee6a44", "29a60790", "b6ed92dc", "022ab8d8", "f45011dd", "5606be13", "9fe86003", "c90d1128", "7bf6f523", "5dc456d1", "d41f3fb7", "839f31ff", "72e25499", "d0008616", "d6d13cfd", "018b8805", "3bd56a87", "7bf71a77", "302c6754", "639a51eb", "3025c6b7", "b233ddd9", "9297a1cb", "c10f2cf6", "a0a8dfd1", "6399f135", "8d394492", "d786ef37", "f516133b", "b71b7a0d", "a51484ee", "b6ec2abf", "184ccf63", "6cc57095", "897e3a5f", "5064bd10", "0abbe6f4", "57d2bb57", "3e3a904e", "cb25c53f", "35ebf1ea", "ec883603", "6c3d2e9a", "cd48542a", "e0b6a475", "1ed5d4af", "5cfe1ec3", "2f3f077c", "817d5bcb", "e7e4805a", "a8ac4be7", "3ae3b681", "781b603d", "99e3aca7", "d3cb5549", "e4e549d2", "eda8c8fd", "5a34fc94", "35385307", "b47d2a97", "8c0d1b23", "5529b024", "068c506c", "41858343", "861a909a", "96471e95", "a2b9d78f", "97255487", "506d0366", "7c5e3180", "e1aee43f", "99ad8db1", "1f4f4ab1", "cc431464", "cffd3e92", "ece85b50", "de6d3489", "9425f525", "c9dfa23f", "a97155f3", "002e23f2", "d440e8ed", "08798831", "96474097", "34962f83", "979532a1", "31f03b48", "5b692416", "c56d5e02", "5c2a1c1e", "6d642743", "fb15345a", "1bf7af93", "bb94e602", "4492b29b", "355885b6", "1e62932b", "f1bede8b", "6104f9a3", "86a6529d", "971f7f79", "8ace816a", "86a8a864", "4f85c567", "333b7df1", "cebe043f", "aa818d5e", "5458e526", "5354fc59", "14238173", "4794d596", "bd2797bd", "7e5013a9", "4211942c", "8c919cb4", "39bae570", "c8476924", "59d0bcc8", "29a47420", "62145122", "0b95337c", "55cd1300", "6fec3fac", "7abd0227", "ec842bbb", "f60b523e", "8ec73106", "e29225d6", "54224ade", "d722b746", "9342c1e3", "ce494c91", "4c1e1a2e", "20879280", "1c623712", "0ab6b9b5", "3cbe70c8", "090a5016", "1176c81f", "c4ca6358", "0ac1e588", "327018cc", "1aa3b54f", "9d8ed7e1", "98ecee4c", "1250f47d", "b48f6dcc", "2fd8a8a8", "df5292b9", "43ca2196", "eabebfd0", "5ef75e18", "6043426b", "5668ab16", "5694217b", "8da2c149", "8e108bc2", "4c44a17c", "ccdbc95c", "d578162e", "a828b92d", "226217c3", "5008e44f", "6ff4ce20", "10f2a2b1", "ee6b50e6", "1bc9bab0", "a69a2aba", "9dbfcd08", "539bc501", "640f2927", "e7e38d5e", "43adb03a", "7033ad33", "a98e1d1d", "19c928b8", "20fcecfd", "2038f57b", "1938493f", "47a32506", "6aa98b23", "051020bf", "4f5a3b25", "34d7276a", "79f68a23", "5b28a176", "15826bb9", "6a2eaaab", "23269a41", "79d85fa6", "51fe1954", "8f737801", "44dde6a5", "f8b69084", "136c1369", "086c7679", "0016c379", "2fe5822d", "1b146d77", "ff778b87", "6357bd68", "95840477", "c605b02a", "d9e4a2da", "1488771c", "1d067fed", "6c1c79f2", "4ce7e503", "c0d7b8fb", "ef0a1059", "f8984bae", "c9f98890", "f4eb7828", "5e570d46", "9ea12215", "de09d16e", "a470767a", "8c43a7fe", "65f145c0", "e425c385", "51453f5f", "fbca4af8", "5f213b95", "a6e2669f", "0d8e3Line truncated
+221 -237
View File
@@ -29,6 +29,7 @@ class Ui_MainWindow(object):
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget) self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 851, 541)) self.widget.setGeometry(QtCore.QRect(0, 0, 851, 541))
self.widget.setStyleSheet("")
self.widget.setObjectName("widget") self.widget.setObjectName("widget")
self.Protection_widget = QtWidgets.QWidget(self.widget) self.Protection_widget = QtWidgets.QWidget(self.widget)
self.Protection_widget.setGeometry(QtCore.QRect(170, 50, 671, 481)) self.Protection_widget.setGeometry(QtCore.QRect(170, 50, 671, 481))
@@ -37,7 +38,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Protection_widget.setFont(font) 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.Protection_widget.setObjectName("Protection_widget")
self.Real_time_Protection_widget = QtWidgets.QWidget(self.Protection_widget) self.Real_time_Protection_widget = QtWidgets.QWidget(self.Protection_widget)
self.Real_time_Protection_widget.setGeometry(QtCore.QRect(40, 10, 591, 91)) 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" self.Protection_switch_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button.setCheckable(False) self.Protection_switch_Button.setCheckable(False)
self.Protection_switch_Button.setObjectName("Protection_switch_Button") self.Protection_switch_Button.setObjectName("Protection_switch_Button")
@@ -145,13 +147,14 @@ class Ui_MainWindow(object):
self.Protection_switch_Button_2.setStyleSheet("QPushButton\n" self.Protection_switch_Button_2.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_2.setCheckable(False) self.Protection_switch_Button_2.setCheckable(False)
self.Protection_switch_Button_2.setObjectName("Protection_switch_Button_2") 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" self.Protection_switch_Button_3.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_3.setCheckable(False) self.Protection_switch_Button_3.setCheckable(False)
self.Protection_switch_Button_3.setObjectName("Protection_switch_Button_3") 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" self.Protection_switch_Button_4.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_4.setCheckable(False) self.Protection_switch_Button_4.setCheckable(False)
self.Protection_switch_Button_4.setObjectName("Protection_switch_Button_4") 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" self.Protection_switch_Button_5.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Protection_switch_Button_5.setCheckable(False) self.Protection_switch_Button_5.setCheckable(False)
self.Protection_switch_Button_5.setObjectName("Protection_switch_Button_5") self.Protection_switch_Button_5.setObjectName("Protection_switch_Button_5")
@@ -330,14 +336,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Navigation_Bar.setFont(font) self.Navigation_Bar.setFont(font)
self.Navigation_Bar.setStyleSheet("QWidget#Navigation_Bar\n" self.Navigation_Bar.setStyleSheet("background-color: rgb(230, 230, 230);")
"{\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.setObjectName("Navigation_Bar") self.Navigation_Bar.setObjectName("Navigation_Bar")
self.verticalLayoutWidget = QtWidgets.QWidget(self.Navigation_Bar) self.verticalLayoutWidget = QtWidgets.QWidget(self.Navigation_Bar)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 161, 481)) self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 161, 481))
@@ -365,8 +364,8 @@ class Ui_MainWindow(object):
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n" " border-top-left-radius:10px;\n"
" border-bottom-left-radius:15px;\n" " border-bottom-left-radius:10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
@@ -376,7 +375,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\n" "{\n"
" background-color:rgba(255, 255, 255,110);\n" " background-color:rgba(255, 255, 255,110);\n"
"}") "}\n"
"")
icon1 = QtGui.QIcon() icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(":/icon/State.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon1.addPixmap(QtGui.QPixmap(":/icon/State.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.State_Button.setIcon(icon1) self.State_Button.setIcon(icon1)
@@ -403,8 +403,8 @@ class Ui_MainWindow(object):
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n" " border-top-left-radius:10px;\n"
" border-bottom-left-radius:15px;\n" " border-bottom-left-radius:10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
@@ -414,7 +414,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\n" "{\n"
" background-color:rgba(255, 255, 255,110);\n" " background-color:rgba(255, 255, 255,110);\n"
"}") "}\n"
"")
icon2 = QtGui.QIcon() icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(":/icon/Scan.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon2.addPixmap(QtGui.QPixmap(":/icon/Scan.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Virus_Scan_Button.setIcon(icon2) self.Virus_Scan_Button.setIcon(icon2)
@@ -444,8 +445,8 @@ class Ui_MainWindow(object):
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n" " border-top-left-radius:10px;\n"
" border-bottom-left-radius:15px;\n" " border-bottom-left-radius:10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
@@ -455,7 +456,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\n" "{\n"
" background-color:rgba(255, 255, 255,110);\n" " background-color:rgba(255, 255, 255,110);\n"
"}") "}\n"
"")
icon3 = QtGui.QIcon() icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(":/icon/Tool.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon3.addPixmap(QtGui.QPixmap(":/icon/Tool.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Tools_Button.setIcon(icon3) self.Tools_Button.setIcon(icon3)
@@ -482,8 +484,8 @@ class Ui_MainWindow(object):
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgba(0,0,0,0);\n"
" border-top-left-radius:15px;\n" " border-top-left-radius:10px;\n"
" border-bottom-left-radius:15px;\n" " border-bottom-left-radius:10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
@@ -493,7 +495,8 @@ class Ui_MainWindow(object):
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\n" "{\n"
" background-color:rgba(255, 255, 255,110);\n" " background-color:rgba(255, 255, 255,110);\n"
"}") "}\n"
"")
icon4 = QtGui.QIcon() icon4 = QtGui.QIcon()
icon4.addPixmap(QtGui.QPixmap(":/icon/Protect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon4.addPixmap(QtGui.QPixmap(":/icon/Protect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.Protection_Button.setIcon(icon4) self.Protection_Button.setIcon(icon4)
@@ -526,7 +529,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Virus_Scan_widget.setFont(font) 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_widget.setObjectName("Virus_Scan_widget")
self.Virus_Scan_title = QtWidgets.QLabel(self.Virus_Scan_widget) self.Virus_Scan_title = QtWidgets.QLabel(self.Virus_Scan_widget)
self.Virus_Scan_title.setGeometry(QtCore.QRect(45, 30, 281, 41)) 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.setWordWrap(True)
self.Virus_Scan_text.setObjectName("Virus_Scan_text") self.Virus_Scan_text.setObjectName("Virus_Scan_text")
self.Virus_Scan_choose_Button = QtWidgets.QPushButton(self.Virus_Scan_widget) 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 = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
@@ -565,16 +568,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_choose_Button.setTabletTracking(False) self.Virus_Scan_choose_Button.setTabletTracking(False)
self.Virus_Scan_choose_Button.setFocusPolicy(QtCore.Qt.StrongFocus) self.Virus_Scan_choose_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_choose_Button.setLayoutDirection(QtCore.Qt.LeftToRight) self.Virus_Scan_choose_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_choose_Button.setStyleSheet("QPushButton\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"
"{\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.setIconSize(QtCore.QSize(10, 10)) self.Virus_Scan_choose_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_choose_Button.setCheckable(False) self.Virus_Scan_choose_Button.setCheckable(False)
self.Virus_Scan_choose_Button.setAutoRepeat(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.setFlat(False)
self.Virus_Scan_choose_Button.setObjectName("Virus_Scan_choose_Button") 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 = 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 = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.Virus_Scan_choose_widget.sizePolicy().hasHeightForWidth()) sizePolicy.setHeightForWidth(self.Virus_Scan_choose_widget.sizePolicy().hasHeightForWidth())
self.Virus_Scan_choose_widget.setSizePolicy(sizePolicy) 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.Virus_Scan_choose_widget.setObjectName("Virus_Scan_choose_widget")
self.verticalLayoutWidget_3 = QtWidgets.QWidget(self.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.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
self.Virus_Scan_choose_verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3) self.Virus_Scan_choose_verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
self.Virus_Scan_choose_verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint) self.Virus_Scan_choose_verticalLayout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
@@ -616,17 +614,18 @@ class Ui_MainWindow(object):
self.File_Scan_Button.setStyleSheet("QPushButton\n" self.File_Scan_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n" " border-radius: 5px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(50, 50, 50,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.File_Scan_Button.setCheckable(False) self.File_Scan_Button.setCheckable(False)
self.File_Scan_Button.setObjectName("File_Scan_Button") self.File_Scan_Button.setObjectName("File_Scan_Button")
@@ -646,17 +645,18 @@ class Ui_MainWindow(object):
self.Path_Scan_Button.setStyleSheet("QPushButton\n" self.Path_Scan_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n" " border-radius: 5px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(50, 50, 50,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Path_Scan_Button.setCheckable(False) self.Path_Scan_Button.setCheckable(False)
self.Path_Scan_Button.setObjectName("Path_Scan_Button") self.Path_Scan_Button.setObjectName("Path_Scan_Button")
@@ -676,23 +676,24 @@ class Ui_MainWindow(object):
self.Disk_Scan_Button.setStyleSheet("QPushButton\n" self.Disk_Scan_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(0,0,0,0);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 5px;\n" " border-radius: 5px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(50, 50, 50,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Disk_Scan_Button.setCheckable(False) self.Disk_Scan_Button.setCheckable(False)
self.Disk_Scan_Button.setObjectName("Disk_Scan_Button") self.Disk_Scan_Button.setObjectName("Disk_Scan_Button")
self.Virus_Scan_choose_verticalLayout.addWidget(self.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 = 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 = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
@@ -707,16 +708,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_Solve_Button.setTabletTracking(False) self.Virus_Scan_Solve_Button.setTabletTracking(False)
self.Virus_Scan_Solve_Button.setFocusPolicy(QtCore.Qt.StrongFocus) self.Virus_Scan_Solve_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_Solve_Button.setLayoutDirection(QtCore.Qt.LeftToRight) self.Virus_Scan_Solve_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_Solve_Button.setStyleSheet("QPushButton\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"
"{\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.setIconSize(QtCore.QSize(10, 10)) self.Virus_Scan_Solve_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_Solve_Button.setCheckable(False) self.Virus_Scan_Solve_Button.setCheckable(False)
self.Virus_Scan_Solve_Button.setAutoRepeat(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.setFlat(False)
self.Virus_Scan_Solve_Button.setObjectName("Virus_Scan_Solve_Button") 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 = 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 = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
@@ -742,16 +735,8 @@ class Ui_MainWindow(object):
self.Virus_Scan_Break_Button.setTabletTracking(False) self.Virus_Scan_Break_Button.setTabletTracking(False)
self.Virus_Scan_Break_Button.setFocusPolicy(QtCore.Qt.StrongFocus) self.Virus_Scan_Break_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Virus_Scan_Break_Button.setLayoutDirection(QtCore.Qt.LeftToRight) self.Virus_Scan_Break_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
self.Virus_Scan_Break_Button.setStyleSheet("QPushButton\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"
"{\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.setIconSize(QtCore.QSize(10, 10)) self.Virus_Scan_Break_Button.setIconSize(QtCore.QSize(10, 10))
self.Virus_Scan_Break_Button.setCheckable(False) self.Virus_Scan_Break_Button.setCheckable(False)
self.Virus_Scan_Break_Button.setAutoRepeat(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.setUniformItemSizes(False)
self.Virus_Scan_output.setSelectionRectVisible(False) self.Virus_Scan_output.setSelectionRectVisible(False)
self.Virus_Scan_output.setObjectName("Virus_Scan_output") 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 = QtWidgets.QWidget(self.widget)
self.State_widget.setGeometry(QtCore.QRect(170, 49, 671, 481)) self.State_widget.setGeometry(QtCore.QRect(170, 49, 671, 481))
font = QtGui.QFont() font = QtGui.QFont()
@@ -807,7 +799,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.State_widget.setFont(font) 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_widget.setObjectName("State_widget")
self.State_title = QtWidgets.QLabel(self.State_widget) self.State_title = QtWidgets.QLabel(self.State_widget)
self.State_title.setGeometry(QtCore.QRect(50, 210, 571, 41)) 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.setAlignment(QtCore.Qt.AlignCenter)
self.State_title.setObjectName("State_title") self.State_title.setObjectName("State_title")
self.State_icon = QtWidgets.QLabel(self.State_widget) 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 = QtGui.QFont()
font.setFamily("Microsoft YaHei") font.setFamily("Microsoft YaHei")
font.setPointSize(1) font.setPointSize(1)
font.setStrikeOut(False)
font.setKerning(True) font.setKerning(True)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.State_icon.setFont(font) self.State_icon.setFont(font)
self.State_icon.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) 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.setFrameShape(QtWidgets.QFrame.NoFrame)
self.State_icon.setLineWidth(1) self.State_icon.setLineWidth(1)
self.State_icon.setText("") self.State_icon.setText("")
@@ -853,6 +855,8 @@ class Ui_MainWindow(object):
self.State_output.setFont(font) self.State_output.setFont(font)
self.State_output.setAutoFillBackground(False) self.State_output.setAutoFillBackground(False)
self.State_output.setStyleSheet("") 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.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored)
self.State_output.setUndoRedoEnabled(True) self.State_output.setUndoRedoEnabled(True)
self.State_output.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse) self.State_output.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
@@ -876,7 +880,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.About_widget.setFont(font) 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_widget.setObjectName("About_widget")
self.About_Back = QtWidgets.QPushButton(self.About_widget) self.About_Back = QtWidgets.QPushButton(self.About_widget)
self.About_Back.setGeometry(QtCore.QRect(20, 10, 101, 41)) self.About_Back.setGeometry(QtCore.QRect(20, 10, 101, 41))
@@ -891,17 +895,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.About_Back.setFont(font) self.About_Back.setFont(font)
self.About_Back.setFocusPolicy(QtCore.Qt.StrongFocus) self.About_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.About_Back.setStyleSheet("QPushButton\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);}")
"{\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"
"")
icon5 = QtGui.QIcon() icon5 = QtGui.QIcon()
icon5.addPixmap(QtGui.QPixmap(":/icon/Back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) icon5.addPixmap(QtGui.QPixmap(":/icon/Back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.About_Back.setIcon(icon5) self.About_Back.setIcon(icon5)
@@ -1026,7 +1020,13 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
self.License_terms.setFont(font) self.License_terms.setFont(font)
self.License_terms.setStyleSheet("") 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.setReadOnly(True)
self.License_terms.setOverwriteMode(False)
self.License_terms.setObjectName("License_terms") self.License_terms.setObjectName("License_terms")
self.License_terms_title = QtWidgets.QLabel(self.About_widget) self.License_terms_title = QtWidgets.QLabel(self.About_widget)
self.License_terms_title.setGeometry(QtCore.QRect(45, 260, 581, 31)) self.License_terms_title.setGeometry(QtCore.QRect(45, 260, 581, 31))
@@ -1046,10 +1046,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Window_widget.setFont(font) self.Window_widget.setFont(font)
self.Window_widget.setStyleSheet("QWidget#Window_widget\n" self.Window_widget.setStyleSheet("background-color: rgb(240, 240, 240);")
"{\n"
"background-color:rgb(240, 240, 240);\n"
"}")
self.Window_widget.setObjectName("Window_widget") self.Window_widget.setObjectName("Window_widget")
self.Close_Button = QtWidgets.QPushButton(self.Window_widget) self.Close_Button = QtWidgets.QPushButton(self.Window_widget)
self.Close_Button.setGeometry(QtCore.QRect(790, 5, 31, 31)) self.Close_Button.setGeometry(QtCore.QRect(790, 5, 31, 31))
@@ -1172,7 +1169,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Process_widget.setFont(font) 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_widget.setObjectName("Process_widget")
self.Process_Tools_Back = QtWidgets.QPushButton(self.Process_widget) self.Process_Tools_Back = QtWidgets.QPushButton(self.Process_widget)
self.Process_Tools_Back.setGeometry(QtCore.QRect(20, 10, 101, 41)) self.Process_Tools_Back.setGeometry(QtCore.QRect(20, 10, 101, 41))
@@ -1187,17 +1184,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Process_Tools_Back.setFont(font) self.Process_Tools_Back.setFont(font)
self.Process_Tools_Back.setFocusPolicy(QtCore.Qt.StrongFocus) self.Process_Tools_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Process_Tools_Back.setStyleSheet("QPushButton\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);}")
"{\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.setIcon(icon5) self.Process_Tools_Back.setIcon(icon5)
self.Process_Tools_Back.setIconSize(QtCore.QSize(20, 20)) self.Process_Tools_Back.setIconSize(QtCore.QSize(20, 20))
self.Process_Tools_Back.setCheckable(False) self.Process_Tools_Back.setCheckable(False)
@@ -1265,7 +1252,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Tools_widget.setFont(font) 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.Tools_widget.setObjectName("Tools_widget")
self.More_Tools_Back_Button = QtWidgets.QPushButton(self.Tools_widget) self.More_Tools_Back_Button = QtWidgets.QPushButton(self.Tools_widget)
self.More_Tools_Back_Button.setGeometry(QtCore.QRect(20, 10, 101, 41)) 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) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.More_Tools_Back_Button.setFont(font) self.More_Tools_Back_Button.setFont(font)
self.More_Tools_Back_Button.setFocusPolicy(QtCore.Qt.StrongFocus) self.More_Tools_Back_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
self.More_Tools_Back_Button.setStyleSheet("QPushButton\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);}")
"{\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.setIconSize(QtCore.QSize(20, 20)) self.More_Tools_Back_Button.setIconSize(QtCore.QSize(20, 20))
self.More_Tools_Back_Button.setCheckable(False) self.More_Tools_Back_Button.setCheckable(False)
self.More_Tools_Back_Button.setObjectName("More_Tools_Back_Button") 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" self.System_Process_Manage_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(20,20,20,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.System_Process_Manage_Button.setCheckable(False) self.System_Process_Manage_Button.setCheckable(False)
self.System_Process_Manage_Button.setObjectName("System_Process_Manage_Button") 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" self.Clean_System_Files_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(20,20,20,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Clean_System_Files_Button.setCheckable(False) self.Clean_System_Files_Button.setCheckable(False)
self.Clean_System_Files_Button.setObjectName("Clean_System_Files_Button") 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" self.Repair_System_Files_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(20,20,20,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Repair_System_Files_Button.setCheckable(False) self.Repair_System_Files_Button.setCheckable(False)
self.Repair_System_Files_Button.setObjectName("Repair_System_Files_Button") 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" self.Repair_System_Network_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(20,20,20,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Repair_System_Network_Button.setCheckable(False) self.Repair_System_Network_Button.setCheckable(False)
self.Repair_System_Network_Button.setObjectName("Repair_System_Network_Button") 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" self.Window_Block_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\n" "{\n"
" background-color:rgba(20,20,20,50);\n" " background-color:rgb(220,220,220);\n"
"}\n" "}\n"
"QPushButton:pressed\n" "QPushButton:pressed\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Window_Block_Button.setCheckable(False) self.Window_Block_Button.setCheckable(False)
self.Window_Block_Button.setObjectName("Window_Block_Button") self.Window_Block_Button.setObjectName("Window_Block_Button")
self.System_verticalLayout.addWidget(self.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 = QtWidgets.QWidget(self.widget)
self.Setting_widget.setGeometry(QtCore.QRect(10, 50, 831, 481)) self.Setting_widget.setGeometry(QtCore.QRect(10, 50, 831, 481))
font = QtGui.QFont() font = QtGui.QFont()
@@ -1458,7 +1440,7 @@ class Ui_MainWindow(object):
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Setting_widget.setFont(font) 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.Setting_widget.setObjectName("Setting_widget")
self.Show_high_sensitivity = QtWidgets.QWidget(self.Setting_widget) self.Show_high_sensitivity = QtWidgets.QWidget(self.Setting_widget)
self.Show_high_sensitivity.setGeometry(QtCore.QRect(30, 50, 781, 81)) 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" self.high_sensitivity_switch_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.high_sensitivity_switch_Button.setCheckable(False) self.high_sensitivity_switch_Button.setCheckable(False)
self.high_sensitivity_switch_Button.setObjectName("high_sensitivity_switch_Button") 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 = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setContentsMargins(0, 0, 0, 0)
self.gridLayout.setObjectName("gridLayout") 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) self.Language_Traditional_Chinese = QtWidgets.QRadioButton(self.gridLayoutWidget)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("Microsoft YaHei") font.setFamily("Microsoft YaHei")
@@ -1575,14 +1566,6 @@ class Ui_MainWindow(object):
self.Language_Simplified_Chinese.setFont(font) self.Language_Simplified_Chinese.setFont(font)
self.Language_Simplified_Chinese.setObjectName("Language_Simplified_Chinese") self.Language_Simplified_Chinese.setObjectName("Language_Simplified_Chinese")
self.gridLayout.addWidget(self.Language_Simplified_Chinese, 1, 1, 1, 1) 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_illustrate.raise_()
self.Language_Choose_widget.raise_() self.Language_Choose_widget.raise_()
self.Language_title.raise_() self.Language_title.raise_()
@@ -1631,13 +1614,14 @@ class Ui_MainWindow(object):
self.cloud_services_switch_Button.setStyleSheet("QPushButton\n" self.cloud_services_switch_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.cloud_services_switch_Button.setCheckable(False) self.cloud_services_switch_Button.setCheckable(False)
self.cloud_services_switch_Button.setObjectName("cloud_services_switch_Button") self.cloud_services_switch_Button.setObjectName("cloud_services_switch_Button")
@@ -1657,17 +1641,7 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Setting_Back.setFont(font) self.Setting_Back.setFont(font)
self.Setting_Back.setFocusPolicy(QtCore.Qt.StrongFocus) self.Setting_Back.setFocusPolicy(QtCore.Qt.StrongFocus)
self.Setting_Back.setStyleSheet("QPushButton\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);}")
"{\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.setIcon(icon5) self.Setting_Back.setIcon(icon5)
self.Setting_Back.setIconSize(QtCore.QSize(20, 20)) self.Setting_Back.setIconSize(QtCore.QSize(20, 20))
self.Setting_Back.setCheckable(False) self.Setting_Back.setCheckable(False)
@@ -1717,13 +1691,14 @@ class Ui_MainWindow(object):
self.Add_White_list_Button.setStyleSheet("QPushButton\n" self.Add_White_list_Button.setStyleSheet("QPushButton\n"
"{\n" "{\n"
" border:none;\n" " border:none;\n"
" background-color:rgba(20,20,20,30);\n" " background-color:rgb(230,230,230);\n"
" border-radius: 15px;\n" " border-radius: 10px;\n"
"}\n" "}\n"
"QPushButton:hover\n" "QPushButton:hover\n"
"{\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.setIconSize(QtCore.QSize(16, 16))
self.Add_White_list_Button.setCheckable(False) self.Add_White_list_Button.setCheckable(False)
self.Add_White_list_Button.setObjectName("Add_White_list_Button") 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 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
self.gridLayout_2.setObjectName("gridLayout_2") 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) self.Theme_Yellow = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("Microsoft YaHei") font.setFamily("Microsoft YaHei")
@@ -1793,13 +1752,37 @@ class Ui_MainWindow(object):
self.Theme_Yellow.setFont(font) self.Theme_Yellow.setFont(font)
self.Theme_Yellow.setObjectName("Theme_Yellow") self.Theme_Yellow.setObjectName("Theme_Yellow")
self.gridLayout_2.addWidget(self.Theme_Yellow, 1, 2, 1, 1) 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) self.Theme_Blue = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("Microsoft YaHei") font.setFamily("Microsoft YaHei")
font.setPointSize(11) font.setPointSize(11)
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Blue.setFont(font) self.Theme_Blue.setFont(font)
self.Theme_Blue.setObjectName("Theme_Blue") 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) self.Theme_Red = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("Microsoft YaHei") font.setFamily("Microsoft YaHei")
@@ -1807,27 +1790,23 @@ class Ui_MainWindow(object):
font.setStyleStrategy(QtGui.QFont.PreferAntialias) font.setStyleStrategy(QtGui.QFont.PreferAntialias)
self.Theme_Red.setFont(font) self.Theme_Red.setFont(font)
self.Theme_Red.setObjectName("Theme_Red") self.Theme_Red.setObjectName("Theme_Red")
self.gridLayout_2.addWidget(self.Theme_Red, 2, 1, 1, 1) self.gridLayout_2.addWidget(self.Theme_Red, 1, 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.Theme_illustrate.raise_() self.Theme_illustrate.raise_()
self.Language_Choose_widget_2.raise_() self.Language_Choose_widget_2.raise_()
self.Theme_title.raise_() self.Theme_title.raise_()
self.Protection_widget.raise_() self.widget_2 = QtWidgets.QWidget(self.widget)
self.Setting_widget.raise_() self.widget_2.setGeometry(QtCore.QRect(170, 50, 671, 481))
self.About_widget.raise_() self.widget_2.setStyleSheet("background-color: rgb(255, 255, 255);")
self.Tools_widget.raise_() self.widget_2.setObjectName("widget_2")
self.widget_2.raise_() self.widget_2.raise_()
self.Setting_widget.raise_()
self.Tools_widget.raise_()
self.Process_widget.raise_() self.Process_widget.raise_()
self.Virus_Scan_widget.raise_() self.About_widget.raise_()
self.Protection_widget.raise_()
self.Window_widget.raise_() self.Window_widget.raise_()
self.Navigation_Bar.raise_() self.Navigation_Bar.raise_()
self.Virus_Scan_widget.raise_()
self.State_widget.raise_() self.State_widget.raise_()
MainWindow.setCentralWidget(self.centralwidget) 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>")) "<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.State_log.setText(_translate("MainWindow", "日誌:"))
self.About_Back.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_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_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_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_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_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© 2020-2022 PYAS Security")) 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.License_terms_title.setText(_translate("MainWindow", "許可條款:"))
self.Window_title.setText(_translate("MainWindow", "PYAS V0.0.0")) self.Window_title.setText(_translate("MainWindow", "PYAS V0.0.0"))
self.Process_Tools_Back.setText(_translate("MainWindow", "返回")) 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_title.setText(_translate("MainWindow", "高靈敏度模式"))
self.high_sensitivity_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度")) self.high_sensitivity_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
self.high_sensitivity_switch_Button.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_illustrate.setText(_translate("MainWindow", "請選擇語言"))
self.Language_English.setText(_translate("MainWindow", "English"))
self.Language_Traditional_Chinese.setText(_translate("MainWindow", "繁體中文")) self.Language_Traditional_Chinese.setText(_translate("MainWindow", "繁體中文"))
self.Language_Simplified_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_title.setText(_translate("MainWindow", "高靈敏度模式")) self.cloud_services_illustrate.setText(_translate("MainWindow", "啟用此選項可以連接雲端掃描服務"))
self.cloud_services_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度"))
self.cloud_services_switch_Button.setText(_translate("MainWindow", "已關閉")) self.cloud_services_switch_Button.setText(_translate("MainWindow", "已關閉"))
self.Setting_Back.setText(_translate("MainWindow", "返回")) self.Setting_Back.setText(_translate("MainWindow", "返回"))
self.Add_White_list_title.setText(_translate("MainWindow", "高靈敏度模式")) self.Add_White_list_title.setText(_translate("MainWindow", "增加到白名單"))
self.Add_White_list_illustrate.setText(_translate("MainWindow", "啟用此選項可以提高引擎的靈敏度")) self.Add_White_list_illustrate.setText(_translate("MainWindow", "此選項可以選擇檔案並增加到白名單"))
self.Add_White_list_Button.setText(_translate("MainWindow", "已關閉")) self.Add_White_list_Button.setText(_translate("MainWindow", "已關閉"))
self.Theme_title.setText(_translate("MainWindow", "顯色主題")) self.Theme_title.setText(_translate("MainWindow", "顯色主題"))
self.Theme_illustrate.setText(_translate("MainWindow", "請選擇主題")) self.Theme_illustrate.setText(_translate("MainWindow", "請選擇主題"))
self.Theme_Black.setText(_translate("MainWindow", "黑色主題")) self.Theme_Yellow.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_Green.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__": if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
+54 -53
View File
@@ -1,53 +1,54 @@
translate_dict = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"已開啟","Off":"已關閉"}, translate_dict = {
"zh_CN": {"已開啟":"已开启","已關閉":"已关闭","On":"已开启","Off":"已关闭", "zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"已開啟","Off":"已關閉"},
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于", "zh_CN": {"已開啟":"已开启","已關閉":"已关闭","On":"已开启","Off":"已关闭",
"錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备", "軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络", "錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备",
"位元":"字节","彈窗":"弹窗","靈敏":"敏感","誤報":"误报","複製":"复制", "總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
"訊":"讯","項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保", "位元":"字节","彈窗":"弹窗","靈敏":"敏感","誤報":"误报","複製":"复制",
"鑰":"钥","當":"当","後":"后","護":"护","導":"导","區":"区","復":"复", "訊":"讯","項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保",
"攔":"拦","請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选", "鑰":"钥","當":"当","後":"后","護":"护","導":"导","區":"区","復":"复",
"啟":"启","監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动", "攔":"拦","請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选",
"狀":"状","誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语", "啟":"启","監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动",
"無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","訂":"订", "狀":"状","誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语",
"稱":"称","類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网", "無":"无","顯":"显","變":"变","戶":"户","碼":"码","雲":"云","介":"界",
"詢":"询","製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红", "稱":"称","類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网",
"綠":"绿","態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关", "詢":"询","製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红",
"強":"强","驅":"驱","為":"为","腳":"脚","增":"增","單":"单","開":"开", "綠":"绿","態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关",
"惡":"恶",}, "強":"强","驅":"驱","為":"为","腳":"脚","增":"增","單":"单","開":"开",
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ", "惡":"恶","據":"据","庫":"库","經":"经","敗":"败"},
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website", "en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
"惡意檔案":"Virus ","惡意軟體":"Malware ","勒索軟體":"Ransom ", "立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website",
"惡意腳本":"Script ","惡意行為":"Behavior ","可疑軟體":"Suspicious ", "惡意檔案":"Virus ","惡意軟體":"Malware ","勒索軟體":"Ransom ",
"許可條款":"License Terms","惡意":"Malicious","可疑":"Suspicious", "惡意腳本":"Script ","惡意行為":"Behavior ","可疑軟體":"Suspicious ",
"啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ", "許可條款":"License Terms","惡意":"Malicious","可疑":"Suspicious",
"正在掃描":"Scanning ","正在刪除":"Deleting ","最小化到":"Minimize To ", "啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ",
"確定要":"Sure Want To ","靈敏度":"Sensitivity ","更新":"Update", "正在掃描":"Scanning ","正在刪除":"Deleting ","最小化到":"Minimize To ",
"白色主題":"White","黑色主題":"Black","黃色主題":"Yellow","紅色主題":"Red", "確定要":"Sure Want To ","靈敏度":"Sensitivity ","更新":"Update ",
"藍色主題":"Blue","綠色主題":"Green","語言":"Language ","製作":"Make", "白色主題":"White","黃色主題":"Yellow","紅色主題":"Red","語言":"Language ",
"測試人員":"Testers","版本資訊":"Information","通訊":"Communication ", "藍色主題":"Blue","綠色主題":"Green","自定主題":"Custom","最新":"Latest ",
"註冊表":"Registry ","退出":"Quit ","檔案":"File ","當前":"Currently ", "測試人員":"Testers","版本資訊":"Information","通訊":"Communication ",
"狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ", "註冊表":"Registry ","退出":"Quit ","檔案":"File ","當前":"Currently ",
"失敗":"Failed ","請":"Please ","路徑":"Path ","方式":"Method ", "狀態":"State ","掃描":"Scan ","工具":"Tools ","防護":"Protect ",
"需要":"Need ","病毒":"Virus ","選擇":"Select ","返回":"Back", "失敗":"Failed ","請":"Please ","路徑":"Path ","方式":"Method ",
"受到":"Been ","錯誤":"Error","完成":"Complete ","引擎":"Engine ", "需要":"Need ","病毒":"Virus ","選擇":"Select ","返回":"Back",
"托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","增強":"Enhanced ", "受到":"Been ","錯誤":"Error","完成":"Complete ","引擎":"Engine ",
"系統":"System ","雲端":"Cloud ","重啟":"Reboot ","修復":"Repair ", "托盤":"Tray ","圖標":"Icon ","不安全":"Unsafe","增強":"Enhanced ",
"裝置":"Device ","發現":"Found ","成功":"Success ","清理":"Cleanup ", "系統":"System ","雲端":"Cloud ","重啟":"Reboot ","修復":"Repair ",
"確定":"OK","執行":"Execute ","警告":"Warning ","使用":"Use ", "裝置":"Device ","發現":"Found ","成功":"Success ","清理":"Cleanup ",
"網路":"Network ","變更":"Change ","總數":"Total","結束":"End ", "確定":"OK","執行":"Execute ","警告":"Warning ","使用":"Use ",
"選項":"Options ","監控":"Monitor ","連接":"Connect ","可以":"To ", "網路":"Network ","變更":"Change ","總數":"Total","結束":"End ",
"進程":"Process ","攔截":"Block ","引導":"Boot ","刪除":"Delete ", "選項":"Options ","監控":"Monitor ","連接":"Connect ","可以":"To ",
"分區":"Partition ","設定":"Settings","關於":"About","模式":"Mode ", "進程":"Process ","攔截":"Block ","引導":"Boot ","刪除":"Delete ",
"提高":"Improve ","安全":"Security ","顯色":"Color ","主題":"Themes ", "分區":"Partition ","設定":"Settings","關於":"About","模式":"Mode ",
"風險":"Risk ","介面":"GUI ","核心":"Core ","服務":"Services ", "提高":"Improve ","安全":"Security ","顯色":"Color ","主題":"Themes ",
"管理":"Manage","所有":"All ","全盤":"Full ","取消":"Cancel ", "風險":"Risk ","介面":"GUI ","核心":"Core ","服務":"Services ",
"垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ", "管理":"Manage","所有":"All ","您":"You ","取消":"Cancel ","未":"Not ",
"增加到":"Add File To ","白名單":"White List ","軟體":"Software ", "垃圾":"Junk ","位元":"byte ","本機":"Computer ","停止":"Stop ",
"增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ","稱":"", "增加到":"Add File To ","白名單":"White List ","軟體":"Software ",
"開啟":"Open ","您":"You ","此":"This ","並":"And ","未":"Not ", "增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ","稱":"",
"高":"High ","新":"New ","和":"And ","可能會":"Possible ","會":"Can ", "複製":"Copy ","開啟":"Open ","此":"This ","並":"And ","全盤":"Full ",
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Drive ", "已經是":"Already ","數據庫":"Database ","誤報":"False Positive ",
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","立即":"", "高":"High ","新":"New ","和":"And ","可能會":"Possible ","會":"Can ",
"密鑰":"Key ","檢測":"Detect ","誤報":"False Positive "," ":" ", "日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Drive ",
"複製":"Copy "}} "的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","立即":"",
"密鑰":"Key ","檢測":"Detect ","製作":"Make"," ":" "}}
+5649 -6472
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -1,7 +1,7 @@
import pyinstaller_versionfile import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile( pyinstaller_versionfile.create_versionfile(
output_file="versionfile.txt", output_file="versionfile.txt",
version='2.9.4', version='3.0.2',
company_name="PYAS Security", company_name="PYAS Security",
file_description="Python Antivirus Software", file_description="Python Antivirus Software",
internal_name="PYAS", internal_name="PYAS",
+157 -9
View File
@@ -1,22 +1,170 @@
# PYAS (Python Antivirus Software) # PYAS (Python Antivirus Software)
![PYAS](https://github.com/87owo/PYAS/assets/85057800/153bcad9-18ab-4c81-bcb6-186434d0ef1b) ![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_Compress.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_Function.* -> 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 ## 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 https://github.com/87owo/PYAS/blob/main/LICENSE.md
## Support System ## Support System
Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
## Requirements Other systems may experience software malfunctions or crash
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
## Special Thanks ## 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