Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5f07706f5 | ||
|
|
2b6b8accf1 | ||
|
|
e6aca5533b | ||
|
|
dc60cc3ccb | ||
|
|
5613993019 | ||
|
|
1613101bd6 | ||
|
|
cb3440494e | ||
|
|
78b979f397 | ||
|
|
6742b71208 | ||
|
|
e0178ac2b5 | ||
|
|
e2141decaa | ||
|
|
4a68c62e72 | ||
|
|
bc7d5704f9 | ||
|
|
a984be2535 | ||
|
|
026f96d473 | ||
|
|
0dbca7895e | ||
|
|
0f390668f7 | ||
|
|
f4ced70d8e | ||
|
|
7b805df433 | ||
|
|
4b66171388 | ||
|
|
0cf80753ae | ||
|
|
6f3d315851 | ||
|
|
475d4b4a80 | ||
|
|
bd8633de0d | ||
|
|
5d2937c896 | ||
|
|
eb89284834 | ||
|
|
f5777b2a68 | ||
|
|
9431a4dd6c | ||
|
|
82a4dfdfd5 | ||
|
|
9bd63d15e9 | ||
|
|
f6e5c8e0b1 | ||
|
|
3b56f6dc6f | ||
|
|
2c24079552 | ||
|
|
f58a846826 | ||
|
|
8bc74a8833 | ||
|
|
5bd0033ff0 | ||
|
|
e45758be80 | ||
|
|
5033348eed | ||
|
|
2327fd099c | ||
|
|
6afa02ea71 | ||
|
|
9cf1b38e56 |
No files matched your search
Binary file not shown.
|
Before Width: | Height: | Size: 17 KiB |
@@ -1,5 +0,0 @@
|
||||
{
|
||||
"language": "en_US",
|
||||
"high_sensitivity": 0,
|
||||
"cloud_services": 1
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
import os, gc, sys, time, json, psutil
|
||||
import ctypes, requests, subprocess
|
||||
import win32file, win32api, win32con, win32gui
|
||||
import xml.etree.ElementTree as ET
|
||||
import os, gc, sys, time, json, requests
|
||||
import psutil, ctypes, win32con, win32gui
|
||||
import win32file, win32api, subprocess
|
||||
import xml.etree.ElementTree as et
|
||||
from hashlib import md5, sha1, sha256
|
||||
from pefile import PE, DIRECTORY_ENTRY
|
||||
from PYAS_Language import translations
|
||||
from PYAS_Model import function_list
|
||||
from PYAS_UI import Ui_MainWindow
|
||||
from PYAS_Function import function_list
|
||||
from PYAS_Extension import slist, alist
|
||||
from PYAS_Interface import Ui_MainWindow
|
||||
from PyQt5 import QtWidgets, QtGui, QtCore
|
||||
from PyQt5.QtWidgets import *
|
||||
from PyQt5.QtGui import *
|
||||
@@ -21,20 +22,18 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui = Ui_MainWindow()
|
||||
self.ui.setupUi(self)
|
||||
self.create_library()
|
||||
self.init_config()
|
||||
self.init_config_ui()
|
||||
self.init_config_mbr()
|
||||
self.init_configs()
|
||||
self.init_whitelist()
|
||||
self.init_blocklist()
|
||||
self.init_tray_icon()
|
||||
self.setup_control()
|
||||
self.init_protect()
|
||||
self.showNormal()
|
||||
self.show_pyas_ui()
|
||||
|
||||
def init_tray_icon(self):
|
||||
self.tray_icon = QSystemTrayIcon(self)
|
||||
self.tray_icon.setIcon(QFileIconProvider().icon(QFileInfo(self.pyas)))
|
||||
self.tray_icon.activated.connect(self.showNormal)
|
||||
self.tray_icon.activated.connect(self.show_pyas_ui)
|
||||
self.tray_icon.show()
|
||||
|
||||
def init_protect(self):
|
||||
@@ -45,25 +44,20 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.protect_threading_init_5()
|
||||
self.block_window_threading_init()
|
||||
|
||||
def init_config(self):
|
||||
self.Safe = True
|
||||
self.Virus_Scan = False
|
||||
def init_configs(self):
|
||||
self.scan = False
|
||||
self.block_window = True
|
||||
self.pyas_opacity = 0
|
||||
self.pyas_version = "2.7.9"
|
||||
self.ui.Theme_White.setChecked(True)
|
||||
self.pyas = str(sys.argv[0]).replace("\\", "/")
|
||||
self.sflist = [".exe",".dll",".com",".msi",".js",".jar",".vbs",".ps1",".xls",".xlsx",".doc",".docx"]
|
||||
self.md5_key = self.pyas_key()
|
||||
self.pyasConfig = self.init_config_json()
|
||||
self.key = self.pyas_key()
|
||||
self.json = self.init_config_json()
|
||||
self.system_safe()
|
||||
self.init_config_lang()
|
||||
self.init_config_sens()
|
||||
|
||||
def writeConfig(self, config):
|
||||
try:
|
||||
with open("C:/Windows/SysWOW64/PYAS/PYAS.json", "w", encoding="utf-8") as f:
|
||||
f.write(json.dumps(config, indent=4, ensure_ascii=False))
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.init_config_ui()
|
||||
self.init_config_mbr()
|
||||
|
||||
def create_library(self):
|
||||
try:
|
||||
@@ -72,6 +66,13 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def writeConfig(self, config):
|
||||
try:
|
||||
with open("C:/Windows/SysWOW64/PYAS/PYAS.json", "w", encoding="utf-8") as f:
|
||||
f.write(json.dumps(config, indent=4, ensure_ascii=False))
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def init_whitelist(self):
|
||||
try:
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "r", encoding="utf-8") as f:
|
||||
@@ -100,7 +101,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
return json.load(f)
|
||||
|
||||
def init_config_lang(self):
|
||||
self.language = self.pyasConfig.get("language", "en_US")
|
||||
self.language = self.json.get("language", "en_US")
|
||||
if self.language == "zh_TW":
|
||||
self.ui.Language_Traditional_Chinese.setChecked(True)
|
||||
elif self.language == "zh_CN":
|
||||
@@ -110,13 +111,13 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.lang_init_refresh()
|
||||
|
||||
def init_config_sens(self):
|
||||
self.high_sensitivity = self.pyasConfig.get("high_sensitivity", 0)
|
||||
self.high_sensitivity = self.json.get("high_sensitivity", 0)
|
||||
if self.high_sensitivity == 1:
|
||||
self.ui.high_sensitivity_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.high_sensitivity_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,200,20,120);}""")
|
||||
self.cloud_services = self.pyasConfig.get("cloud_services", 1)
|
||||
self.cloud_services = self.json.get("cloud_services", 1)
|
||||
if self.cloud_services == 1:
|
||||
self.ui.cloud_services_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.cloud_services_switch_Button.setStyleSheet("""
|
||||
@@ -130,9 +131,9 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.State_Button.clicked.connect(self.Change_to_State_widget)
|
||||
self.ui.Protection_Button.clicked.connect(self.Change_to_Protection_widget)
|
||||
self.ui.Virus_Scan_Button.clicked.connect(self.Change_to_Virus_Scan_widget)
|
||||
self.ui.Virus_Scan_Solve_Button.clicked.connect(self.Virus_Solve)
|
||||
self.ui.Virus_Scan_choose_Button.clicked.connect(self.Virus_Scan_Choose_Menu)
|
||||
self.ui.Virus_Scan_Break_Button.clicked.connect(self.Virus_Scan_Break)
|
||||
self.ui.Virus_Scan_Solve_Button.clicked.connect(self.virus_solve)
|
||||
self.ui.Virus_Scan_choose_Button.clicked.connect(self.virus_scan_choose_menu)
|
||||
self.ui.Virus_Scan_Break_Button.clicked.connect(self.virus_scan_break)
|
||||
self.ui.File_Scan_Button.clicked.connect(self.file_scan)
|
||||
self.ui.Path_Scan_Button.clicked.connect(self.path_scan)
|
||||
self.ui.Disk_Scan_Button.clicked.connect(self.disk_scan)
|
||||
@@ -205,31 +206,31 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
try:
|
||||
self.ui.State_output.clear()
|
||||
if self.ui.Language_Traditional_Chinese.isChecked():
|
||||
self.pyasConfig["language"] = "zh_TW"
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["language"] = "zh_TW"
|
||||
self.writeConfig(self.json)
|
||||
elif self.ui.Language_Simplified_Chinese.isChecked():
|
||||
self.pyasConfig["language"] = "zh_CN"
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["language"] = "zh_CN"
|
||||
self.writeConfig(self.json)
|
||||
else:
|
||||
self.pyasConfig["language"] = "en_US"
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["language"] = "en_US"
|
||||
self.writeConfig(self.json)
|
||||
self.lang_init_refresh()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def text_Translate(self, text):
|
||||
for k, v in translations.get(self.pyasConfig["language"], translations).items():
|
||||
for k, v in translations.get(self.json["language"], translations).items():
|
||||
text = text.replace(str(k), str(v))
|
||||
return text
|
||||
|
||||
def lang_init_refresh(self):
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置已受到防護" if self.Safe else "此裝置當前不安全"))
|
||||
self.ui.Window_title.setText(self.text_Translate(f"PYAS V{pyas_version} {self.md5_key}"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置已受到防護" if self.safe else "此裝置當前不安全"))
|
||||
self.ui.Window_title.setText(self.text_Translate(f"PYAS V{self.pyas_version} {self.key}"))
|
||||
self.ui.PYAS_CopyRight.setText(self.text_Translate(f"Copyright© 2020-{max(int(time.strftime('%Y')), 2020)} PYAS Security"))
|
||||
self.ui.State_Button.setText(self.text_Translate("狀態"))
|
||||
self.ui.Virus_Scan_Button.setText(self.text_Translate("掃描"))
|
||||
self.ui.Tools_Button.setText(self.text_Translate("工具"))
|
||||
self.ui.Protection_Button.setText(self.text_Translate("防護"))
|
||||
self.ui.State_Button.setText(self.text_Translate(" 狀態"))
|
||||
self.ui.Virus_Scan_Button.setText(self.text_Translate(" 掃描"))
|
||||
self.ui.Tools_Button.setText(self.text_Translate(" 工具"))
|
||||
self.ui.Protection_Button.setText(self.text_Translate(" 防護"))
|
||||
self.ui.Virus_Scan_title.setText(self.text_Translate("病毒掃描"))
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
self.ui.Virus_Scan_choose_Button.setText(self.text_Translate("病毒掃描"))
|
||||
@@ -241,19 +242,19 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Process_Tools_Back.setText(self.text_Translate("返回"))
|
||||
self.ui.Process_Total_title.setText(self.text_Translate("進程總數:"))
|
||||
self.ui.Protection_title.setText(self.text_Translate("進程防護"))
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("啟用此選項可以監控進程並攔截病毒"))
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("啟用此選項可以攔截進程病毒"))
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate(self.ui.Protection_switch_Button.text()))
|
||||
self.ui.Protection_title_2.setText(self.text_Translate("檔案防護"))
|
||||
self.ui.Protection_illustrate_2.setText(self.text_Translate("啟用此選項可以監控病毒檔案變更"))
|
||||
self.ui.Protection_illustrate_2.setText(self.text_Translate("啟用此選項可以監控檔案變更"))
|
||||
self.ui.Protection_switch_Button_2.setText(self.text_Translate(self.ui.Protection_switch_Button_2.text()))
|
||||
self.ui.Protection_title_3.setText(self.text_Translate("引導防護"))
|
||||
self.ui.Protection_illustrate_3.setText(self.text_Translate("啟用此選項可以修復系統引導分區"))
|
||||
self.ui.Protection_illustrate_3.setText(self.text_Translate("啟用此選項可以修復引導分區"))
|
||||
self.ui.Protection_switch_Button_3.setText(self.text_Translate(self.ui.Protection_switch_Button_3.text()))
|
||||
self.ui.Protection_title_4.setText(self.text_Translate("註冊表防護"))
|
||||
self.ui.Protection_illustrate_4.setText(self.text_Translate("啟用此選項可以修復系統註冊表項目"))
|
||||
self.ui.Protection_illustrate_4.setText(self.text_Translate("啟用此選項可以修復註冊表項目"))
|
||||
self.ui.Protection_switch_Button_4.setText(self.text_Translate(self.ui.Protection_switch_Button_4.text()))
|
||||
self.ui.Protection_title_5.setText(self.text_Translate("增強防護"))
|
||||
self.ui.Protection_illustrate_5.setText(self.text_Translate("啟用此選項可以增強系統防護項目"))
|
||||
self.ui.Protection_illustrate_5.setText(self.text_Translate("啟用此選項可以增強系統防護"))
|
||||
self.ui.Protection_switch_Button_5.setText(self.text_Translate(self.ui.Protection_switch_Button_5.text()))
|
||||
self.ui.State_log.setText(self.text_Translate("日誌:"))
|
||||
self.ui.More_Tools_Back_Button.setText(self.text_Translate("工具>"))
|
||||
@@ -263,7 +264,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Window_Block_Button.setText(self.text_Translate("軟體彈窗攔截"))
|
||||
self.ui.Repair_System_Network_Button.setText(self.text_Translate("系統網路修復"))
|
||||
self.ui.About_Back.setText(self.text_Translate("返回"))
|
||||
self.ui.PYAS_Version.setText(self.text_Translate(f"PYAS V{pyas_version} {self.md5_key}"))
|
||||
self.ui.PYAS_Version.setText(self.text_Translate(f"PYAS V{self.pyas_version} {self.key}"))
|
||||
self.ui.GUI_Made_title.setText(self.text_Translate("介面製作:"))
|
||||
self.ui.GUI_Made_Name.setText(self.text_Translate("mtkiao"))
|
||||
self.ui.Core_Made_title.setText(self.text_Translate("核心製作:"))
|
||||
@@ -294,7 +295,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Language_title.setText(self.text_Translate("顯示語言"))
|
||||
self.ui.Language_illustrate.setText(self.text_Translate("請選擇語言"))
|
||||
self.ui.License_terms_title.setText(self.text_Translate("許可條款:"))
|
||||
|
||||
|
||||
def Change_Theme(self):
|
||||
if self.ui.Theme_White.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(240,240,240);}""")
|
||||
@@ -386,7 +387,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def Change_to_State_widget(self):
|
||||
if self.ui.State_widget.isHidden():
|
||||
self.Change_animation_2(25,50)
|
||||
self.Change_animation_2(20,50)
|
||||
self.Change_animation_3(self.ui.State_widget,0.5)
|
||||
self.Change_animation(self.ui.State_widget)
|
||||
self.ui.State_widget.show()
|
||||
@@ -399,7 +400,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def Change_to_Virus_Scan_widget(self):
|
||||
if self.ui.Virus_Scan_widget.isHidden():
|
||||
self.Change_animation_2(25,168)
|
||||
self.Change_animation_2(20,168)
|
||||
self.Change_animation_3(self.ui.Virus_Scan_widget,0.5)
|
||||
self.Change_animation(self.ui.Virus_Scan_widget)
|
||||
self.ui.State_widget.hide()
|
||||
@@ -412,7 +413,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def Change_to_Tools_widget(self):
|
||||
if self.ui.Tools_widget.isHidden():
|
||||
self.Change_animation_2(25,285)
|
||||
self.Change_animation_2(20,285)
|
||||
self.Change_animation_3(self.ui.Tools_widget,0.5)
|
||||
self.Change_animation(self.ui.Tools_widget)
|
||||
self.ui.State_widget.hide()
|
||||
@@ -425,7 +426,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def Change_to_Protection_widget(self):
|
||||
if self.ui.Protection_widget.isHidden():
|
||||
self.Change_animation_2(25,405)
|
||||
self.Change_animation_2(20,405)
|
||||
self.Change_animation_3(self.ui.Protection_widget,0.5)
|
||||
self.Change_animation(self.ui.Protection_widget)
|
||||
self.ui.State_widget.hide()
|
||||
@@ -507,7 +508,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
rect.setHeight(rect.height()-10)
|
||||
pat2.drawRoundedRect(rect, 1, 1)
|
||||
|
||||
def showNormal(self):
|
||||
def show_pyas_ui(self):
|
||||
self.show()
|
||||
while self.pyas_opacity < 100:
|
||||
time.sleep(0.001)
|
||||
@@ -515,7 +516,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.setWindowOpacity(self.pyas_opacity/100)
|
||||
QApplication.processEvents()
|
||||
|
||||
def hideWindow(self):
|
||||
def hide_pyas_ui(self):
|
||||
while self.pyas_opacity > 0:
|
||||
time.sleep(0.001)
|
||||
self.pyas_opacity -= 1
|
||||
@@ -524,7 +525,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.hide()
|
||||
|
||||
def showMinimized(self):
|
||||
self.hideWindow()
|
||||
self.hide_pyas_ui()
|
||||
self.system_notification(self.text_Translate("PYAS 已最小化到系統托盤圖標"))
|
||||
|
||||
def closeEvent(self, event):
|
||||
@@ -536,7 +537,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.reg_protect = False
|
||||
self.enh_protect = False
|
||||
self.tray_icon.hide()
|
||||
self.hideWindow()
|
||||
self.hide_pyas_ui()
|
||||
QApplication.instance().quit()
|
||||
event.ignore()
|
||||
|
||||
@@ -562,13 +563,10 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
for url in ["http://27.147.30.238:5001/pyas","https://api.pyas.cf/pyas"]:
|
||||
try:
|
||||
response = requests.get(url, params={"key": file_md5}, timeout=3)
|
||||
if response.status_code == 200:
|
||||
if response.text == "True":
|
||||
return ""
|
||||
elif response.text == "Update":
|
||||
return "(軟體需要更新)"
|
||||
else:
|
||||
return "(安全密鑰錯誤)"
|
||||
if response.status_code == 200 and response.text == "True":
|
||||
return ""
|
||||
else:
|
||||
return "(安全密鑰錯誤)"
|
||||
except:
|
||||
pass
|
||||
return "(網路連接錯誤)"
|
||||
@@ -604,16 +602,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
sw_state = self.ui.high_sensitivity_switch_Button.text()
|
||||
if sw_state == self.text_Translate("已關閉"):
|
||||
self.high_sensitivity = 1
|
||||
self.pyasConfig["high_sensitivity"] = 1
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["high_sensitivity"] = 1
|
||||
self.writeConfig(self.json)
|
||||
self.ui.high_sensitivity_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.high_sensitivity_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,200,20,120);}""")
|
||||
elif sw_state == self.text_Translate("已開啟"):
|
||||
self.high_sensitivity = 0
|
||||
self.pyasConfig["high_sensitivity"] = 0
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["high_sensitivity"] = 0
|
||||
self.writeConfig(self.json)
|
||||
self.ui.high_sensitivity_switch_Button.setText(self.text_Translate("已關閉"))
|
||||
self.ui.high_sensitivity_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
@@ -623,80 +621,95 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
sw_state = self.ui.cloud_services_switch_Button.text()
|
||||
if sw_state == self.text_Translate("已關閉"):
|
||||
self.cloud_services = 1
|
||||
self.pyasConfig["cloud_services"] = 1
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["cloud_services"] = 1
|
||||
self.writeConfig(self.json)
|
||||
self.ui.cloud_services_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.cloud_services_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,200,20,120);}""")
|
||||
elif sw_state == self.text_Translate("已開啟"):
|
||||
self.cloud_services = 0
|
||||
self.pyasConfig["cloud_services"] = 0
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.json["cloud_services"] = 0
|
||||
self.writeConfig(self.json)
|
||||
self.ui.cloud_services_switch_Button.setText(self.text_Translate("已關閉"))
|
||||
self.ui.cloud_services_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,20,20,30);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,20,20,50);}""")
|
||||
|
||||
def add_white_list(self):
|
||||
try:
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("增加到白名單"),"C:/","All File *.*")
|
||||
if file not in ["", "PYAS"]:
|
||||
if str(file.replace("\\", "/")) not in self.whitelist:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.append(str(file.replace("\\", "/")))
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "a+", encoding="utf-8") as f:
|
||||
f.write(str(file.replace("\\", "/"))+'\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('增加到白名單失敗')
|
||||
elif QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate(f"您確定要取消增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.remove(str(file.replace("\\", "/")))
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "w", encoding="utf-8") as f:
|
||||
for file in self.whitelist:
|
||||
f.write(f'{file}\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功取消增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('取消增加到白名單失敗')
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def system_safe(self):
|
||||
try:
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/check.png"))
|
||||
self.safe = True
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Check.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置已受到防護"))
|
||||
self.Safe = True
|
||||
except:
|
||||
pass
|
||||
|
||||
def system_unsafe(self):
|
||||
try:
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/X2.png"))
|
||||
self.safe = False
|
||||
self.ui.State_icon.setPixmap(QtGui.QPixmap(":/icon/Close.png"))
|
||||
self.ui.State_title.setText(self.text_Translate("此裝置當前不安全"))
|
||||
self.Safe = False
|
||||
except:
|
||||
pass
|
||||
|
||||
def Virus_Scan_Break(self):
|
||||
def init_scan(self):
|
||||
self.scan = True
|
||||
self.Virus_List = []
|
||||
self.Virus_List_Ui = []
|
||||
self.ui.Virus_Scan_Solve_Button.hide()
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.Virus_List_output=QStringListModel()
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
|
||||
def virus_scan_break(self):
|
||||
self.scan = False
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
|
||||
def virus_scan_choose_menu(self):
|
||||
if self.ui.Virus_Scan_choose_widget.isHidden():
|
||||
self.ui.Virus_Scan_choose_widget.show()
|
||||
self.Change_animation_4(self.ui.Virus_Scan_choose_widget,100,0,101)
|
||||
else:
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
|
||||
def write_scan(self,state,file):
|
||||
try:
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
self.Virus_Scan = False
|
||||
self.Virus_List.append(file)
|
||||
self.Virus_List_Ui.append(f"[{state}] {file}")
|
||||
self.Virus_List_output.setStringList(self.Virus_List_Ui)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
except:
|
||||
pass
|
||||
|
||||
def Virus_Solve(self):
|
||||
def answer_scan(self):
|
||||
if self.Virus_List != []:
|
||||
self.Virus_List_output.setStringList(self.Virus_List_Ui)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.Virus_Scan_Solve_Button.show()
|
||||
self.virus_scan_break()
|
||||
self.system_unsafe()
|
||||
text = self.text_Translate(f"當前發現 {len(self.Virus_List)} 個病毒")
|
||||
else:
|
||||
self.virus_scan_break()
|
||||
self.system_safe()
|
||||
text = self.text_Translate("當前未發現病毒")
|
||||
self.ui.Virus_Scan_text.setText(text)
|
||||
self.system_notification(text)
|
||||
|
||||
def virus_solve(self):
|
||||
try:
|
||||
for line in self.Virus_List:
|
||||
try:
|
||||
if ":/Windows" not in str(line):
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在刪除: ")+line)
|
||||
QApplication.processEvents()
|
||||
os.remove(str(line))
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在刪除: ")+line)
|
||||
QApplication.processEvents()
|
||||
os.remove(str(line))
|
||||
except:
|
||||
continue
|
||||
self.Virus_List = []
|
||||
self.Virus_List_Ui = []
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("成功: 刪除成功"))
|
||||
@@ -705,6 +718,91 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def file_scan(self):
|
||||
try:
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("病毒掃描"),"C:/","")
|
||||
if file != "":
|
||||
self.init_scan()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
QApplication.processEvents()
|
||||
if file not in self.whitelist and ":/Windows" not in file:
|
||||
if self.high_sensitivity == 0 and self.sign_scan(file):
|
||||
if self.api_scan(file):
|
||||
self.write_scan(self.text_Translate("惡意"),file)
|
||||
elif self.pe_scan(file):
|
||||
self.write_scan(self.text_Translate("可疑"),file)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.api_scan(file):
|
||||
self.write_scan(self.text_Translate("惡意"),file)
|
||||
elif self.pe_scan(file):
|
||||
self.write_scan(self.text_Translate("可疑"),file)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.virus_scan_break()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
|
||||
def path_scan(self):
|
||||
try:
|
||||
path = QFileDialog.getExistingDirectory(self,self.text_Translate("病毒掃描"),"C:/")
|
||||
if path != "":
|
||||
self.init_scan()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
self.traverse_path(path)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.virus_scan_break()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
|
||||
def disk_scan(self):
|
||||
try:
|
||||
self.init_scan()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
for d in range(26):
|
||||
if os.path.exists(f"{chr(65+d)}:/"):
|
||||
self.traverse_path(f"{chr(65+d)}:/")
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.virus_scan_break()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
|
||||
def traverse_path(self,path):
|
||||
for fd in os.listdir(path):
|
||||
try:
|
||||
file = str(os.path.join(path,fd)).replace("\\", "/")
|
||||
if self.scan == False:
|
||||
break
|
||||
elif file in self.whitelist or ":/$Recycle.Bin" in file or ":/Windows" in file:
|
||||
continue
|
||||
elif os.path.isdir(file):
|
||||
self.traverse_path(file)
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate(f"正在掃描: ")+file)
|
||||
QApplication.processEvents()
|
||||
if self.high_sensitivity == 0 and self.sign_scan(file):
|
||||
if str(os.path.splitext(fd)[1]).lower() in slist:
|
||||
if self.api_scan(file):
|
||||
self.write_scan(self.text_Translate("惡意"),file)
|
||||
elif self.pe_scan(file):
|
||||
self.write_scan(self.text_Translate("可疑"),file)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.api_scan(file):
|
||||
self.write_scan(self.text_Translate("惡意"),file)
|
||||
elif self.pe_scan(file):
|
||||
self.write_scan(self.text_Translate("可疑"),file)
|
||||
gc.collect()
|
||||
except:
|
||||
continue
|
||||
|
||||
def api_scan(self, file):
|
||||
try:
|
||||
if self.cloud_services == 1:
|
||||
@@ -712,7 +810,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
text = str(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)
|
||||
return response.status_code == 200 and float(ET.fromstring(response.text).find('.//e_level').text) > 50
|
||||
return response.status_code == 200 and float(et.fromstring(response.text).find('.//e_level').text) > 50
|
||||
except:
|
||||
return False
|
||||
|
||||
@@ -731,154 +829,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
pe.close()
|
||||
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||
for func in entry.imports:
|
||||
fn.append(str(func.name, "utf-8"))
|
||||
for vfl in function_list:
|
||||
QApplication.processEvents()
|
||||
if sum(1 for i in range(min(len(vfl), len(fn))) if vfl[i] == fn[i]) / min(len(vfl), len(fn)) > 0.5:
|
||||
return True
|
||||
try:
|
||||
fn.append(str(func.name, "utf-8"))
|
||||
except:
|
||||
pass
|
||||
if fn in function_list:
|
||||
return True
|
||||
return False
|
||||
except:
|
||||
return False
|
||||
|
||||
def write_scan(self,file):
|
||||
try:
|
||||
self.Virus_List.append(file)
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
except:
|
||||
pass
|
||||
|
||||
def answer_scan(self):
|
||||
if self.Virus_List != []:
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
self.ui.Virus_Scan_Solve_Button.show()
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.Virus_Scan_Break()
|
||||
self.system_unsafe()
|
||||
text = self.text_Translate(f"當前發現 {len(self.Virus_List)} 個病毒")
|
||||
else:
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.Virus_Scan_Break()
|
||||
self.system_safe()
|
||||
text = self.text_Translate("當前未發現病毒")
|
||||
self.ui.Virus_Scan_text.setText(text)
|
||||
self.system_notification(text)
|
||||
|
||||
def Virus_Scan_Choose_Menu(self):
|
||||
if self.ui.Virus_Scan_choose_widget.isHidden():
|
||||
self.ui.Virus_Scan_choose_widget.show()
|
||||
self.Change_animation_4(self.ui.Virus_Scan_choose_widget,100,0,101)
|
||||
else:
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
|
||||
def file_scan(self):
|
||||
self.Virus_List = []
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
self.ui.Virus_Scan_Solve_Button.hide()
|
||||
self.Virus_List_output=QStringListModel()
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("病毒掃描"),"C:/","")
|
||||
try:
|
||||
if file != "":
|
||||
self.Virus_Scan = True
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
QApplication.processEvents()
|
||||
if file not in self.whitelist:
|
||||
if self.high_sensitivity == 0 and self.sign_scan(file):
|
||||
if self.api_scan(file) or self.pe_scan(file):
|
||||
self.write_scan(file)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.api_scan(file) or self.pe_scan(file):
|
||||
self.write_scan(file)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
|
||||
def path_scan(self):
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
self.ui.Virus_Scan_Solve_Button.hide()
|
||||
self.Virus_List = []
|
||||
self.Virus_List_output=QStringListModel()
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
path = QFileDialog.getExistingDirectory(self,self.text_Translate("病毒掃描"),"C:/")
|
||||
try:
|
||||
if path != "":
|
||||
self.Virus_Scan = True
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
self.traverse_path(path)
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
|
||||
def disk_scan(self):
|
||||
try:
|
||||
self.ui.Virus_Scan_choose_widget.hide()
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中"))
|
||||
QApplication.processEvents()
|
||||
self.Virus_Scan = True
|
||||
self.ui.Virus_Scan_Solve_Button.hide()
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
self.Virus_List = []
|
||||
self.Virus_List_output=QStringListModel()
|
||||
self.Virus_List_output.setStringList(self.Virus_List)
|
||||
self.ui.Virus_Scan_output.setModel(self.Virus_List_output)
|
||||
for d in range(26):
|
||||
try:
|
||||
self.traverse_path(f"{chr(65+d)}:/")
|
||||
except:
|
||||
pass
|
||||
self.answer_scan()
|
||||
gc.collect()
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
self.ui.Virus_Scan_choose_Button.show()
|
||||
self.ui.Virus_Scan_Break_Button.hide()
|
||||
|
||||
def traverse_path(self,path):
|
||||
for fd in os.listdir(path):
|
||||
try:
|
||||
fullpath = str(os.path.join(path,fd)).replace("\\", "/")
|
||||
if self.Virus_Scan == False:
|
||||
break
|
||||
elif fullpath in self.whitelist or ":/$Recycle.Bin" in fullpath or ":/Windows" in fullpath:
|
||||
continue
|
||||
elif os.path.isdir(fullpath):
|
||||
self.traverse_path(fullpath)
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate(f"正在掃描: ")+fullpath)
|
||||
QApplication.processEvents()
|
||||
if self.high_sensitivity == 0 and self.sign_scan(fullpath):
|
||||
if str(os.path.splitext(fd)[1]).lower() in self.sflist:
|
||||
if self.api_scan(fullpath) or self.pe_scan(fullpath):
|
||||
self.write_scan(fullpath)
|
||||
elif self.high_sensitivity == 1:
|
||||
if self.api_scan(fullpath) or self.pe_scan(fullpath):
|
||||
self.write_scan(fullpath)
|
||||
gc.collect()
|
||||
except:
|
||||
continue
|
||||
|
||||
def Repair_System_Files(self):
|
||||
try:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要修復系統檔案嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
@@ -894,17 +854,13 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def repair_system_icon(self):
|
||||
try:
|
||||
for file_type in ['exefile', 'comfile', 'txtfile', 'dllfile', 'inifile', 'VBSfile']:
|
||||
try:
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, file_type, 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, 'DefaultIcon', win32con.REG_SZ, '%1')
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\' + file_type, 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, 'DefaultIcon', win32con.REG_SZ, '%1')
|
||||
except:
|
||||
pass
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, 'exefile', 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, 'DefaultIcon', win32con.REG_SZ, '%1')
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\exefile', 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, 'DefaultIcon', win32con.REG_SZ, '%1')
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -924,35 +880,28 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def repair_system_file_type(self):
|
||||
try:
|
||||
data = [('jpegfile', 'JPEG Image'),('.exe', 'exefile'),('exefile', 'Application'),('.com', 'comfile'),('comfile', 'MS-DOS Application'),
|
||||
('.zip', 'CompressedFolder'),('.dll', 'dllfile'),('dllfile', 'Application Extension'),('.sys', 'sysfile'),('sysfile', 'System file'),
|
||||
('.bat', 'batfile'),('batfile', 'Windows Batch File'),('VBS', 'VB Script Language'),('VBSfile', 'VBScript Script File'),
|
||||
('.txt', 'txtfile'),('txtfile', 'Text Document'),('.ini', 'inifile'),('inifile', 'Configuration Settings')]
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)# HKEY_LOCAL_MACHINE
|
||||
data = [('.exe', 'exefile'),('exefile', 'Application')]
|
||||
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)
|
||||
for ext, value in data:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
win32api.RegCloseKey(key)
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)# HKEY_CURRENT_USER
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Classes', 0, win32con.KEY_ALL_ACCESS)
|
||||
for ext, value in data:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
try:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
keyopen = win32api.RegOpenKey(key, ext + r'\shell\open', 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(keyopen, 'command', win32con.REG_SZ, '"%1" %*')
|
||||
win32api.RegCloseKey(keyopen)
|
||||
except:
|
||||
pass
|
||||
win32api.RegCloseKey(key)
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts', 0, win32con.KEY_ALL_ACCESS)# HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts
|
||||
extensions = ['.exe', '.zip', '.dll', '.sys', '.bat', '.txt', '.msc']
|
||||
for ext in extensions:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, '')
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts', 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(key, '.exe', win32con.REG_SZ, '')
|
||||
win32api.RegCloseKey(key)
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, None, 0, win32con.KEY_ALL_ACCESS)# HKEY_CLASSES_ROOT
|
||||
key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, None, 0, win32con.KEY_ALL_ACCESS)
|
||||
for ext, value in data:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
if ext in ['.cmd', '.vbs']:
|
||||
win32api.RegSetValue(key, ext + 'file', win32con.REG_SZ, 'Windows Command Script')
|
||||
try:
|
||||
win32api.RegSetValue(key, ext, win32con.REG_SZ, value)
|
||||
keyopen = win32api.RegOpenKey(key, ext + r'\shell\open', 0, win32con.KEY_ALL_ACCESS)
|
||||
win32api.RegSetValue(keyopen, 'command', win32con.REG_SZ, '"%1" %*')
|
||||
win32api.RegCloseKey(keyopen)
|
||||
@@ -1006,14 +955,14 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
|
||||
def repair_system_explorer(self):
|
||||
try:
|
||||
if not self.is_explorer_running():
|
||||
if not self.is_process_running("explorer.exe"):
|
||||
subprocess.run("explorer.exe", check=True)
|
||||
except:
|
||||
pass
|
||||
|
||||
def is_explorer_running(self):
|
||||
def is_process_running(self, name):
|
||||
for proc in psutil.process_iter(['name']):
|
||||
if proc.info['name'] == 'explorer.exe':
|
||||
if proc.info['name'] == name:
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -1031,17 +980,42 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def traverse_temp_files(self, path):
|
||||
for fd in os.listdir(path):
|
||||
try:
|
||||
fullpath = str(os.path.join(path,fd)).replace("\\", "/")
|
||||
file = str(os.path.join(path,fd)).replace("\\", "/")
|
||||
QApplication.processEvents()
|
||||
if os.path.isdir(fullpath):
|
||||
self.traverse_temp_files(fullpath)
|
||||
if os.path.isdir(file):
|
||||
self.traverse_temp_files(file)
|
||||
else:
|
||||
file_size = os.path.getsize(fullpath)
|
||||
os.remove(fullpath)
|
||||
file_size = os.path.getsize(file)
|
||||
os.remove(file)
|
||||
self.total_deleted_size += file_size
|
||||
except:
|
||||
continue
|
||||
|
||||
def add_white_list(self):
|
||||
try:
|
||||
file, filetype= QFileDialog.getOpenFileName(self,self.text_Translate("增加到白名單"),"C:/","All File *.*")
|
||||
if file not in ["", "PYAS"]:
|
||||
if str(file.replace("\\", "/")) not in self.whitelist:
|
||||
if QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate("您確定要增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.append(str(file.replace("\\", "/")))
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "a+", encoding="utf-8") as f:
|
||||
f.write(str(file.replace("\\", "/"))+'\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('增加到白名單失敗')
|
||||
elif QMessageBox.warning(self,self.text_Translate("警告"),self.text_Translate(f"您確定要取消增加到白名單嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
|
||||
try:
|
||||
self.whitelist.remove(str(file.replace("\\", "/")))
|
||||
with open("C:/Windows/SysWOW64/PYAS/Whitelist.txt", "w", encoding="utf-8") as f:
|
||||
for file in self.whitelist:
|
||||
f.write(f'{file}\n')
|
||||
QMessageBox.information(self,self.text_Translate("成功"),self.text_Translate(f"成功取消增加到白名單: ")+str(file.replace("\\", "/")),QMessageBox.Ok)
|
||||
except:
|
||||
self.pyas_bug_log('取消增加到白名單失敗')
|
||||
except Exception as e:
|
||||
self.pyas_bug_log(e)
|
||||
|
||||
def Get_Software_Window(self):
|
||||
try:
|
||||
self.block_window = False
|
||||
@@ -1212,46 +1186,66 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
Thread(target=self.protect_system_enhanced).start()
|
||||
|
||||
def protect_system_processes(self):
|
||||
existing_proc = {}
|
||||
for proc in psutil.process_iter(['name', 'exe']):
|
||||
existing_proc[str(proc.info['name'])] = str(proc.info['exe']).replace("\\", "/")
|
||||
while self.proc_protect:
|
||||
time.sleep(0.2)
|
||||
for p in psutil.process_iter():
|
||||
try:
|
||||
file, name = str(p.exe()).replace("\\", "/"), str(p.name())
|
||||
if file == self.pyas or file in self.whitelist:
|
||||
continue
|
||||
elif ":/Windows" in file or ":/Program" in file or "AppData" in file:
|
||||
continue
|
||||
elif file in ["","Registry","vmmemCmZygote","MemCompression"]:
|
||||
continue
|
||||
elif self.high_sensitivity == 1 and self.sign_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("無效簽名攔截: ")+name)
|
||||
elif self.api_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("惡意軟體攔截: ")+name)
|
||||
elif self.pe_scan(file):
|
||||
p.kill()
|
||||
self.system_notification(self.text_Translate("可疑檔案攔截: ")+name)
|
||||
else:
|
||||
self.whitelist.append(str(file.replace("\\", "/")))#
|
||||
gc.collect()
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
current_proc = {}
|
||||
for proc in psutil.process_iter(['name', 'exe']):
|
||||
current_proc[str(proc.info['name'])] = str(proc.info['exe']).replace("\\", "/")
|
||||
new_proc = {name: path for name, path in current_proc.items() if name not in existing_proc}
|
||||
if new_proc:
|
||||
for self.p_name, self.p_file in new_proc.items():
|
||||
if self.p_file == self.pyas or self.p_file in self.whitelist:
|
||||
continue
|
||||
elif ":/Windows" in self.p_file or ":/Program" in self.p_file:
|
||||
continue
|
||||
elif self.api_scan(self.p_file):
|
||||
if self.protect_process_kill(self.p_name):
|
||||
self.system_notification(self.text_Translate("惡意軟體攔截: ")+self.p_name)
|
||||
elif self.pe_scan(self.p_file):
|
||||
if self.protect_process_kill(self.p_name):
|
||||
self.system_notification(self.text_Translate("可疑檔案攔截: ")+self.p_name)
|
||||
elif self.sign_scan(self.p_file):
|
||||
self.p_check = self.p_name
|
||||
gc.collect()
|
||||
existing_proc = current_proc
|
||||
except:
|
||||
pass
|
||||
|
||||
def protect_process_kill(self,proc):
|
||||
try:
|
||||
for p in psutil.process_iter(['name', 'exe']):
|
||||
if p.info['name'] == proc:
|
||||
p.kill()
|
||||
return True
|
||||
return False
|
||||
except:
|
||||
return False
|
||||
|
||||
def protect_system_file(self,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)
|
||||
self.last_file = ""
|
||||
while self.file_protect:
|
||||
try:
|
||||
for action, file in win32file.ReadDirectoryChangesW(hDir,1024,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):
|
||||
file = str(f"{path}{file}").replace("\\", "/")
|
||||
file_type = str(os.path.splitext(file)[1]).lower()
|
||||
file_name = str(os.path.splitext(file)[0])
|
||||
if file == self.pyas or file in self.whitelist:
|
||||
continue
|
||||
elif ":/$Recycle.Bin" in file or ":/Windows" in file or ":/Program" in file:
|
||||
elif ":/Windows" in file or ":/Program" in file or "/AppData/" in file:
|
||||
continue
|
||||
elif action == 3 and str(os.path.splitext(file)[1]).lower() in self.sflist:
|
||||
if self.sign_scan(file) and self.api_scan(file):
|
||||
elif action:
|
||||
if file_type in slist and self.sign_scan(file) and self.api_scan(file):
|
||||
os.remove(file)
|
||||
self.system_notification(self.text_Translate("惡意軟體刪除: ")+file)
|
||||
elif self.last_file == file_name and self.protect_process_kill(self.p_check):
|
||||
self.system_notification(self.text_Translate("勒索軟體攔截: ")+self.p_check)
|
||||
self.last_file = file_name
|
||||
gc.collect()
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -1263,7 +1257,6 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
if f.read(512) != self.mbr_value:
|
||||
f.seek(0)
|
||||
f.write(self.mbr_value)
|
||||
self.system_notification(self.text_Translate("引導分區修復: PhysicalDrive0"))
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -1272,6 +1265,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
self.repair_system_restrictions()
|
||||
self.repair_system_file_type()
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -1279,14 +1273,12 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
while self.enh_protect:
|
||||
try:
|
||||
time.sleep(0.2)
|
||||
self.repair_system_file_type()
|
||||
self.repair_system_image()
|
||||
self.repair_system_icon()
|
||||
except:
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
pyas_version = "2.7.6"
|
||||
QtCore.QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
|
||||
QtGui.QGuiApplication.setAttribute(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
slist = [".exe",".dll",".com",".msi",".scr",
|
||||
".bat",".cmd",".ps1",".vbs",".js",
|
||||
".jar",".htm",".html",".ppt",".pptx",
|
||||
".pdf",".xls",".xlsx",".doc",".docx"]
|
||||
|
||||
alist = [".exe",".dll",".ppt",".pptx",".wps",
|
||||
".pdf",".xls",".xlsx",".doc",".docx",
|
||||
".jpg",".jpeg",".png",".webp",".gif",
|
||||
".mp3",".wav",".aac",".ogg",".flac",
|
||||
".mp4",".avi",".mov",".wmv",".mkv"]
|
||||
@@ -0,0 +1 @@
|
||||
function_list = [['LoadLibraryA', 'GetProcAddress', 'SetUnhandledExceptionFilter', 'GetCurrentProcess', 'TerminateProcess', 'IsProcessorFeaturePresent', 'QueryPerformanceCounter', 'GetCurrentProcessId', 'GetCurrentThreadId', 'GetSystemTimeAsFileTime', 'InitializeSListHead', 'IsDebuggerPresent', 'GetModuleHandleW', 'UnhandledExceptionFilter', 'GetDC', '?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ', '?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@D@Z', '?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEXXZ', '?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z', '??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ', '?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ', '?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z', '?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ', '?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ', '?unshift@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PAD1AAPAD@Z', '?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z', '?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ', '?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z', '??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ', '??0?$basic_istream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z', '?in@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PBD1AAPBDPAD3AAPAD@Z', '?out@?$codecvt@DDU_Mbstatet@@@std@@QBEHAAU_Mbstatet@@PBD1AAPBDPAD3AAPAD@Z', '?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z', '?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ', '?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBE_JXZ', '?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z', '?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ', '?_Getcat@?$codecvt@DDU_Mbstatet@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z', '?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z', '?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ', '??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ', '?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JXZ', '?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPAD_J@Z', '?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE_JPBD_J@Z', '??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ', '??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z', '??1?$basic_istream@DU?$char_traits@D@std@@@std@@UAE@XZ', '?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PAD_J@Z', '?seekg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@_JH@Z', '?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@U_Mbstatet@@@2@XZ', '?width@ios_base@std@@QAE_J_J@Z', '?width@ios_base@std@@QBE_JXZ', '?flags@ios_base@std@@QBEHXZ', '?good@ios_base@std@@QBE_NXZ', '?always_noconv@codecvt_base@std@@QBE_NXZ', '??Bid@locale@std@@QAEIXZ', '?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE_JPBD_J@Z', '??1_Lockit@std@@QAE@XZ', '??0_Lockit@std@@QAE@H@Z', '?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A', '?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ', '?uncaught_exception@std@@YA_NXZ', '?_Xout_of_range@std@@YAXPBD@Z', '?id@?$codecvt@DDU_Mbstatet@@@std@@2V0locale@2@A', '?_Fiopen@std@@YAPAU_iobuf@@PBDHH@Z', '?_Xlength_error@std@@YAXPBD@Z', '?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBE_JXZ', '_CxxThrowException', '__current_exception_context', '__std_exception_copy', '__std_exception_destroy', '__CxxFrameHandler3', 'memcpy', '__current_exception', 'memset', '_except_handler4_common', 'memmove', '_fseeki64', '__p__commode', 'fsetpos', 'ungetc', 'setvbuf', 'fgetpos', 'fwrite', '_set_fmode', '_get_stream_buffer_pointers', '__stdio_common_vfprintf', 'fgetc', 'fclose', 'fflush', '__acrt_iob_func', 'fputc', 'fread', '_lock_file', '_unlock_file', 'exit', '_exit', '_configure_narrow_argv', '__p___argc', '_initterm_e', '_cexit', '_c_exit', '_register_thread_local_exe_atexit_callback', '_initterm', '_set_app_type', '_get_initial_narrow_environment', '_seh_filter_exe', '_initialize_onexit_table', '_register_onexit_function', '_crt_atexit', '_controlfp_s', 'terminate', '_initialize_narrow_environment', '_invalid_parameter_noinfo_noreturn', '__p___argv', 'free', '_set_new_mode', 'malloc', '_callnewh', '__setusermatherr', '_configthreadlocale'], ['GetCurrentProcess', 'FindNextFileA', 'FindClose', 'GetSystemDirectoryA', 'DeleteFileA', 'SetFileAttributesA', 'ExitProcess', 'FLine truncated
|
||||
+150
-87
@@ -2,7 +2,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
from PyQt5.QtGui import *
|
||||
from PyQt5.QtCore import *
|
||||
from PyQt5.QtWidgets import *
|
||||
import sys, PYAS_UI_rc
|
||||
import sys, PYAS_Resource
|
||||
|
||||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
@@ -16,7 +16,7 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
|
||||
icon = QtGui.QIcon(QFileIconProvider().icon(QFileInfo(str(sys.argv[0]))))
|
||||
MainWindow.setWindowIcon(icon)
|
||||
MainWindow.setIconSize(QtCore.QSize(24, 24))
|
||||
MainWindow.setIconSize(QtCore.QSize(64, 64))
|
||||
MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
|
||||
MainWindow.setDocumentMode(False)
|
||||
self.centralwidget = QtWidgets.QWidget(MainWindow)
|
||||
@@ -49,7 +49,9 @@ class Ui_MainWindow(object):
|
||||
self.Protection_title.setGeometry(QtCore.QRect(10, 10, 461, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_title.setFont(font)
|
||||
self.Protection_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -60,6 +62,8 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_illustrate.setFont(font)
|
||||
self.Protection_illustrate.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -103,7 +107,9 @@ class Ui_MainWindow(object):
|
||||
self.Protection_title_2.setGeometry(QtCore.QRect(10, 10, 461, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_title_2.setFont(font)
|
||||
self.Protection_title_2.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -114,6 +120,8 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_illustrate_2.setFont(font)
|
||||
self.Protection_illustrate_2.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -157,7 +165,9 @@ class Ui_MainWindow(object):
|
||||
self.Protection_title_3.setGeometry(QtCore.QRect(10, 10, 461, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_title_3.setFont(font)
|
||||
self.Protection_title_3.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -211,7 +221,9 @@ class Ui_MainWindow(object):
|
||||
self.Protection_title_4.setGeometry(QtCore.QRect(10, 10, 461, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_title_4.setFont(font)
|
||||
self.Protection_title_4.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -265,7 +277,9 @@ class Ui_MainWindow(object):
|
||||
self.Protection_title_5.setGeometry(QtCore.QRect(10, 10, 461, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_title_5.setFont(font)
|
||||
self.Protection_title_5.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -341,6 +355,8 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.State_Button.setFont(font)
|
||||
self.State_Button.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
|
||||
@@ -361,7 +377,10 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(255, 255, 255,110);\n"
|
||||
"}")
|
||||
self.State_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
icon1 = QtGui.QIcon()
|
||||
icon1.addPixmap(QtGui.QPixmap(":/icon/State.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.State_Button.setIcon(icon1)
|
||||
self.State_Button.setIconSize(QtCore.QSize(20, 20))
|
||||
self.State_Button.setCheckable(False)
|
||||
self.State_Button.setObjectName("State_Button")
|
||||
self.verticalLayout.addWidget(self.State_Button)
|
||||
@@ -374,6 +393,8 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Virus_Scan_Button.setFont(font)
|
||||
self.Virus_Scan_Button.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
|
||||
@@ -394,7 +415,10 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(255, 255, 255,110);\n"
|
||||
"}")
|
||||
self.Virus_Scan_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
icon2 = QtGui.QIcon()
|
||||
icon2.addPixmap(QtGui.QPixmap(":/icon/Scan.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Virus_Scan_Button.setIcon(icon2)
|
||||
self.Virus_Scan_Button.setIconSize(QtCore.QSize(20, 20))
|
||||
self.Virus_Scan_Button.setCheckable(False)
|
||||
self.Virus_Scan_Button.setObjectName("Virus_Scan_Button")
|
||||
self.verticalLayout.addWidget(self.Virus_Scan_Button)
|
||||
@@ -407,10 +431,15 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Tools_Button.setFont(font)
|
||||
self.Tools_Button.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
|
||||
self.Tools_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Tools_Button.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
|
||||
self.Tools_Button.setToolTipDuration(-7)
|
||||
self.Tools_Button.setLayoutDirection(QtCore.Qt.LeftToRight)
|
||||
self.Tools_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
@@ -427,7 +456,10 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(255, 255, 255,110);\n"
|
||||
"}")
|
||||
self.Tools_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
icon3 = QtGui.QIcon()
|
||||
icon3.addPixmap(QtGui.QPixmap(":/icon/Tool.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Tools_Button.setIcon(icon3)
|
||||
self.Tools_Button.setIconSize(QtCore.QSize(20, 20))
|
||||
self.Tools_Button.setCheckable(False)
|
||||
self.Tools_Button.setObjectName("Tools_Button")
|
||||
self.verticalLayout.addWidget(self.Tools_Button)
|
||||
@@ -440,6 +472,8 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Protection_Button.setFont(font)
|
||||
self.Protection_Button.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
|
||||
@@ -460,13 +494,16 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(255, 255, 255,110);\n"
|
||||
"}")
|
||||
self.Protection_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
icon4 = QtGui.QIcon()
|
||||
icon4.addPixmap(QtGui.QPixmap(":/icon/Protect.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Protection_Button.setIcon(icon4)
|
||||
self.Protection_Button.setIconSize(QtCore.QSize(20, 20))
|
||||
self.Protection_Button.setCheckable(False)
|
||||
self.Protection_Button.setObjectName("Protection_Button")
|
||||
self.verticalLayout.addWidget(self.Protection_Button)
|
||||
self.label = QtWidgets.QPushButton(self.Navigation_Bar)
|
||||
self.label.setEnabled(False)
|
||||
self.label.setGeometry(QtCore.QRect(25, 50, 5, 30))
|
||||
self.label.setGeometry(QtCore.QRect(20, 50, 5, 30))
|
||||
self.label.setMouseTracking(False)
|
||||
self.label.setAutoFillBackground(False)
|
||||
self.label.setStyleSheet("QPushButton#label\n"
|
||||
@@ -476,6 +513,8 @@ class Ui_MainWindow(object):
|
||||
"}")
|
||||
self.label.setText("")
|
||||
self.label.setCheckable(False)
|
||||
self.label.setAutoRepeatDelay(300)
|
||||
self.label.setAutoRepeatInterval(100)
|
||||
self.label.setAutoDefault(False)
|
||||
self.label.setDefault(True)
|
||||
self.label.setFlat(False)
|
||||
@@ -493,7 +532,9 @@ class Ui_MainWindow(object):
|
||||
self.Virus_Scan_title.setGeometry(QtCore.QRect(45, 30, 281, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
self.Virus_Scan_title.setFont(font)
|
||||
self.Virus_Scan_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
self.Virus_Scan_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
@@ -534,9 +575,6 @@ class Ui_MainWindow(object):
|
||||
"{\n"
|
||||
" background-color:rgba(100,220,100,200);\n"
|
||||
"}")
|
||||
icon1 = QtGui.QIcon()
|
||||
icon1.addPixmap(QtGui.QPixmap(":/icon/Icon/multimedia.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Virus_Scan_choose_Button.setIcon(icon1)
|
||||
self.Virus_Scan_choose_Button.setIconSize(QtCore.QSize(10, 10))
|
||||
self.Virus_Scan_choose_Button.setCheckable(False)
|
||||
self.Virus_Scan_choose_Button.setAutoRepeat(False)
|
||||
@@ -549,6 +587,9 @@ class Ui_MainWindow(object):
|
||||
self.Virus_Scan_output = QtWidgets.QListView(self.Virus_Scan_widget)
|
||||
self.Virus_Scan_output.setEnabled(True)
|
||||
self.Virus_Scan_output.setGeometry(QtCore.QRect(45, 150, 581, 301))
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(9)
|
||||
self.Virus_Scan_output.setFont(font)
|
||||
self.Virus_Scan_output.setStyleSheet("QWidget::item\n"
|
||||
"{\n"
|
||||
"background-color: rgba(50,50,50,30);\n"
|
||||
@@ -754,33 +795,40 @@ class Ui_MainWindow(object):
|
||||
self.State_widget.setStyleSheet("background-color:rgb(255, 255, 255);")
|
||||
self.State_widget.setObjectName("State_widget")
|
||||
self.State_title = QtWidgets.QLabel(self.State_widget)
|
||||
self.State_title.setGeometry(QtCore.QRect(94, 210, 481, 51))
|
||||
self.State_title.setGeometry(QtCore.QRect(50, 210, 571, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
font.setPointSize(15)
|
||||
font.setBold(True)
|
||||
font.setWeight(75)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.State_title.setFont(font)
|
||||
self.State_title.setLayoutDirection(QtCore.Qt.LeftToRight)
|
||||
self.State_title.setStyleSheet("")
|
||||
self.State_title.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.State_title.setObjectName("State_title")
|
||||
self.State_icon = QtWidgets.QLabel(self.State_widget)
|
||||
self.State_icon.setGeometry(QtCore.QRect(255, 50, 161, 151))
|
||||
self.State_icon.setGeometry(QtCore.QRect(250, 20, 171, 171))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(1)
|
||||
font.setKerning(True)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.State_icon.setFont(font)
|
||||
self.State_icon.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
|
||||
self.State_icon.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||
self.State_icon.setLineWidth(1)
|
||||
self.State_icon.setText("")
|
||||
self.State_icon.setPixmap(QtGui.QPixmap(":/icon/Icon/check.png"))
|
||||
self.State_icon.setTextFormat(QtCore.Qt.AutoText)
|
||||
self.State_icon.setPixmap(QtGui.QPixmap(":/icon/Check.png"))
|
||||
self.State_icon.setScaledContents(True)
|
||||
self.State_icon.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.State_icon.setObjectName("State_icon")
|
||||
self.State_output = QtWidgets.QTextEdit(self.State_widget)
|
||||
self.State_output.setGeometry(QtCore.QRect(95, 300, 481, 151))
|
||||
self.State_output.setGeometry(QtCore.QRect(50, 300, 571, 151))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setBold(False)
|
||||
font.setItalic(False)
|
||||
font.setWeight(50)
|
||||
@@ -792,7 +840,7 @@ class Ui_MainWindow(object):
|
||||
self.State_output.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|QtCore.Qt.TextSelectableByMouse)
|
||||
self.State_output.setObjectName("State_output")
|
||||
self.State_log = QtWidgets.QLabel(self.State_widget)
|
||||
self.State_log.setGeometry(QtCore.QRect(95, 260, 481, 31))
|
||||
self.State_log.setGeometry(QtCore.QRect(50, 260, 571, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -836,17 +884,17 @@ class Ui_MainWindow(object):
|
||||
" color:rgba(60,60,60,255);\n"
|
||||
"}\n"
|
||||
"")
|
||||
icon2 = QtGui.QIcon()
|
||||
icon2.addPixmap(QtGui.QPixmap(":/icon/Icon/exit2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.About_Back.setIcon(icon2)
|
||||
icon5 = QtGui.QIcon()
|
||||
icon5.addPixmap(QtGui.QPixmap(":/icon/Back.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.About_Back.setIcon(icon5)
|
||||
self.About_Back.setIconSize(QtCore.QSize(20, 20))
|
||||
self.About_Back.setCheckable(False)
|
||||
self.About_Back.setObjectName("About_Back")
|
||||
self.PYAS_Version = QtWidgets.QLabel(self.About_widget)
|
||||
self.PYAS_Version.setGeometry(QtCore.QRect(40, 50, 591, 41))
|
||||
self.PYAS_Version.setGeometry(QtCore.QRect(45, 50, 571, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setUnderline(False)
|
||||
font.setWeight(50)
|
||||
@@ -855,7 +903,7 @@ class Ui_MainWindow(object):
|
||||
self.PYAS_Version.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.PYAS_Version.setObjectName("PYAS_Version")
|
||||
self.GUI_Made_title = QtWidgets.QLabel(self.About_widget)
|
||||
self.GUI_Made_title.setGeometry(QtCore.QRect(40, 100, 131, 41))
|
||||
self.GUI_Made_title.setGeometry(QtCore.QRect(45, 100, 131, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -866,7 +914,7 @@ class Ui_MainWindow(object):
|
||||
self.GUI_Made_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.GUI_Made_title.setObjectName("GUI_Made_title")
|
||||
self.GUI_Made_Name = QtWidgets.QLabel(self.About_widget)
|
||||
self.GUI_Made_Name.setGeometry(QtCore.QRect(180, 100, 451, 41))
|
||||
self.GUI_Made_Name.setGeometry(QtCore.QRect(185, 100, 441, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -877,7 +925,7 @@ class Ui_MainWindow(object):
|
||||
self.GUI_Made_Name.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.GUI_Made_Name.setObjectName("GUI_Made_Name")
|
||||
self.Core_Made_title = QtWidgets.QLabel(self.About_widget)
|
||||
self.Core_Made_title.setGeometry(QtCore.QRect(40, 140, 131, 41))
|
||||
self.Core_Made_title.setGeometry(QtCore.QRect(45, 140, 131, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -888,7 +936,7 @@ class Ui_MainWindow(object):
|
||||
self.Core_Made_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Core_Made_title.setObjectName("Core_Made_title")
|
||||
self.Core_Made_Name = QtWidgets.QLabel(self.About_widget)
|
||||
self.Core_Made_Name.setGeometry(QtCore.QRect(180, 140, 451, 41))
|
||||
self.Core_Made_Name.setGeometry(QtCore.QRect(185, 140, 441, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -899,7 +947,7 @@ class Ui_MainWindow(object):
|
||||
self.Core_Made_Name.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Core_Made_Name.setObjectName("Core_Made_Name")
|
||||
self.Testers_title = QtWidgets.QLabel(self.About_widget)
|
||||
self.Testers_title.setGeometry(QtCore.QRect(40, 180, 131, 41))
|
||||
self.Testers_title.setGeometry(QtCore.QRect(45, 180, 131, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -910,7 +958,7 @@ class Ui_MainWindow(object):
|
||||
self.Testers_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Testers_title.setObjectName("Testers_title")
|
||||
self.Testers_Name = QtWidgets.QLabel(self.About_widget)
|
||||
self.Testers_Name.setGeometry(QtCore.QRect(180, 180, 451, 41))
|
||||
self.Testers_Name.setGeometry(QtCore.QRect(185, 180, 441, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -921,7 +969,7 @@ class Ui_MainWindow(object):
|
||||
self.Testers_Name.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Testers_Name.setObjectName("Testers_Name")
|
||||
self.PYAS_URL_title = QtWidgets.QLabel(self.About_widget)
|
||||
self.PYAS_URL_title.setGeometry(QtCore.QRect(40, 220, 131, 41))
|
||||
self.PYAS_URL_title.setGeometry(QtCore.QRect(45, 220, 131, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -932,7 +980,7 @@ class Ui_MainWindow(object):
|
||||
self.PYAS_URL_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.PYAS_URL_title.setObjectName("PYAS_URL_title")
|
||||
self.PYAS_URL = QtWidgets.QLabel(self.About_widget)
|
||||
self.PYAS_URL.setGeometry(QtCore.QRect(180, 220, 451, 41))
|
||||
self.PYAS_URL.setGeometry(QtCore.QRect(185, 220, 441, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -944,10 +992,10 @@ class Ui_MainWindow(object):
|
||||
self.PYAS_URL.setOpenExternalLinks(True)
|
||||
self.PYAS_URL.setObjectName("PYAS_URL")
|
||||
self.PYAS_CopyRight = QtWidgets.QLabel(self.About_widget)
|
||||
self.PYAS_CopyRight.setGeometry(QtCore.QRect(40, 430, 591, 41))
|
||||
self.PYAS_CopyRight.setGeometry(QtCore.QRect(45, 430, 581, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
font.setPointSize(11)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
self.PYAS_CopyRight.setFont(font)
|
||||
@@ -955,12 +1003,15 @@ class Ui_MainWindow(object):
|
||||
self.PYAS_CopyRight.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.PYAS_CopyRight.setObjectName("PYAS_CopyRight")
|
||||
self.License_terms = QtWidgets.QTextEdit(self.About_widget)
|
||||
self.License_terms.setGeometry(QtCore.QRect(40, 310, 591, 121))
|
||||
self.License_terms.setGeometry(QtCore.QRect(45, 300, 581, 131))
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(11)
|
||||
self.License_terms.setFont(font)
|
||||
self.License_terms.setStyleSheet("")
|
||||
self.License_terms.setReadOnly(True)
|
||||
self.License_terms.setObjectName("License_terms")
|
||||
self.License_terms_title = QtWidgets.QLabel(self.About_widget)
|
||||
self.License_terms_title.setGeometry(QtCore.QRect(40, 260, 591, 41))
|
||||
self.License_terms_title.setGeometry(QtCore.QRect(45, 260, 581, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -1011,10 +1062,10 @@ class Ui_MainWindow(object):
|
||||
" background-color:rgba(255, 255, 255,220);\n"
|
||||
"}")
|
||||
self.Close_Button.setText("")
|
||||
icon3 = QtGui.QIcon()
|
||||
icon3.addPixmap(QtGui.QPixmap(":/icon/Icon/X.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Close_Button.setIcon(icon3)
|
||||
self.Close_Button.setIconSize(QtCore.QSize(13, 13))
|
||||
icon6 = QtGui.QIcon()
|
||||
icon6.addPixmap(QtGui.QPixmap(":/icon/Close.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Close_Button.setIcon(icon6)
|
||||
self.Close_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Close_Button.setCheckable(False)
|
||||
self.Close_Button.setObjectName("Close_Button")
|
||||
self.Minimize_Button = QtWidgets.QPushButton(self.Window_widget)
|
||||
@@ -1045,17 +1096,17 @@ class Ui_MainWindow(object):
|
||||
" background-color:rgba(255, 255, 255,220);\n"
|
||||
"}")
|
||||
self.Minimize_Button.setText("")
|
||||
icon4 = QtGui.QIcon()
|
||||
icon4.addPixmap(QtGui.QPixmap(":/icon/Icon/minimizeIcon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Minimize_Button.setIcon(icon4)
|
||||
self.Minimize_Button.setIconSize(QtCore.QSize(20, 20))
|
||||
icon7 = QtGui.QIcon()
|
||||
icon7.addPixmap(QtGui.QPixmap(":/icon/Minimize.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Minimize_Button.setIcon(icon7)
|
||||
self.Minimize_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Minimize_Button.setCheckable(False)
|
||||
self.Minimize_Button.setObjectName("Minimize_Button")
|
||||
self.Window_title = QtWidgets.QLabel(self.Window_widget)
|
||||
self.Window_title.setGeometry(QtCore.QRect(10, 0, 691, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
font.setPointSize(15)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
self.Window_title.setFont(font)
|
||||
@@ -1090,10 +1141,10 @@ class Ui_MainWindow(object):
|
||||
" background-color:rgba(255, 255, 255,220);\n"
|
||||
"}")
|
||||
self.Menu_Button.setText("")
|
||||
icon5 = QtGui.QIcon()
|
||||
icon5.addPixmap(QtGui.QPixmap(":/icon/Icon/Menu.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Menu_Button.setIcon(icon5)
|
||||
self.Menu_Button.setIconSize(QtCore.QSize(19, 19))
|
||||
icon8 = QtGui.QIcon()
|
||||
icon8.addPixmap(QtGui.QPixmap(":/icon/Menu.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
self.Menu_Button.setIcon(icon8)
|
||||
self.Menu_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Menu_Button.setCheckable(False)
|
||||
self.Menu_Button.setObjectName("Menu_Button")
|
||||
self.Process_widget = QtWidgets.QWidget(self.widget)
|
||||
@@ -1106,7 +1157,7 @@ class Ui_MainWindow(object):
|
||||
self.Process_widget.setStyleSheet("background-color:rgba(255, 255, 255,240);")
|
||||
self.Process_widget.setObjectName("Process_widget")
|
||||
self.Process_Tools_Back = QtWidgets.QPushButton(self.Process_widget)
|
||||
self.Process_Tools_Back.setGeometry(QtCore.QRect(10, 10, 101, 41))
|
||||
self.Process_Tools_Back.setGeometry(QtCore.QRect(20, 10, 101, 41))
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
@@ -1129,14 +1180,15 @@ class Ui_MainWindow(object):
|
||||
" color:rgba(60,60,60,255);\n"
|
||||
"}\n"
|
||||
"")
|
||||
self.Process_Tools_Back.setIcon(icon2)
|
||||
self.Process_Tools_Back.setIcon(icon5)
|
||||
self.Process_Tools_Back.setIconSize(QtCore.QSize(20, 20))
|
||||
self.Process_Tools_Back.setCheckable(False)
|
||||
self.Process_Tools_Back.setObjectName("Process_Tools_Back")
|
||||
self.Process_list = QtWidgets.QListView(self.Process_widget)
|
||||
self.Process_list.setGeometry(QtCore.QRect(30, 60, 611, 361))
|
||||
self.Process_list.setGeometry(QtCore.QRect(40, 60, 591, 361))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(9)
|
||||
self.Process_list.setFont(font)
|
||||
self.Process_list.setStyleSheet("QWidget::item\n"
|
||||
"{\n"
|
||||
@@ -1168,10 +1220,10 @@ class Ui_MainWindow(object):
|
||||
self.Process_list.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
|
||||
self.Process_list.setObjectName("Process_list")
|
||||
self.Process_Total_title = QtWidgets.QLabel(self.Process_widget)
|
||||
self.Process_Total_title.setGeometry(QtCore.QRect(30, 425, 141, 41))
|
||||
self.Process_Total_title.setGeometry(QtCore.QRect(40, 425, 131, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
self.Process_Total_title.setFont(font)
|
||||
@@ -1179,12 +1231,13 @@ class Ui_MainWindow(object):
|
||||
self.Process_Total_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Process_Total_title.setObjectName("Process_Total_title")
|
||||
self.Process_Total_View = QtWidgets.QLineEdit(self.Process_widget)
|
||||
self.Process_Total_View.setGeometry(QtCore.QRect(180, 430, 461, 31))
|
||||
self.Process_Total_View.setGeometry(QtCore.QRect(180, 430, 451, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Process_Total_View.setFont(font)
|
||||
self.Process_Total_View.setText("")
|
||||
self.Process_Total_View.setReadOnly(True)
|
||||
self.Process_Total_View.setObjectName("Process_Total_View")
|
||||
self.Tools_widget = QtWidgets.QWidget(self.widget)
|
||||
@@ -1234,7 +1287,7 @@ class Ui_MainWindow(object):
|
||||
self.System_Process_Manage_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.System_Process_Manage_Button.setFont(font)
|
||||
self.System_Process_Manage_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
@@ -1264,7 +1317,7 @@ class Ui_MainWindow(object):
|
||||
self.Clean_System_Files_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Clean_System_Files_Button.setFont(font)
|
||||
self.Clean_System_Files_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
@@ -1294,7 +1347,7 @@ class Ui_MainWindow(object):
|
||||
self.Repair_System_Files_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Repair_System_Files_Button.setFont(font)
|
||||
self.Repair_System_Files_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
@@ -1324,7 +1377,7 @@ class Ui_MainWindow(object):
|
||||
self.Repair_System_Network_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Repair_System_Network_Button.setFont(font)
|
||||
self.Repair_System_Network_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
@@ -1354,7 +1407,7 @@ class Ui_MainWindow(object):
|
||||
self.Window_Block_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(13)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Window_Block_Button.setFont(font)
|
||||
self.Window_Block_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
@@ -1398,7 +1451,9 @@ class Ui_MainWindow(object):
|
||||
self.high_sensitivity_title.setGeometry(QtCore.QRect(20, 10, 451, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.high_sensitivity_title.setFont(font)
|
||||
self.high_sensitivity_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -1454,7 +1509,9 @@ class Ui_MainWindow(object):
|
||||
self.Language_title.setGeometry(QtCore.QRect(20, 10, 361, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_title.setFont(font)
|
||||
self.Language_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -1487,7 +1544,7 @@ class Ui_MainWindow(object):
|
||||
self.Language_Traditional_Chinese = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Traditional_Chinese.setFont(font)
|
||||
self.Language_Traditional_Chinese.setObjectName("Language_Traditional_Chinese")
|
||||
@@ -1495,7 +1552,7 @@ class Ui_MainWindow(object):
|
||||
self.Language_Simplified_Chinese = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Simplified_Chinese.setFont(font)
|
||||
self.Language_Simplified_Chinese.setObjectName("Language_Simplified_Chinese")
|
||||
@@ -1503,7 +1560,7 @@ class Ui_MainWindow(object):
|
||||
self.Language_English = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_English.setFont(font)
|
||||
self.Language_English.setObjectName("Language_English")
|
||||
@@ -1520,7 +1577,9 @@ class Ui_MainWindow(object):
|
||||
self.cloud_services_title.setGeometry(QtCore.QRect(20, 10, 451, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.cloud_services_title.setFont(font)
|
||||
self.cloud_services_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -1568,7 +1627,7 @@ class Ui_MainWindow(object):
|
||||
self.cloud_services_switch_Button.raise_()
|
||||
self.cloud_services_title.raise_()
|
||||
self.Setting_Back = QtWidgets.QPushButton(self.Setting_widget)
|
||||
self.Setting_Back.setGeometry(QtCore.QRect(30, 10, 101, 41))
|
||||
self.Setting_Back.setGeometry(QtCore.QRect(25, 10, 101, 41))
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
@@ -1591,7 +1650,7 @@ class Ui_MainWindow(object):
|
||||
" color:rgba(60,60,60,255);\n"
|
||||
"}\n"
|
||||
"")
|
||||
self.Setting_Back.setIcon(icon2)
|
||||
self.Setting_Back.setIcon(icon5)
|
||||
self.Setting_Back.setIconSize(QtCore.QSize(20, 20))
|
||||
self.Setting_Back.setCheckable(False)
|
||||
self.Setting_Back.setObjectName("Setting_Back")
|
||||
@@ -1604,7 +1663,9 @@ class Ui_MainWindow(object):
|
||||
self.Add_White_list_title.setGeometry(QtCore.QRect(20, 10, 451, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Add_White_list_title.setFont(font)
|
||||
self.Add_White_list_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -1658,7 +1719,9 @@ class Ui_MainWindow(object):
|
||||
self.Theme_title.setGeometry(QtCore.QRect(20, 10, 351, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(18)
|
||||
font.setPointSize(17)
|
||||
font.setBold(False)
|
||||
font.setWeight(50)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_title.setFont(font)
|
||||
self.Theme_title.setStyleSheet("color: rgb(70,70,70);")
|
||||
@@ -1691,7 +1754,7 @@ class Ui_MainWindow(object):
|
||||
self.Theme_Black = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Black.setFont(font)
|
||||
self.Theme_Black.setObjectName("Theme_Black")
|
||||
@@ -1699,7 +1762,7 @@ class Ui_MainWindow(object):
|
||||
self.Theme_White = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_White.setFont(font)
|
||||
self.Theme_White.setObjectName("Theme_White")
|
||||
@@ -1707,7 +1770,7 @@ class Ui_MainWindow(object):
|
||||
self.Theme_Yellow = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Yellow.setFont(font)
|
||||
self.Theme_Yellow.setObjectName("Theme_Yellow")
|
||||
@@ -1715,14 +1778,14 @@ class Ui_MainWindow(object):
|
||||
self.Theme_Blue = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
self.Theme_Blue.setFont(font)
|
||||
self.Theme_Blue.setObjectName("Theme_Blue")
|
||||
self.gridLayout_2.addWidget(self.Theme_Blue, 2, 0, 1, 1)
|
||||
self.Theme_Red = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Red.setFont(font)
|
||||
self.Theme_Red.setObjectName("Theme_Red")
|
||||
@@ -1730,7 +1793,7 @@ class Ui_MainWindow(object):
|
||||
self.Theme_Green = QtWidgets.QRadioButton(self.gridLayoutWidget_2)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setPointSize(11)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Green.setFont(font)
|
||||
self.Theme_Green.setObjectName("Theme_Green")
|
||||
@@ -1738,16 +1801,16 @@ class Ui_MainWindow(object):
|
||||
self.Theme_illustrate.raise_()
|
||||
self.Language_Choose_widget_2.raise_()
|
||||
self.Theme_title.raise_()
|
||||
self.State_widget.raise_()
|
||||
self.Setting_widget.raise_()
|
||||
self.About_widget.raise_()
|
||||
self.Tools_widget.raise_()
|
||||
self.widget_2.raise_()
|
||||
self.Process_widget.raise_()
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.Window_widget.raise_()
|
||||
self.Navigation_Bar.raise_()
|
||||
self.Protection_widget.raise_()
|
||||
self.About_widget.raise_()
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.Tools_widget.raise_()
|
||||
self.Setting_widget.raise_()
|
||||
self.State_widget.raise_()
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
|
||||
self.retranslateUi(MainWindow)
|
||||
@@ -1783,7 +1846,7 @@ class Ui_MainWindow(object):
|
||||
self.Disk_Scan_Button.setText(_translate("MainWindow", "全盤掃描"))
|
||||
self.Virus_Scan_Solve_Button.setText(_translate("MainWindow", "立即解決"))
|
||||
self.Virus_Scan_Break_Button.setText(_translate("MainWindow", "停止掃描"))
|
||||
self.State_title.setText(_translate("MainWindow", "這台電腦目前很安全"))
|
||||
self.State_title.setText(_translate("MainWindow", "This Device Has Been Protect"))
|
||||
self.State_log.setText(_translate("MainWindow", "日誌:"))
|
||||
self.About_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.PYAS_Version.setText(_translate("MainWindow", "PYAS v2.3.5"))
|
||||
@@ -1792,7 +1855,7 @@ class Ui_MainWindow(object):
|
||||
self.Core_Made_title.setText(_translate("MainWindow", "核心製作:"))
|
||||
self.Core_Made_Name.setText(_translate("MainWindow", "PYAS_Dev#0629"))
|
||||
self.Testers_title.setText(_translate("MainWindow", "測試人員:"))
|
||||
self.Testers_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
|
||||
self.Testers_Name.setText(_translate("MainWindow", "PYAS_Dev#0629"))
|
||||
self.PYAS_URL_title.setText(_translate("MainWindow", "官方網站:"))
|
||||
self.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://xiaomi69ai.wixsite.com/pyas\"><span style=\" text-decoration: underline; color:#0000ff;\">https://xiaomi69ai.wixsite.com/pyas</span></a></p></body></html>"))
|
||||
self.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
|
||||
+8
-6
@@ -3,19 +3,21 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"軟體":"软件","檔案":"文件","確定":"确认","設定":"设置","關於":"关于",
|
||||
"錯誤":"错误","實時":"实时","發現":"发现","關閉":"关闭","裝置":"设备",
|
||||
"總數":"总数","註冊":"注册","圖標":"图标","路徑":"路径","網路":"网络",
|
||||
"位元":"字节","彈窗":"弹窗","增":"增","單":"单","簽":"签","無":"无",
|
||||
"位元":"字节","彈窗":"弹窗","靈敏":"敏感","增":"增","單":"单","簽":"签",
|
||||
"項":"项","掃":"扫","試":"试","黃":"黄","嗎":"吗","防":"保","鑰":"钥",
|
||||
"當":"当","後":"后","護":"护","導":"导","區":"区","復":"复","攔":"拦",
|
||||
"請":"请","統":"统","刪":"删","進":"进","個":"个","選":"选","啟":"启",
|
||||
"監":"监","並":"并","徑":"径","盤":"盘","隱":"隐","動":"动","狀":"状",
|
||||
"誌":"志","靈":"灵","這":"这","會":"会","題":"题","擇":"择","語":"语",
|
||||
"誌":"志","這":"这","會":"会","題":"题","擇":"择","語":"语","無":"无",
|
||||
"顯":"显","變":"变","戶":"户","碼":"码","雲":"云","訂":"订","稱":"称",
|
||||
"類":"类","輸":"输","執":"执","數":"数","尋":"寻","網":"网","詢":"询",
|
||||
"製":"制","員":"员","許":"许","條":"条","藍":"蓝","紅":"红","綠":"绿",
|
||||
"態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关","強":"强",},
|
||||
"態":"态","務":"务","連":"连","檢":"检","測":"测","關":"关","強":"强",
|
||||
"驅":"驱",},
|
||||
"en_US": {"已開啟":"On","已關閉":"Off","已开启":"On","已关闭":"Off",",":", ",
|
||||
"立即刪除":"Delete Now","安全模式":"Safe Mode","官方網站":"Website",
|
||||
"許可條款":"License Terms","可疑":"Suspicious ","惡意軟體":"Malware ",
|
||||
"可疑檔案":"Suspicious ","惡意軟體":"Malware ","勒索軟體":"Ransom ",
|
||||
"許可條款":"License Terms","惡意":"Malicious","可疑":"Suspicious",
|
||||
"啟用":"Enable ","禁用":"Disable ","正在初始化中":"Initializing ",
|
||||
"正在掃描":"Scanning ","正在刪除":"Deleting ","最小化到":"Minimize To ",
|
||||
"確定要":"Sure Want To ","靈敏度":"Sensitivity ","更新":"Update",
|
||||
@@ -43,6 +45,6 @@ translations = {"zh_TW": {"已开启":"已開啟","已关闭":"已關閉","On":"
|
||||
"增加":"Add","移除":"Delete","項目":"Items ","生成":"Create ",
|
||||
"開啟":"Open ","您":"You ","此":"This ","並":"And ","未":"Not ",
|
||||
"高":"High ","新":"New ","和":"And ","會":"Can ","密鑰":"Key ",
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","立即":"",
|
||||
"日誌":"Log","已":"Has ","彈窗":"Window ","要":"To ","驅動":"Drive ",
|
||||
"的":"","顯示":"","個":"","嗎":"","中":"","了":"","行":"","稱":"",
|
||||
" ":" "}}
|
||||
"檢測":"Detect ","立即":""," ":" "}}
|
||||
@@ -1 +0,0 @@
|
||||
function_list = [['_CorExeMain'], ['GetProcessHeap', 'RtlUnwind', 'RaiseException', 'HeapSize', 'TerminateProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'HeapDestroy', 'HeapCreate', 'VirtualFree', 'Sleep', 'GetStdHandle', 'GetTimeZoneInformation', 'GetACP', 'SetHandleCount', 'GetFileType', 'GetStartupInfoA', 'GetCommandLineA', 'GetEnvironmentStrings', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'QueryPerformanceCounter', 'GetSystemTimeAsFileTime', 'LCMapStringA', 'LCMapStringW', 'GetConsoleCP', 'GetConsoleMode', 'GetStringTypeA', 'GetStringTypeW', 'SetStdHandle', 'WriteConsoleA', 'GetConsoleOutputCP', 'WriteConsoleW', 'GetDateFormatA', 'GetTimeFormatA', 'GetDriveTypeA', 'SetEnvironmentVariableA', 'HeapReAlloc', 'VirtualAlloc', 'SetCurrentDirectoryA', 'HeapAlloc', 'HeapFree', 'GetTickCount', 'GetCurrentDirectoryA', 'LocalFileTimeToFileTime', 'CreateFileA', 'GetShortPathNameA', 'GetVolumeInformationA', 'GetCurrentProcess', 'DuplicateHandle', 'GetFileSize', 'SetEndOfFile', 'UnlockFile', 'LockFile', 'FlushFileBuffers', 'SetFilePointer', 'WriteFile', 'ReadFile', 'DeleteFileA', 'MoveFileA', 'GetOEMCP', 'GetCPInfo', 'InterlockedIncrement', 'SystemTimeToFileTime', 'GetThreadLocale', 'GlobalFlags', 'TlsFree', 'DeleteCriticalSection', 'LocalReAlloc', 'TlsSetValue', 'TlsAlloc', 'InitializeCriticalSection', 'GlobalHandle', 'GlobalReAlloc', 'EnterCriticalSection', 'TlsGetValue', 'LeaveCriticalSection', 'LocalAlloc', 'CloseHandle', 'GetPrivateProfileStringA', 'WritePrivateProfileStringA', 'GetPrivateProfileIntA', 'GetCurrentProcessId', 'GetCurrentThread', 'ConvertDefaultLocale', 'GetModuleFileNameA', 'EnumResourceLanguagesA', 'GetLocaleInfoA', 'lstrcmpA', 'GetDiskFreeSpaceA', 'GetFullPathNameA', 'GetTempFileNameA', 'GetFileTime', 'SetFileTime', 'GetFileAttributesA', 'FreeResource', 'GetCurrentThreadId', 'GlobalGetAtomNameA', 'GlobalAddAtomA', 'GlobalFindAtomA', 'GlobalDeleteAtom', 'lstrcmpW', 'GetVersionExA', 'GlobalFree', 'GlobalAlloc', 'FormatMessageA', 'LocalFree', 'GlobalLock', 'GlobalUnlock', 'MulDiv', 'FindFirstFileA', 'FileTimeToLocalFileTime', 'FileTimeToSystemTime', 'FindNextFileA', 'FindClose', 'FreeLibrary', 'InterlockedDecrement', 'LockResource', 'SizeofResource', 'LoadResource', 'FindResourceA', 'ExitProcess', 'GetVersion', 'CompareStringA', 'GetModuleHandleA', 'LoadLibraryA', 'GetProcAddress', 'lstrcmpiA', 'SetLastError', 'GetLastError', 'InterlockedExchange', 'GetStringTypeExA', 'MultiByteToWideChar', 'CompareStringW', 'WideCharToMultiByte', 'lstrlenA', 'FreeEnvironmentStringsA', 'GetComputerNameA', 'CopyAcceleratorTableA', 'CreateMenu', 'PostThreadMessageA', 'GetTabbedTextExtentA', 'RegisterClipboardFormatA', 'GetSysColorBrush', 'UnregisterClassA', 'LoadCursorA', 'DestroyCursor', 'SetCursorPos', 'SetCapture', 'RedrawWindow', 'InflateRect', 'UnpackDDElParam', 'ReuseDDElParam', 'LoadMenuA', 'DestroyMenu', 'ReleaseCapture', 'LoadAcceleratorsA', 'InsertMenuItemA', 'CreatePopupMenu', 'BringWindowToTop', 'SetMenu', 'TranslateAcceleratorA', 'IsZoomed', 'WindowFromPoint', 'KillTimer', 'SetTimer', 'SetRect', 'SetParent', 'GetSystemMenu', 'DeleteMenu', 'SetRectEmpty', 'IsRectEmpty', 'GetDesktopWindow', 'CreateDialogIndirectParamA', 'GetNextDlgTabItem', 'EndDialog', 'GetMessageA', 'TranslateMessage', 'GetActiveWindow', 'GetCursorPos', 'ValidateRect', 'GetWindowThreadProcessId', 'ShowOwnedPopups', 'SetCursor', 'PostQuitMessage', 'IsWindowEnabled', 'SetWindowTextA', 'IsDialogMessageA', 'SetDlgItemTextA', 'RegisterWindowMessageA', 'LoadIconA', 'SendDlgItemMessageA', 'WinHelpA', 'GetCapture', 'SetWindowsHookExA', 'CallNextHookEx', 'GetClassNameA', 'SetPropA', 'GetPropA', 'RemovePropA', 'SetFocus', 'GetWindowTextLengthA', 'GetWindowTextA', 'GetLastActivePopup', 'SetActiveWindow', 'DispatchMessageA', 'BeginDeferWindowPos', 'EndDeferWindowPos', 'GetDlgItem', 'GetTopWindow', 'DestroyWindow', 'GetMessageTime', 'GetMessagePos', 'PeekMessageA', 'MapWindowPoints', 'ScrollWindow', 'TrackPopupMenu', 'GetKeyState', 'SetScrollRange', 'GetScrollRange', 'SetScrollPos', 'GetScrollPos', 'SetForegroundWindow', 'ShowScrollBar', 'IsWindowVisible', 'GetMenu', 'PostMessageA', 'MessageBoxA', 'CreateWindowExA', 'GetClassInfoExA', 'GetClassInfoA', 'RegisterClassA', 'EqualRect', 'DeferWindowPos', 'GetScrollInfo', 'SetScrollInfo', 'PtInRect', 'DefWindowProcA', 'CallWindowProcA', 'SetWindowPos', 'OffsetRect', 'IntersectRect', 'SystemParametersInfoA', 'GetWindowPlacement', 'GetWindowRect', 'GetSystemMetrics', 'GetWindow', 'GetMenuStringA', 'AppendMenuA', 'GetMenuItemID', 'InsertMenuA', 'GetMenuItemCount', 'GetSubMenu', 'RemoveMenu', 'GetSysColor', 'EndPaint', 'BeginPaint', 'GetWindowDC', 'ClientToScreen', 'ScreenToClient', 'GrayStringA', 'DrawTextExA', 'DrawTextA', 'TabbedTextOutA', 'FillRect', 'SetWindowRgn', 'DrawIcon', 'FindWindowA', 'LockWindowUpdate', 'GetDCEx', 'DestroyIcon', 'GetClassLongA', 'GetMenuItemInfoA', 'GetDlgCtrlID', 'IsChild', 'InvalidateRect', 'IsIconic', 'AdjustWindowRectEx',Line truncated
|
||||
+10759
File diff suppressed because it is too large.
Load diff
-4109
File diff suppressed because it is too large.
Load diff
@@ -1,7 +1,7 @@
|
||||
import pyinstaller_versionfile
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='2.7.6',
|
||||
version='2.7.9',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
@@ -15,6 +15,6 @@ Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
|
||||
os, sys, time, json, psutil, ctypes, requests, subprocess, win32file, win32api, win32con, elementpath, hashlib, pefile, threading, PyQt5, PYAS_Language, PYAS_Model, PYAS_UI
|
||||
|
||||
## Special Thanks
|
||||
360, Wix, VirusShare, mtkiao129, LenStevens
|
||||
360, Wix, VirusShare, mtkiao129, LenStevens, 0607zzy
|
||||
|
||||
Copyright© 2020~2023 PYAS Security By 87owo
|
||||
Reference in new issue
Block a user