Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4bd8c4584 | ||
|
|
bc6702acc4 | ||
|
|
21b12114ab | ||
|
|
d571a18f7b | ||
|
|
2233f3a8f2 |
No files matched your search
@@ -1,5 +1,5 @@
|
||||
try:
|
||||
import os, time, sys, psutil, socket, subprocess, platform, cryptocode, webbrowser, threading, pygame, datetime,configparser
|
||||
import os, time, sys, psutil, socket, subprocess, platform, cryptocode, threading, pygame, datetime, configparser, webbrowser
|
||||
from PYAS_English import english_list
|
||||
from pefile import PE
|
||||
from hashlib import md5, sha1, sha256
|
||||
@@ -91,7 +91,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Look_for_File_Back.clicked.connect(lambda:self.Back_To_More_Tools(self.ui.Look_for_File_widget))
|
||||
self.ui.Encryption_Text_Button.clicked.connect(lambda:self.Change_Tools(self.ui.Encryption_Text_widget))
|
||||
self.ui.Encryption_Text_Back.clicked.connect(lambda:self.Back_To_More_Tools(self.ui.Encryption_Text_widget))
|
||||
self.ui.Decrypt_Text_Button.clicked.connect(lambda:self.Change_Tools(self.ui.Encryption_Text_widget))
|
||||
#self.ui.Decrypt_Text_Button.clicked.connect(lambda:self.Change_Tools(self.ui.Encryption_Text_widget))
|
||||
self.ui.Customize_REG_Command_Back.clicked.connect(lambda:self.Back_To_More_Tools(self.ui.Customize_REG_Command_widget))
|
||||
self.ui.Customize_REG_Command_Button.clicked.connect(lambda:self.Change_Tools(self.ui.Customize_REG_Command_widget))
|
||||
self.ui.Change_Users_Password_Button.clicked.connect(lambda:self.Change_Tools(self.ui.Change_Users_Password_widget))
|
||||
@@ -178,46 +178,58 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.ui.Languahe_English.setChecked(True)
|
||||
try:
|
||||
if self.ini_config.getint("Setting","high_sensitivity") == 1:
|
||||
self.show_virus_scan_progress_bar = 1
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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);
|
||||
}
|
||||
""")
|
||||
if self.ini_config.get("Setting","language") == "zh_TW":
|
||||
self.show_virus_scan_progress_bar = 1
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已開啟"))#####
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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);
|
||||
}
|
||||
""")
|
||||
else:
|
||||
self.show_virus_scan_progress_bar = 1
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已开启"))#####
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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);
|
||||
}
|
||||
""")
|
||||
else:
|
||||
self.show_virus_scan_progress_bar = 0
|
||||
except:
|
||||
self.show_virus_scan_progress_bar = 0
|
||||
self.ui.License_terms.setText('''PYTHON ANTIVIRUS SOFTWARE LICENSE TERMS V1.0
|
||||
#Use PYAS antivirus software and services means that you accept these terms. If you do not accept them, please do not use them.
|
||||
#Use PYAS antivirus software and services, if you comply with the PYAS antivirus software license terms, you will have the following rights.
|
||||
1.License right to use PYAS antivirus software.
|
||||
You can use the software on your device or use a copy of the software to design and develop the software.
|
||||
The software is forbidden to be sold or copied by others without permission. You can only use it to design and develop the software.
|
||||
2.Obtain genuine PYAS antivirus software.
|
||||
You can get the software directly from the official website of PYAS antivirus software, or you can get it through the official GitHub.
|
||||
If you have obtained this software from a third-party application store that has not been authorized by the official website of PYAS antivirus software,
|
||||
Then we cannot guarantee that the software can be used normally, and we are not responsible for any related losses caused to you.
|
||||
Official website: https://pyantivirus.wixsite.com/pyas
|
||||
Official Github: https://github.com/87owo/PYAS
|
||||
3.Personal information and privacy protection.
|
||||
You can register your email and name on the official website of PYAS antivirus software, which will be used for feedback contact.
|
||||
PYAS antivirus software will obtain the computer system version and basic information, which will be used to optimize the operation of the software.
|
||||
The security of your equipment and personal data is very important to us, and we will never leak any of your personal information.
|
||||
4.Permission required to use PYAS antivirus software.
|
||||
System administrator permissions
|
||||
Turn on target site permissions
|
||||
File read and write management permissions
|
||||
Command prompt execution permission
|
||||
Login editor management authority''')
|
||||
self.ui.License_terms.setText('''PYAS Antivirus Software Security License Terms V2.0
|
||||
=====================================================
|
||||
#Use of PYAS antivirus software and services means that you accept these terms, if you do not accept, please do not use PYAS services.
|
||||
=====================================================
|
||||
1. Copyright notice
|
||||
You can use this software for free, or use the open source code of this software for research, but imitation and sales of this software are strictly prohibited.
|
||||
=====================================================
|
||||
2. Legal Requirements
|
||||
Please abide by the current regional laws and regulations, it is strictly prohibited to use PYAS to do illegal things.
|
||||
=====================================================
|
||||
3. User privacy protection
|
||||
PYAS does not collect any personal privacy data, except for the email address required to fill in the feedback.
|
||||
=====================================================
|
||||
4. Permission is required to use PYAS
|
||||
System Administrator, File management, And command execution rights.
|
||||
=====================================================
|
||||
5. Get genuine PYAS
|
||||
If you do not download from the official website, we cannot guarantee the security of your data, and we are not responsible for any loss caused.''')
|
||||
self.effect_shadow = QtWidgets.QGraphicsDropShadowEffect(self)
|
||||
self.effect_shadow.setOffset(0,0) # 偏移
|
||||
self.effect_shadow.setBlurRadius(10) # 阴影半径
|
||||
@@ -263,9 +275,9 @@ Login editor management authority''')
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
if pyas_key():
|
||||
self.ui.State_output.clear()
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
else:
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3 (Security Key Error)"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6 (Security Key Error)"))
|
||||
now_time = datetime.datetime.now()
|
||||
self.ui.State_output.clear()
|
||||
self.ui.State_output.append(str(now_time.strftime('%Y/%m/%d %H:%M:%S')) + ' > [Warning] PYAS Security Key Error')
|
||||
@@ -282,7 +294,7 @@ Login editor management authority''')
|
||||
self.ui.Virus_Scan_Solve_Button.setText(_translate("MainWindow", "Solve Now"))
|
||||
self.ui.Virus_Scan_Break_Button.setText(_translate("MainWindow", "Stop Scan"))
|
||||
self.ui.Protection_title.setText(_translate("MainWindow", "Real-time protection"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "Enable this option to monitor and remove malware in the system in real time"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "Enable this option to monitor and remove malware in the system in real time."))
|
||||
if self.ui.Protection_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Protection_switch_Button.setText(_translate("MainWindow", "On"))
|
||||
elif self.ui.Protection_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -296,13 +308,13 @@ Login editor management authority''')
|
||||
self.ui.State_log.setText(_translate("MainWindow", "Log:"))
|
||||
self.ui.System_Tools_Button.setText(_translate("MainWindow", "System Tools"))
|
||||
self.ui.Privacy_Tools_Button.setText(_translate("MainWindow", "Privacy Tools"))
|
||||
self.ui.Develop_Tools_Button.setText(_translate("MainWindow", "Dev Tools"))
|
||||
self.ui.Develop_Tools_Button.setText(_translate("MainWindow", "Devs Tools"))
|
||||
self.ui.More_Tools_Button.setText(_translate("MainWindow", "More Tools"))
|
||||
self.ui.More_Tools_Back_Button.setText(_translate("MainWindow", "Tools>"))
|
||||
self.ui.System_Process_Manage_Button.setText(_translate("MainWindow", "Process Manager"))
|
||||
self.ui.Repair_System_Permission_Button.setText(_translate("MainWindow", "Repair Permission"))
|
||||
self.ui.Repair_System_Files_Button.setText(_translate("MainWindow", "Repair System Files"))
|
||||
self.ui.Clean_System_Files_Button.setText(_translate("MainWindow", "Clean system files"))
|
||||
self.ui.Clean_System_Files_Button.setText(_translate("MainWindow", "Clean System Files"))
|
||||
self.ui.Enable_Safe_Mode_Button.setText(_translate("MainWindow", "Enable Safe Mode"))
|
||||
self.ui.Disable_Safe_Mode_Button.setText(_translate("MainWindow", "Disable Safe Mode"))
|
||||
self.ui.System_Info_Button.setText(_translate("MainWindow", "System Information"))
|
||||
@@ -310,15 +322,15 @@ Login editor management authority''')
|
||||
self.ui.Privacy_Tools_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.Delete_Private_File_Button.setText(_translate("MainWindow", "Delete Private File"))
|
||||
self.ui.Develop_Tools_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.Customize_REG_Command_Button.setText(_translate("MainWindow", "Customize Regedit"))
|
||||
self.ui.Customize_CMD_Command_Button.setText(_translate("MainWindow", "Customize Command"))
|
||||
self.ui.Customize_REG_Command_Button.setText(_translate("MainWindow", "Customize REG"))
|
||||
self.ui.Customize_CMD_Command_Button.setText(_translate("MainWindow", "Customize CMD"))
|
||||
self.ui.Analyze_EXE_hash_Button.setText(_translate("MainWindow", "Analyze File Hash"))
|
||||
self.ui.Analyze_EXE_Bit_Button.setText(_translate("MainWindow", "Analyze File Bits"))
|
||||
self.ui.Analyze_EXE_Funtion_Button.setText(_translate("MainWindow", "Analyze File Func"))
|
||||
self.ui.More_Tools_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.Look_for_File_Button.setText(_translate("MainWindow", "Looking For File"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "Encrypt Message"))
|
||||
self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "Decrypt Message"))
|
||||
self.ui.Look_for_File_Button.setText(_translate("MainWindow", "Looking For Profiles"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "Encrypt Decrypt Text"))
|
||||
#self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "Decrypt Message"))
|
||||
self.ui.Change_Users_Password_Button.setText(_translate("MainWindow", "Change User Password"))
|
||||
self.ui.Internet_location_Query_Button.setText(_translate("MainWindow", "Internet Location Query"))
|
||||
self.ui.Rework_Network_Configuration_Button.setText(_translate("MainWindow", "Rework Network Config"))
|
||||
@@ -338,7 +350,7 @@ Login editor management authority''')
|
||||
self.ui.Encryption_Text_title.setText(_translate("MainWindow", "Before Encrypt & Decrypt"))
|
||||
self.ui.Decrypt_Text_Run_Button.setText(_translate("MainWindow", "Encrypt"))
|
||||
self.ui.About_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
self.ui.GUI_Made_title.setText(_translate("MainWindow", "GUI Make:"))
|
||||
self.ui.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
|
||||
self.ui.Core_Made_title.setText(_translate("MainWindow", "Core Make:"))
|
||||
@@ -347,7 +359,7 @@ Login editor management authority''')
|
||||
self.ui.Testers_Name.setText(_translate("MainWindow", "mtkiao129#3921, PYAS_Dev#0629"))
|
||||
self.ui.PYAS_URL_title.setText(_translate("MainWindow", "Website:"))
|
||||
self.ui.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://pyantivirus.wixsite.com/pyas\"><span style= \" text-decoration: underline; color:#0000ff;\">https://pyantivirus.wixsite.com/pyas</span></a></p></body></html>"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
|
||||
self.ui.PYAE_Version.setText(_translate("MainWindow", "PYAE V1.2.6"))
|
||||
self.ui.Change_Users_Password_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.Change_Users_Password_New_Password_title.setText(_translate("MainWindow", "New password:"))
|
||||
@@ -357,11 +369,11 @@ Login editor management authority''')
|
||||
self.ui.Value_Path_title.setText(_translate("MainWindow", "Value Path:"))
|
||||
self.ui.Value_Name_title.setText(_translate("MainWindow", "Value Name:"))
|
||||
self.ui.Value_Type_title.setText(_translate("MainWindow", "Value Type:"))
|
||||
self.ui.Value_Data_title.setText(_translate("MainWindow", "Value data:"))
|
||||
self.ui.Value_Data_title.setText(_translate("MainWindow", "Value Data:"))
|
||||
self.ui.Customize_REG_Command_Run_Button.setText(_translate("MainWindow", "OK"))
|
||||
self.ui.Value_HEKY_title.setText(_translate("MainWindow", "Value HEKY:"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_title.setText(_translate("MainWindow", "High Sensitivity Mode"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "Turning this option on increases sensitivity when scanning, but it may also lead to manslaughter."))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "Enable this option can improve scanning sensitivity, but it can also cause manslaughter."))
|
||||
if self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(_translate("MainWindow", "On"))
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -371,7 +383,7 @@ Login editor management authority''')
|
||||
self.ui.Setting_Back.setText(_translate("MainWindow", "Back"))
|
||||
self.ui.Language_title.setText(_translate("MainWindow", "Language"))
|
||||
self.ui.Language_illustrate.setText(_translate("MainWindow", "Please select language"))
|
||||
self.ui.License_terms_title.setText(_translate("MainWindow", "License terms:"))
|
||||
self.ui.License_terms_title.setText(_translate("MainWindow", "License Terms:"))
|
||||
self.ui.Theme_title.setText(_translate("MainWindow", "Color Rendering Theme"))
|
||||
self.ui.Theme_illustrate.setText(_translate("MainWindow", "Please select a theme"))
|
||||
self.ui.Theme_White.setText(_translate("MainWindow", "White"))
|
||||
@@ -385,9 +397,9 @@ Login editor management authority''')
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
if pyas_key():
|
||||
self.ui.State_output.clear()
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
else:
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3 (安全密钥错误)"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6 (安全密钥错误)"))
|
||||
now_time = datetime.datetime.now()
|
||||
self.ui.State_output.clear()
|
||||
self.ui.State_output.append(str(now_time.strftime('%Y/%m/%d %H:%M:%S')) + ' > [警告] PYAS 安全密钥错误')
|
||||
@@ -404,7 +416,7 @@ Login editor management authority''')
|
||||
self.ui.Virus_Scan_Solve_Button.setText(_translate("MainWindow", "立即解决"))
|
||||
self.ui.Virus_Scan_Break_Button.setText(_translate("MainWindow", "停止扫描"))
|
||||
self.ui.Protection_title.setText(_translate("MainWindow", "实时防护"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "启用该选项可以实时监控系统的恶意软件并清除"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "启用该选项可以实时监控进程中的恶意软体并清除。"))
|
||||
if self.ui.Protection_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Protection_switch_Button.setText(_translate("MainWindow", "已开启"))
|
||||
elif self.ui.Protection_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -439,8 +451,8 @@ Login editor management authority''')
|
||||
self.ui.Analyze_EXE_Funtion_Button.setText(_translate("MainWindow", "分析文件函数"))
|
||||
self.ui.More_Tools_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.Look_for_File_Button.setText(_translate("MainWindow", "寻找本机档案"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "加密文字讯息"))
|
||||
self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "解密文字讯息"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "加密解密文字"))
|
||||
#self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "解密文字讯息"))
|
||||
self.ui.Change_Users_Password_Button.setText(_translate("MainWindow", "变更用户密码"))
|
||||
self.ui.Internet_location_Query_Button.setText(_translate("MainWindow", "网路位置查询"))
|
||||
self.ui.Rework_Network_Configuration_Button.setText(_translate("MainWindow", "重置网路配置"))
|
||||
@@ -460,7 +472,7 @@ Login editor management authority''')
|
||||
self.ui.Encryption_Text_title.setText(_translate("MainWindow", "加密&解密前"))
|
||||
self.ui.Decrypt_Text_Run_Button.setText(_translate("MainWindow", "解密"))
|
||||
self.ui.About_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
self.ui.GUI_Made_title.setText(_translate("MainWindow", "介面制作:"))
|
||||
self.ui.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
|
||||
self.ui.Core_Made_title.setText(_translate("MainWindow", "核心制作:"))
|
||||
@@ -469,7 +481,7 @@ Login editor management authority''')
|
||||
self.ui.Testers_Name.setText(_translate("MainWindow", "mtkiao129#3921, PYAS_Dev#0629"))
|
||||
self.ui.PYAS_URL_title.setText(_translate("MainWindow", "官方网站:"))
|
||||
self.ui.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://pyantivirus.wixsite.com/pyas\"><span style=\" text-decoration: underline; color:#0000ff;\">https://pyantivirus.wixsite.com/pyas</span></a></p></body></html>"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
|
||||
self.ui.PYAE_Version.setText(_translate("MainWindow", "PYAE V1.2.6"))
|
||||
self.ui.Change_Users_Password_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.Change_Users_Password_New_Password_title.setText(_translate("MainWindow", "新密码:"))
|
||||
@@ -483,7 +495,7 @@ Login editor management authority''')
|
||||
self.ui.Customize_REG_Command_Run_Button.setText(_translate("MainWindow", "确定"))
|
||||
self.ui.Value_HEKY_title.setText(_translate("MainWindow", "值HEKY:"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_title.setText(_translate("MainWindow", "高灵敏度模式"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "开启此选项后可提高扫描时的灵敏度,但这也可能会导致误杀。"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "启用该选项可以提高扫描灵敏度,但这也可能会造成误杀。"))
|
||||
if self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(_translate("MainWindow", "已开启"))
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -508,9 +520,9 @@ Login editor management authority''')
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
if pyas_key():
|
||||
self.ui.State_output.clear()
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
else:
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.3 (安全密鑰錯誤)"))
|
||||
self.ui.Window_title.setText(_translate("MainWindow", "PYAS V2.3.6 (安全密鑰錯誤)"))
|
||||
now_time = datetime.datetime.now()
|
||||
self.ui.State_output.clear()
|
||||
self.ui.State_output.append(str(now_time.strftime('%Y/%m/%d %H:%M:%S')) + ' > [警告] PYAS 安全密鑰錯誤')
|
||||
@@ -527,7 +539,7 @@ Login editor management authority''')
|
||||
self.ui.Virus_Scan_Solve_Button.setText(_translate("MainWindow", "立即解決"))
|
||||
self.ui.Virus_Scan_Break_Button.setText(_translate("MainWindow", "停止掃描"))
|
||||
self.ui.Protection_title.setText(_translate("MainWindow", "實時防護"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "啟用該選項可以實時監控系統的惡意軟體並清除"))
|
||||
self.ui.Protection_illustrate.setText(_translate("MainWindow", "啟用該選項可以實時監控進程中的惡意軟體並清除。"))
|
||||
if self.ui.Protection_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Protection_switch_Button.setText(_translate("MainWindow", "已開啟"))
|
||||
elif self.ui.Protection_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -562,8 +574,8 @@ Login editor management authority''')
|
||||
self.ui.Analyze_EXE_Funtion_Button.setText(_translate("MainWindow", "分析文件函數"))
|
||||
self.ui.More_Tools_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.Look_for_File_Button.setText(_translate("MainWindow", "尋找本機檔案"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "加密文字訊息"))
|
||||
self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "解密文字訊息"))
|
||||
self.ui.Encryption_Text_Button.setText(_translate("MainWindow", "加密解密文字"))
|
||||
#self.ui.Decrypt_Text_Button.setText(_translate("MainWindow", "解密文字訊息"))
|
||||
self.ui.Change_Users_Password_Button.setText(_translate("MainWindow", "變更用戶密碼"))
|
||||
self.ui.Internet_location_Query_Button.setText(_translate("MainWindow", "網路位置查詢"))
|
||||
self.ui.Rework_Network_Configuration_Button.setText(_translate("MainWindow", "重置網路配置"))
|
||||
@@ -583,7 +595,7 @@ Login editor management authority''')
|
||||
self.ui.Encryption_Text_title.setText(_translate("MainWindow", "加密&解密前"))
|
||||
self.ui.Decrypt_Text_Run_Button.setText(_translate("MainWindow", "解密"))
|
||||
self.ui.About_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.3"))
|
||||
self.ui.PYAS_Version.setText(_translate("MainWindow", "PYAS V2.3.6"))
|
||||
self.ui.GUI_Made_title.setText(_translate("MainWindow", "介面製作:"))
|
||||
self.ui.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
|
||||
self.ui.Core_Made_title.setText(_translate("MainWindow", "核心製作:"))
|
||||
@@ -592,7 +604,7 @@ Login editor management authority''')
|
||||
self.ui.Testers_Name.setText(_translate("MainWindow", "mtkiao129#3921, PYAS_Dev#0629"))
|
||||
self.ui.PYAS_URL_title.setText(_translate("MainWindow", "官方網站:"))
|
||||
self.ui.PYAS_URL.setText(_translate("MainWindow", "<html><head/><body><p><a href=\"https://pyantivirus.wixsite.com/pyas\"><span style=\" text-decoration: underline; color:#0000ff;\">https://pyantivirus.wixsite.com/pyas</span></a></p></body></html>"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS"))
|
||||
self.ui.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
|
||||
self.ui.PYAE_Version.setText(_translate("MainWindow", "PYAE V1.2.6"))
|
||||
self.ui.Change_Users_Password_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.ui.Change_Users_Password_New_Password_title.setText(_translate("MainWindow", "新密碼:"))
|
||||
@@ -606,7 +618,7 @@ Login editor management authority''')
|
||||
self.ui.Customize_REG_Command_Run_Button.setText(_translate("MainWindow", "確定"))
|
||||
self.ui.Value_HEKY_title.setText(_translate("MainWindow", "值HEKY:"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_title.setText(_translate("MainWindow", "高靈敏度模式"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "開啟此選項後可提高掃描時的靈敏度,但這也可能會導致誤殺。"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "啟用該選項可以提高掃描靈敏度,但這也可能會造成誤殺。"))
|
||||
if self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(_translate("MainWindow", "已開啟"))
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已开启"):
|
||||
@@ -709,7 +721,7 @@ Login editor management authority''')
|
||||
self.timer.stop()
|
||||
self.timer.deleteLater()
|
||||
self.timer = QTimer()
|
||||
self.timer.setInterval(0.001)
|
||||
self.timer.setInterval(0)#0.001)
|
||||
self.timer.timeout.connect(timeout)
|
||||
self.timer.start()
|
||||
########################################
|
||||
@@ -898,7 +910,7 @@ Login editor management authority''')
|
||||
else:
|
||||
return True
|
||||
except:
|
||||
pass
|
||||
return False
|
||||
#定義紀錄掃描
|
||||
def pyas_scan_write_en(self,file):
|
||||
try:
|
||||
@@ -1023,76 +1035,38 @@ Login editor management authority''')
|
||||
except:
|
||||
pass
|
||||
if file != "":
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.Virus_Scan = 1
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
QApplication.processEvents()
|
||||
try:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.Virus_Scan = 1
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
QApplication.processEvents()
|
||||
with open('Library/PYAE/Hashes/Viruslist.md5','r') as fp:
|
||||
rfp = fp.read()
|
||||
with open('Library/PYAE/Function/Viruslist.func','r') as fn:
|
||||
rfn = fn.read()
|
||||
except:
|
||||
rfp = """"""
|
||||
rfn = """b'RegQueryValueExW'
|
||||
b'RegOpenKeyExW'
|
||||
b'RegOpenCurrentUser'
|
||||
b'RegDeleteKeyW'
|
||||
b'RegDeleteValueW'
|
||||
b'RegCloseKey'
|
||||
b'RegCreateKeyExW'
|
||||
b'RegSetValueExW'
|
||||
b'RegOpenKeyExA'
|
||||
b'RegSetValueExA'
|
||||
b'RegQueryValueA'
|
||||
b'RegCreateKeyExA'
|
||||
b'RegEnumKeyExW'
|
||||
b'RegQueryInfoKeyW'
|
||||
b'RegisterClassExW'
|
||||
b'RegisterHotKey'
|
||||
b'RegQueryValueExA'
|
||||
b'RegisterClipboardFormatA'
|
||||
b'RegisterWindowMessageA'
|
||||
b'RegisterClassA'
|
||||
b'CryptDestroyKey'
|
||||
b'CryptGenKey'
|
||||
b'CryptDecrypt'
|
||||
b'CryptEncrypt'
|
||||
b'CryptImportKey'
|
||||
b'CryptSetKeyParam'
|
||||
b'CryptReleaseContext'
|
||||
b'CryptDeriveKey'
|
||||
b'CryptCreateHash'
|
||||
b'CryptHashData'
|
||||
b'CryptStringToBinaryA'
|
||||
b'CryptBinaryToStringA'
|
||||
b'CryptGetKeyParam'
|
||||
b'CryptGetHashParam'
|
||||
b'CryptDestroyHash'
|
||||
b'CryptImportPublicKeyInfo'
|
||||
b'UnlockFile'
|
||||
b'LockFile'"""
|
||||
if self.pyas_scan_start(file,rfp):
|
||||
self.pyas_scan_write_en(file)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖當前已發現惡意軟體。"))
|
||||
else:
|
||||
if self.show_virus_scan_progress_bar != 0:
|
||||
fts = 0
|
||||
try:
|
||||
pe = PE(file)
|
||||
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||
for function in entry.imports:
|
||||
if str(function.name) in rfn:
|
||||
fts = fts + 1
|
||||
if fts != 0:
|
||||
self.pyas_scan_write_en(file)
|
||||
fts = 0
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖當前已發現惡意軟體。"))
|
||||
except:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖掃描失敗。"))
|
||||
fp.close()
|
||||
fn.close()
|
||||
self.pyas_scan_answer_en()
|
||||
if self.pyas_scan_start(file,rfp):
|
||||
self.pyas_scan_write_en(file)
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖當前已發現惡意軟體。"))
|
||||
else:
|
||||
if self.show_virus_scan_progress_bar != 0:
|
||||
fts = 0
|
||||
try:
|
||||
pe = PE(file)
|
||||
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||
for function in entry.imports:
|
||||
if str(function.name) in rfn:
|
||||
fts = fts + 1
|
||||
if fts != 0:
|
||||
self.pyas_scan_write_en(file)
|
||||
fts = 0
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖當前已發現惡意軟體。"))
|
||||
except:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("✖掃描失敗。"))
|
||||
fp.close()
|
||||
fn.close()
|
||||
self.pyas_scan_answer_en()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
|
||||
@@ -1112,64 +1086,26 @@ b'LockFile'"""
|
||||
except:
|
||||
pass
|
||||
if file != "":
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.Virus_Scan = 1
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
#if self.show_virus_scan_progress_bar != 0:
|
||||
#self.quantity = 0
|
||||
#self.ui.Virus_Scan_ProgressBar.setMaximum(len(self.list_allfile(file,[])))
|
||||
#self.ui.Virus_Scan_ProgressBar.show()
|
||||
try:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.Virus_Scan = 1
|
||||
self.ui.Virus_Scan_choose_Button.hide()
|
||||
self.ui.Virus_Scan_Break_Button.show()
|
||||
QApplication.processEvents()
|
||||
#if self.show_virus_scan_progress_bar != 0:
|
||||
#self.quantity = 0
|
||||
#self.ui.Virus_Scan_ProgressBar.setMaximum(len(self.list_allfile(file,[])))
|
||||
#self.ui.Virus_Scan_ProgressBar.show()
|
||||
with open('Library/PYAE/Hashes/Viruslist.md5','r') as fp:
|
||||
rfp = fp.read()
|
||||
with open('Library/PYAE/Function/Viruslist.func','r') as fn:
|
||||
rfn = fn.read()
|
||||
except:
|
||||
rfp = """"""
|
||||
rfn = """b'RegQueryValueExW'
|
||||
b'RegOpenKeyExW'
|
||||
b'RegOpenCurrentUser'
|
||||
b'RegDeleteKeyW'
|
||||
b'RegDeleteValueW'
|
||||
b'RegCloseKey'
|
||||
b'RegCreateKeyExW'
|
||||
b'RegSetValueExW'
|
||||
b'RegOpenKeyExA'
|
||||
b'RegSetValueExA'
|
||||
b'RegQueryValueA'
|
||||
b'RegCreateKeyExA'
|
||||
b'RegEnumKeyExW'
|
||||
b'RegQueryInfoKeyW'
|
||||
b'RegisterClassExW'
|
||||
b'RegisterHotKey'
|
||||
b'RegQueryValueExA'
|
||||
b'RegisterClipboardFormatA'
|
||||
b'RegisterWindowMessageA'
|
||||
b'RegisterClassA'
|
||||
b'CryptDestroyKey'
|
||||
b'CryptGenKey'
|
||||
b'CryptDecrypt'
|
||||
b'CryptEncrypt'
|
||||
b'CryptImportKey'
|
||||
b'CryptSetKeyParam'
|
||||
b'CryptReleaseContext'
|
||||
b'CryptDeriveKey'
|
||||
b'CryptCreateHash'
|
||||
b'CryptHashData'
|
||||
b'CryptStringToBinaryA'
|
||||
b'CryptBinaryToStringA'
|
||||
b'CryptGetKeyParam'
|
||||
b'CryptGetHashParam'
|
||||
b'CryptDestroyHash'
|
||||
b'CryptImportPublicKeyInfo'
|
||||
b'UnlockFile'
|
||||
b'LockFile'"""
|
||||
fp.close()
|
||||
fn.close()
|
||||
self.pyas_scan_path_en(file,rfp,rfn,0)
|
||||
self.pyas_scan_answer_en()
|
||||
fp.close()
|
||||
fn.close()
|
||||
self.pyas_scan_path_en(file,rfp,rfn,0)
|
||||
self.pyas_scan_answer_en()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
else:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("請選擇掃描方式"))
|
||||
|
||||
@@ -1189,42 +1125,41 @@ b'LockFile'"""
|
||||
os.remove('Library/PYAS/Temp/PYASV.tmp')
|
||||
except:
|
||||
pass
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
QApplication.processEvents()
|
||||
try:
|
||||
self.ui.Virus_Scan_text.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
QApplication.processEvents()
|
||||
with open('Library/PYAE/Hashes/Viruslist.md5','r') as self.fp:
|
||||
rfp = self.fp.read()
|
||||
self.pyas_scan_disk_en('A:/',rfp)
|
||||
self.pyas_scan_disk_en('B:/',rfp)
|
||||
self.pyas_scan_disk_en('C:/',rfp)
|
||||
self.pyas_scan_disk_en('D:/',rfp)
|
||||
self.pyas_scan_disk_en('E:/',rfp)
|
||||
self.pyas_scan_disk_en('F:/',rfp)
|
||||
self.pyas_scan_disk_en('G:/',rfp)
|
||||
self.pyas_scan_disk_en('H:/',rfp)
|
||||
self.pyas_scan_disk_en('I:/',rfp)
|
||||
self.pyas_scan_disk_en('J:/',rfp)
|
||||
self.pyas_scan_disk_en('K:/',rfp)
|
||||
self.pyas_scan_disk_en('L:/',rfp)
|
||||
self.pyas_scan_disk_en('M:/',rfp)
|
||||
self.pyas_scan_disk_en('N:/',rfp)
|
||||
self.pyas_scan_disk_en('O:/',rfp)
|
||||
self.pyas_scan_disk_en('P:/',rfp)
|
||||
self.pyas_scan_disk_en('Q:/',rfp)
|
||||
self.pyas_scan_disk_en('R:/',rfp)
|
||||
self.pyas_scan_disk_en('S:/',rfp)
|
||||
self.pyas_scan_disk_en('T:/',rfp)
|
||||
self.pyas_scan_disk_en('U:/',rfp)
|
||||
self.pyas_scan_disk_en('V:/',rfp)
|
||||
self.pyas_scan_disk_en('W:/',rfp)
|
||||
self.pyas_scan_disk_en('X:/',rfp)
|
||||
self.pyas_scan_disk_en('Y:/',rfp)
|
||||
self.pyas_scan_disk_en('Z:/',rfp)
|
||||
self.fp.close()
|
||||
self.pyas_scan_answer_en()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
rfp = ""
|
||||
self.pyas_scan_disk_en('A:/',rfp)
|
||||
self.pyas_scan_disk_en('B:/',rfp)
|
||||
self.pyas_scan_disk_en('C:/',rfp)
|
||||
self.pyas_scan_disk_en('D:/',rfp)
|
||||
self.pyas_scan_disk_en('E:/',rfp)
|
||||
self.pyas_scan_disk_en('F:/',rfp)
|
||||
self.pyas_scan_disk_en('G:/',rfp)
|
||||
self.pyas_scan_disk_en('H:/',rfp)
|
||||
self.pyas_scan_disk_en('I:/',rfp)
|
||||
self.pyas_scan_disk_en('J:/',rfp)
|
||||
self.pyas_scan_disk_en('K:/',rfp)
|
||||
self.pyas_scan_disk_en('L:/',rfp)
|
||||
self.pyas_scan_disk_en('M:/',rfp)
|
||||
self.pyas_scan_disk_en('N:/',rfp)
|
||||
self.pyas_scan_disk_en('O:/',rfp)
|
||||
self.pyas_scan_disk_en('P:/',rfp)
|
||||
self.pyas_scan_disk_en('Q:/',rfp)
|
||||
self.pyas_scan_disk_en('R:/',rfp)
|
||||
self.pyas_scan_disk_en('S:/',rfp)
|
||||
self.pyas_scan_disk_en('T:/',rfp)
|
||||
self.pyas_scan_disk_en('U:/',rfp)
|
||||
self.pyas_scan_disk_en('V:/',rfp)
|
||||
self.pyas_scan_disk_en('W:/',rfp)
|
||||
self.pyas_scan_disk_en('X:/',rfp)
|
||||
self.pyas_scan_disk_en('Y:/',rfp)
|
||||
self.pyas_scan_disk_en('Z:/',rfp)
|
||||
self.fp.close()
|
||||
self.pyas_scan_answer_en()
|
||||
|
||||
def pyas_scan_disk_en(self,path,rfp):
|
||||
try:
|
||||
@@ -1262,11 +1197,6 @@ b'LockFile'"""
|
||||
QApplication.processEvents()
|
||||
if self.pyas_scan_start(fullpath,rfp):
|
||||
self.pyas_scan_write_en(fullpath)
|
||||
elif '.zip' in str(fd) or '.ZIP' in str(fd):
|
||||
self.ui.Virus_Scan_text.setText(self.scaning+fullpath)
|
||||
QApplication.processEvents()
|
||||
if self.pyas_scan_start(fullpath,rfp):
|
||||
self.pyas_scan_write_en(fullpath)
|
||||
elif '.js' in str(fd) or '.JS' in str(fd):
|
||||
self.ui.Virus_Scan_text.setText(self.scaning+fullpath)
|
||||
QApplication.processEvents()
|
||||
@@ -1292,11 +1222,16 @@ b'LockFile'"""
|
||||
QApplication.processEvents()
|
||||
if self.pyas_scan_start(fullpath,rfp):
|
||||
self.pyas_scan_write_en(fullpath)
|
||||
elif '.tmp' in str(fd) or '.TMP' in str(fd):
|
||||
self.ui.Virus_Scan_text.setText(self.scaning+fullpath)
|
||||
QApplication.processEvents()
|
||||
if self.pyas_scan_start(fullpath,rfp):
|
||||
self.pyas_scan_write_en(fullpath)
|
||||
#elif '.zip' in str(fd) or '.ZIP' in str(fd):
|
||||
#self.ui.Virus_Scan_text.setText(self.scaning+fullpath)
|
||||
#QApplication.processEvents()
|
||||
#if self.pyas_scan_start(fullpath,rfp):
|
||||
#self.pyas_scan_write_en(fullpath)
|
||||
#elif '.tmp' in str(fd) or '.TMP' in str(fd):
|
||||
#self.ui.Virus_Scan_text.setText(self.scaning+fullpath)
|
||||
#QApplication.processEvents()
|
||||
#if self.pyas_scan_start(fullpath,rfp):
|
||||
#self.pyas_scan_write_en(fullpath)
|
||||
else:
|
||||
pass
|
||||
except:
|
||||
@@ -1765,7 +1700,7 @@ b'LockFile'"""
|
||||
p.kill()
|
||||
except:
|
||||
pass
|
||||
################實實防護##################
|
||||
################實時防護##################
|
||||
|
||||
def protect_threading_init_zh(self):
|
||||
if self.ui.Protection_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
@@ -1785,35 +1720,67 @@ b'LockFile'"""
|
||||
QApplication.processEvents()
|
||||
self.Virus_Scan = 0
|
||||
self.pause = True
|
||||
else:
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.pause = False
|
||||
elif self.ui.Protection_switch_Button.text() == self.text_Translate("已开启"):
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate("已关闭"))
|
||||
self.ui.Protection_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);
|
||||
}
|
||||
""")
|
||||
QApplication.processEvents()
|
||||
self.protect_threading = threading.Thread(target = self.pyas_protect_init_zh)
|
||||
self.protect_threading.start()
|
||||
self.Virus_Scan = 0
|
||||
self.pause = True
|
||||
else:
|
||||
try:
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.pause = False
|
||||
QApplication.processEvents()
|
||||
self.protect_threading = threading.Thread(target = self.pyas_protect_init_zh)
|
||||
self.protect_threading.start()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
|
||||
def pyas_protect_init_zh(self):
|
||||
try:
|
||||
with open('Library/PYAE/Hashes/Viruslist.md5','r') as fp:
|
||||
rfp = fp.read()
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
rfp = ''
|
||||
with open('Library/PYAE/Hashes/Viruslist.md5','r') as fp:
|
||||
rfp = fp.read()
|
||||
self.Virus_Scan = 1
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("啟用該選項可以實時監控系統的惡意軟體並清除"))
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.Protection_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);
|
||||
}
|
||||
""")
|
||||
if self.ui.Protection_switch_Button.text() == 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.setStyleSheet("""
|
||||
QPushButton
|
||||
{
|
||||
border:none;
|
||||
background-color:rgba(20,200,20,100);
|
||||
border-radius: 15px;
|
||||
}
|
||||
QPushButton:hover
|
||||
{
|
||||
background-color:rgba(20,200,20,120);
|
||||
}
|
||||
""")
|
||||
else:
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("启用该选项可以实时监控进程中的恶意软件并清除。"))
|
||||
self.ui.Protection_switch_Button.setText(self.text_Translate("已开启"))
|
||||
self.ui.Protection_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);
|
||||
}
|
||||
""")
|
||||
QApplication.processEvents()
|
||||
while 1:
|
||||
if not self.pause:
|
||||
@@ -1826,7 +1793,7 @@ b'LockFile'"""
|
||||
pass
|
||||
else:
|
||||
if self.pyas_scan_start(p.exe(),rfp):
|
||||
of = subprocess.call('taskkill /f /im "'+str(p.name())+'"',shell=True)
|
||||
of = subprocess.call('taskkill /f /im "'+str(p.name())+'" /t',shell=True)
|
||||
try:
|
||||
if of == 0:
|
||||
self.ui.State_output.append(self.text_Translate('{} > [實時防護] 成功攔截了一個惡意軟體:').format(str(datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')))+str(p.name()))
|
||||
@@ -1840,18 +1807,20 @@ b'LockFile'"""
|
||||
else:
|
||||
self.ui.State_output.append(self.text_Translate('{} > [實時防護] 惡意軟體攔截失敗:').format(datetime.datetime.now())+str(p.name()))
|
||||
except Exception as e:
|
||||
pass
|
||||
print(str(e))
|
||||
try:
|
||||
os.remove(str(p.exe()))
|
||||
except:
|
||||
pass
|
||||
except Exception as e:
|
||||
print(str(e))
|
||||
#print(str(e))
|
||||
continue
|
||||
else:
|
||||
rfp = ""
|
||||
fp.close()
|
||||
break
|
||||
|
||||
#############設定###############
|
||||
def ShowMenu(self):
|
||||
self.WindowMenu = QMenu()
|
||||
@@ -1901,6 +1870,57 @@ b'LockFile'"""
|
||||
}
|
||||
""")
|
||||
self.show_virus_scan_progress_bar = 1
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已关闭"):
|
||||
self.ini_config.set("Setting", "high_sensitivity", 1)
|
||||
self.ini_config.write(open(r"./Library/PYAS/Setup/PYAS.ini", 'w'))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已开启"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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.show_virus_scan_progress_bar = 1
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已开启"):
|
||||
self.ini_config.set("Setting", "high_sensitivity", 0)
|
||||
self.ini_config.write(open(r"./Library/PYAS/Setup/PYAS.ini", 'w'))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已关闭"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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);
|
||||
}
|
||||
""")
|
||||
self.show_virus_scan_progress_bar = 0
|
||||
elif self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text() == self.text_Translate("已開啟"):
|
||||
self.ini_config.set("Setting", "high_sensitivity", 0)
|
||||
self.ini_config.write(open(r"./Library/PYAS/Setup/PYAS.ini", 'w'))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.setText(self.text_Translate("已關閉"))
|
||||
self.ui.Show_Virus_Scan_Progress_Bar_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);
|
||||
}
|
||||
""")
|
||||
self.show_virus_scan_progress_bar = 0
|
||||
else:
|
||||
self.ini_config.set("Setting", "high_sensitivity", 0)
|
||||
self.ini_config.write(open(r"./Library/PYAS/Setup/PYAS.ini", 'w'))
|
||||
@@ -1918,6 +1938,7 @@ b'LockFile'"""
|
||||
}
|
||||
""")
|
||||
self.show_virus_scan_progress_bar = 0
|
||||
#print(str(self.ui.Show_Virus_Scan_Progress_Bar_switch_Button.text()))
|
||||
except:
|
||||
with open(r"./Library/PYAS/Setup/PYAS.ini",mode="w",encoding="utf-8") as file:
|
||||
file.write("[Setting]\nhigh_sensitivity = 0\nlanguage = english")
|
||||
@@ -1941,7 +1962,8 @@ b'LockFile'"""
|
||||
self.language = "english"
|
||||
self.ini_config.set("Setting", "language", "english")
|
||||
except Exception as e:
|
||||
QMessageBox.critical(self,"Error",str(e),QMessageBox.Ok)
|
||||
print(e)
|
||||
#QMessageBox.critical(self,"Error: ",str(e),QMessageBox.Ok)
|
||||
try:
|
||||
self.ini_config.write(open(r"./Library/PYAS/Setup/PYAS.ini", 'w'))
|
||||
except:
|
||||
|
||||
+13
-4
@@ -3,10 +3,15 @@ english_list = {
|
||||
"已關閉":"Off",
|
||||
"已开启":"On",
|
||||
"已关闭":"Off",
|
||||
" > [行為檢測] ":" > [Behavior Detect] ",
|
||||
" 被移動":" Moved",
|
||||
" 被創建":" Created",
|
||||
" 被刪除":" Deleted",
|
||||
" 被編輯":" Edited",
|
||||
"✔成功: 已執行成功。":"✔Success: Executed successfully.",
|
||||
"這台電腦目前很安全":"This computer is currently safe",
|
||||
"✖錯誤: 執行失敗。":"✖Error: Execution failed.",
|
||||
" > [病毒掃描] 掃描出":" > [virus scan] scan out ",
|
||||
" > [病毒掃描] 掃描出":" > [Virus Scan] scan out ",
|
||||
"個病毒":" Virus",
|
||||
"這台電腦目前不安全":"This computer is currently unsafe",
|
||||
"✖當前已發現惡意軟體共{}項。":"✖A total of {} items of malware have been found so far.",
|
||||
@@ -59,10 +64,14 @@ english_list = {
|
||||
"設定":"Setting",
|
||||
"關於":"About",
|
||||
"結束進程":"End process",
|
||||
"啟用該選項可以實時監控系統的惡意軟體並清除":"Enable this option to monitor and remove malware in the system in real time",
|
||||
'{} > [實時防護] 成功攔截了一個惡意軟體:':'{} > [Real-time protection] Successfully blocked a malware:',
|
||||
'{} > [實時防護] 惡意軟體攔截失敗:':'{} > [Real-time protection] Malware blocking failed:',
|
||||
"啟用該選項可以實時監控進程中的惡意軟體並清除。":"Enable this option to monitor and remove malware in the system in real time.",
|
||||
"启用该选项可以实时监控进程中的恶意软件并清除。":"Enable this option to monitor and remove malware in the system in real time.",
|
||||
"啟用該選項可以提高掃描靈敏度,但這也可能會造成誤殺。":"Enable this option can improve scanning sensitivity, but it can also cause manslaughter.",
|
||||
"启用该选项可以提高扫描灵敏度,但这也可能会造成误杀。":"Enable this option can improve scanning sensitivity, but it can also cause manslaughter.",
|
||||
'{} > [實時防護] 成功攔截了一個惡意軟體:':'{} > [Real-Time Protect] Successfully blocked a malware:',
|
||||
'{} > [實時防護] 惡意軟體攔截失敗:':'{} > [Real-Time Protect] Malware blocking failed:',
|
||||
'修復系統權限':"Repair System Permissions",
|
||||
'啟用該選項可以實時監控系統的檔案讀寫變更行為。':"Enable this option can improve scanning sensitivity, but it can also cause manslaughter.",
|
||||
"never gonna give you up":"""We are no strangers to love
|
||||
You know the rules and so do I
|
||||
A full commitment′s what I am thinking of
|
||||
|
||||
+86
-99
@@ -1,8 +1,8 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file 'MainUI copy 2.ui'
|
||||
# Form implementation generated from reading ui file 'C:\Users\Windows\Documents\Python\PYDT開發團隊\PYAS防毒軟體\PYAS_程式碼\MainUI.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
|
||||
# run again. Do not edit this file unless you know what you are doing.
|
||||
@@ -60,7 +60,7 @@ class Ui_MainWindow(object):
|
||||
self.Show_Virus_Scan_Progress_Bar_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Show_Virus_Scan_Progress_Bar_title.setObjectName("Show_Virus_Scan_Progress_Bar_title")
|
||||
self.Show_Virus_Scan_Progress_Bar_illustrate = QtWidgets.QLabel(self.Show_Virus_Scan_Progress_Bar)
|
||||
self.Show_Virus_Scan_Progress_Bar_illustrate.setGeometry(QtCore.QRect(20, 50, 431, 41))
|
||||
self.Show_Virus_Scan_Progress_Bar_illustrate.setGeometry(QtCore.QRect(20, 50, 521, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -155,34 +155,40 @@ class Ui_MainWindow(object):
|
||||
self.Language_illustrate.setWordWrap(True)
|
||||
self.Language_illustrate.setObjectName("Language_illustrate")
|
||||
self.Language_Choose_widget = QtWidgets.QWidget(self.Llanguage_widget)
|
||||
self.Language_Choose_widget.setGeometry(QtCore.QRect(490, 10, 291, 81))
|
||||
self.Language_Choose_widget.setGeometry(QtCore.QRect(470, 0, 321, 101))
|
||||
font = QtGui.QFont()
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Choose_widget.setFont(font)
|
||||
self.Language_Choose_widget.setObjectName("Language_Choose_widget")
|
||||
self.Language_Traditional_Chinese = QtWidgets.QRadioButton(self.Language_Choose_widget)
|
||||
self.Language_Traditional_Chinese.setGeometry(QtCore.QRect(10, 20, 91, 41))
|
||||
self.horizontalLayoutWidget = QtWidgets.QWidget(self.Language_Choose_widget)
|
||||
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 301, 81))
|
||||
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
|
||||
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.Language_Traditional_Chinese = QtWidgets.QRadioButton(self.horizontalLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Traditional_Chinese.setFont(font)
|
||||
self.Language_Traditional_Chinese.setObjectName("Language_Traditional_Chinese")
|
||||
self.Language_Simplified_Chinese = QtWidgets.QRadioButton(self.Language_Choose_widget)
|
||||
self.Language_Simplified_Chinese.setGeometry(QtCore.QRect(110, 20, 91, 41))
|
||||
self.horizontalLayout.addWidget(self.Language_Traditional_Chinese)
|
||||
self.Language_Simplified_Chinese = QtWidgets.QRadioButton(self.horizontalLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Simplified_Chinese.setFont(font)
|
||||
self.Language_Simplified_Chinese.setObjectName("Language_Simplified_Chinese")
|
||||
self.Languahe_English = QtWidgets.QRadioButton(self.Language_Choose_widget)
|
||||
self.Languahe_English.setGeometry(QtCore.QRect(210, 20, 81, 41))
|
||||
self.horizontalLayout.addWidget(self.Language_Simplified_Chinese)
|
||||
self.Languahe_English = QtWidgets.QRadioButton(self.horizontalLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
self.Languahe_English.setFont(font)
|
||||
self.Languahe_English.setObjectName("Languahe_English")
|
||||
self.horizontalLayout.addWidget(self.Languahe_English)
|
||||
self.Theme_widget = QtWidgets.QWidget(self.Setting_widget)
|
||||
self.Theme_widget.setGeometry(QtCore.QRect(20, 160, 791, 101))
|
||||
self.Theme_widget.setObjectName("Theme_widget")
|
||||
@@ -209,58 +215,64 @@ class Ui_MainWindow(object):
|
||||
self.Theme_illustrate.setWordWrap(True)
|
||||
self.Theme_illustrate.setObjectName("Theme_illustrate")
|
||||
self.Language_Choose_widget_2 = QtWidgets.QWidget(self.Theme_widget)
|
||||
self.Language_Choose_widget_2.setGeometry(QtCore.QRect(490, 0, 301, 101))
|
||||
self.Language_Choose_widget_2.setGeometry(QtCore.QRect(470, 0, 321, 101))
|
||||
font = QtGui.QFont()
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Language_Choose_widget_2.setFont(font)
|
||||
self.Language_Choose_widget_2.setObjectName("Language_Choose_widget_2")
|
||||
self.Theme_White = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_White.setGeometry(QtCore.QRect(10, 10, 91, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_White.setFont(font)
|
||||
self.Theme_White.setObjectName("Theme_White")
|
||||
self.Theme_Black = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_Black.setGeometry(QtCore.QRect(110, 10, 91, 41))
|
||||
self.gridLayoutWidget = QtWidgets.QWidget(self.Language_Choose_widget_2)
|
||||
self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 10, 301, 80))
|
||||
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
|
||||
self.gridLayout.setContentsMargins(0, 0, 0, 0)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.Theme_Black = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Black.setFont(font)
|
||||
self.Theme_Black.setObjectName("Theme_Black")
|
||||
self.Theme_Pink = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_Pink.setGeometry(QtCore.QRect(210, 10, 91, 41))
|
||||
self.gridLayout.addWidget(self.Theme_Black, 1, 1, 1, 1)
|
||||
self.Theme_White = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_White.setFont(font)
|
||||
self.Theme_White.setObjectName("Theme_White")
|
||||
self.gridLayout.addWidget(self.Theme_White, 1, 0, 1, 1)
|
||||
self.Theme_Pink = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Pink.setFont(font)
|
||||
self.Theme_Pink.setObjectName("Theme_Pink")
|
||||
self.Theme_Red = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_Red.setGeometry(QtCore.QRect(110, 50, 91, 41))
|
||||
self.gridLayout.addWidget(self.Theme_Pink, 1, 2, 1, 1)
|
||||
self.Theme_Blue = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
self.Theme_Blue.setFont(font)
|
||||
self.Theme_Blue.setObjectName("Theme_Blue")
|
||||
self.gridLayout.addWidget(self.Theme_Blue, 2, 0, 1, 1)
|
||||
self.Theme_Red = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Red.setFont(font)
|
||||
self.Theme_Red.setObjectName("Theme_Red")
|
||||
self.Theme_Green = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_Green.setGeometry(QtCore.QRect(210, 50, 91, 41))
|
||||
self.gridLayout.addWidget(self.Theme_Red, 2, 1, 1, 1)
|
||||
self.Theme_Green = QtWidgets.QRadioButton(self.gridLayoutWidget)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Theme_Green.setFont(font)
|
||||
self.Theme_Green.setObjectName("Theme_Green")
|
||||
self.Theme_Blue = QtWidgets.QRadioButton(self.Language_Choose_widget_2)
|
||||
self.Theme_Blue.setGeometry(QtCore.QRect(10, 50, 91, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
self.Theme_Blue.setFont(font)
|
||||
self.Theme_Blue.setObjectName("Theme_Blue")
|
||||
self.gridLayout.addWidget(self.Theme_Green, 2, 2, 1, 1)
|
||||
self.More_Tools_widget = QtWidgets.QWidget(self.widget)
|
||||
self.More_Tools_widget.setGeometry(QtCore.QRect(170, 50, 671, 481))
|
||||
font = QtGui.QFont()
|
||||
@@ -365,36 +377,6 @@ class Ui_MainWindow(object):
|
||||
self.Encryption_Text_Button.setCheckable(False)
|
||||
self.Encryption_Text_Button.setObjectName("Encryption_Text_Button")
|
||||
self.More_Tools_verticalLayout.addWidget(self.Encryption_Text_Button)
|
||||
self.Decrypt_Text_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_7)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.Decrypt_Text_Button.sizePolicy().hasHeightForWidth())
|
||||
self.Decrypt_Text_Button.setSizePolicy(sizePolicy)
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.Decrypt_Text_Button.setFont(font)
|
||||
self.Decrypt_Text_Button.setFocusPolicy(QtCore.Qt.StrongFocus)
|
||||
self.Decrypt_Text_Button.setStyleSheet("QPushButton\n"
|
||||
"{\n"
|
||||
" border:none;\n"
|
||||
" background-color:rgba(20,20,20,30);\n"
|
||||
" border-radius: 15px;\n"
|
||||
"}\n"
|
||||
"QPushButton:hover\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,50);\n"
|
||||
"}\n"
|
||||
"QPushButton:pressed\n"
|
||||
"{\n"
|
||||
" background-color:rgba(20,20,20,70);\n"
|
||||
"}")
|
||||
self.Decrypt_Text_Button.setIconSize(QtCore.QSize(16, 16))
|
||||
self.Decrypt_Text_Button.setCheckable(False)
|
||||
self.Decrypt_Text_Button.setObjectName("Decrypt_Text_Button")
|
||||
self.More_Tools_verticalLayout.addWidget(self.Decrypt_Text_Button)
|
||||
self.Change_Users_Password_Button = QtWidgets.QPushButton(self.verticalLayoutWidget_7)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
@@ -1151,7 +1133,7 @@ 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(164, 240, 341, 51))
|
||||
self.State_title.setGeometry(QtCore.QRect(104, 240, 461, 51))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
@@ -1178,9 +1160,15 @@ class Ui_MainWindow(object):
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
font.setBold(False)
|
||||
font.setItalic(False)
|
||||
font.setWeight(50)
|
||||
font.setStrikeOut(False)
|
||||
font.setKerning(True)
|
||||
font.setStyleStrategy(QtGui.QFont.PreferAntialias)
|
||||
self.State_output.setFont(font)
|
||||
self.State_output.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
|
||||
self.State_output.setUndoRedoEnabled(True)
|
||||
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, 290, 61, 21))
|
||||
@@ -1727,7 +1715,7 @@ class Ui_MainWindow(object):
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
font.setBold(False)
|
||||
font.setUnderline(True)
|
||||
font.setUnderline(False)
|
||||
font.setWeight(50)
|
||||
self.PYAS_Version.setFont(font)
|
||||
self.PYAS_Version.setStyleSheet("")
|
||||
@@ -1745,7 +1733,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(130, 110, 151, 41))
|
||||
self.GUI_Made_Name.setGeometry(QtCore.QRect(130, 110, 491, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -1767,7 +1755,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(130, 160, 151, 41))
|
||||
self.Core_Made_Name.setGeometry(QtCore.QRect(130, 160, 491, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -1789,7 +1777,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(130, 210, 300, 41))
|
||||
self.Testers_Name.setGeometry(QtCore.QRect(130, 210, 491, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -1823,7 +1811,7 @@ 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(20, 450, 261, 31))
|
||||
self.PYAS_CopyRight.setGeometry(QtCore.QRect(20, 450, 621, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(13)
|
||||
@@ -1831,7 +1819,7 @@ class Ui_MainWindow(object):
|
||||
font.setWeight(50)
|
||||
self.PYAS_CopyRight.setFont(font)
|
||||
self.PYAS_CopyRight.setStyleSheet("")
|
||||
self.PYAS_CopyRight.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.PYAS_CopyRight.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
|
||||
self.PYAS_CopyRight.setObjectName("PYAS_CopyRight")
|
||||
self.PYAE_Version = QtWidgets.QLabel(self.About_widget)
|
||||
self.PYAE_Version.setGeometry(QtCore.QRect(160, 60, 121, 41))
|
||||
@@ -1839,7 +1827,7 @@ class Ui_MainWindow(object):
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
font.setBold(False)
|
||||
font.setUnderline(True)
|
||||
font.setUnderline(False)
|
||||
font.setWeight(50)
|
||||
self.PYAE_Version.setFont(font)
|
||||
self.PYAE_Version.setStyleSheet("")
|
||||
@@ -1899,7 +1887,7 @@ class Ui_MainWindow(object):
|
||||
self.Customize_REG_Command_Back.setCheckable(False)
|
||||
self.Customize_REG_Command_Back.setObjectName("Customize_REG_Command_Back")
|
||||
self.Value_Path_title = QtWidgets.QLabel(self.Customize_REG_Command_widget)
|
||||
self.Value_Path_title.setGeometry(QtCore.QRect(30, 70, 101, 31))
|
||||
self.Value_Path_title.setGeometry(QtCore.QRect(90, 80, 101, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
@@ -1910,7 +1898,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Path_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Value_Path_title.setObjectName("Value_Path_title")
|
||||
self.Value_Name_title = QtWidgets.QLabel(self.Customize_REG_Command_widget)
|
||||
self.Value_Name_title.setGeometry(QtCore.QRect(30, 110, 101, 31))
|
||||
self.Value_Name_title.setGeometry(QtCore.QRect(90, 120, 101, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
@@ -1921,7 +1909,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Name_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Value_Name_title.setObjectName("Value_Name_title")
|
||||
self.Value_Type_title = QtWidgets.QLabel(self.Customize_REG_Command_widget)
|
||||
self.Value_Type_title.setGeometry(QtCore.QRect(30, 150, 101, 31))
|
||||
self.Value_Type_title.setGeometry(QtCore.QRect(90, 160, 101, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
@@ -1932,7 +1920,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Type_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Value_Type_title.setObjectName("Value_Type_title")
|
||||
self.Value_Data_title = QtWidgets.QLabel(self.Customize_REG_Command_widget)
|
||||
self.Value_Data_title.setGeometry(QtCore.QRect(30, 190, 101, 31))
|
||||
self.Value_Data_title.setGeometry(QtCore.QRect(90, 200, 101, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
@@ -1943,7 +1931,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Data_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Value_Data_title.setObjectName("Value_Data_title")
|
||||
self.Value_Path_input = QtWidgets.QLineEdit(self.Customize_REG_Command_widget)
|
||||
self.Value_Path_input.setGeometry(QtCore.QRect(140, 70, 221, 31))
|
||||
self.Value_Path_input.setGeometry(QtCore.QRect(210, 80, 221, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -1951,7 +1939,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Path_input.setFont(font)
|
||||
self.Value_Path_input.setObjectName("Value_Path_input")
|
||||
self.Value_Type_input = QtWidgets.QLineEdit(self.Customize_REG_Command_widget)
|
||||
self.Value_Type_input.setGeometry(QtCore.QRect(140, 150, 221, 31))
|
||||
self.Value_Type_input.setGeometry(QtCore.QRect(210, 160, 221, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -1959,7 +1947,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Type_input.setFont(font)
|
||||
self.Value_Type_input.setObjectName("Value_Type_input")
|
||||
self.Value_Name_input = QtWidgets.QLineEdit(self.Customize_REG_Command_widget)
|
||||
self.Value_Name_input.setGeometry(QtCore.QRect(140, 110, 221, 31))
|
||||
self.Value_Name_input.setGeometry(QtCore.QRect(210, 120, 221, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -1967,7 +1955,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Name_input.setFont(font)
|
||||
self.Value_Name_input.setObjectName("Value_Name_input")
|
||||
self.Value_Data_input = QtWidgets.QLineEdit(self.Customize_REG_Command_widget)
|
||||
self.Value_Data_input.setGeometry(QtCore.QRect(140, 190, 221, 31))
|
||||
self.Value_Data_input.setGeometry(QtCore.QRect(210, 200, 221, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -1975,7 +1963,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Data_input.setFont(font)
|
||||
self.Value_Data_input.setObjectName("Value_Data_input")
|
||||
self.Customize_REG_Command_Run_Button = QtWidgets.QPushButton(self.Customize_REG_Command_widget)
|
||||
self.Customize_REG_Command_Run_Button.setGeometry(QtCore.QRect(380, 150, 91, 31))
|
||||
self.Customize_REG_Command_Run_Button.setGeometry(QtCore.QRect(270, 290, 91, 31))
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
@@ -2005,7 +1993,7 @@ class Ui_MainWindow(object):
|
||||
self.Customize_REG_Command_Run_Button.setCheckable(False)
|
||||
self.Customize_REG_Command_Run_Button.setObjectName("Customize_REG_Command_Run_Button")
|
||||
self.Value_HEKY_title = QtWidgets.QLabel(self.Customize_REG_Command_widget)
|
||||
self.Value_HEKY_title.setGeometry(QtCore.QRect(30, 230, 101, 31))
|
||||
self.Value_HEKY_title.setGeometry(QtCore.QRect(90, 240, 101, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(12)
|
||||
@@ -2016,7 +2004,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_HEKY_title.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.Value_HEKY_title.setObjectName("Value_HEKY_title")
|
||||
self.Value_HEKY_input = QtWidgets.QLineEdit(self.Customize_REG_Command_widget)
|
||||
self.Value_HEKY_input.setGeometry(QtCore.QRect(140, 230, 221, 31))
|
||||
self.Value_HEKY_input.setGeometry(QtCore.QRect(210, 240, 221, 31))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(11)
|
||||
@@ -2105,7 +2093,7 @@ class Ui_MainWindow(object):
|
||||
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, 300, 41))
|
||||
self.Window_title.setGeometry(QtCore.QRect(10, 0, 691, 41))
|
||||
font = QtGui.QFont()
|
||||
font.setFamily("Microsoft YaHei")
|
||||
font.setPointSize(14)
|
||||
@@ -2799,6 +2787,7 @@ class Ui_MainWindow(object):
|
||||
self.widget_2.setGeometry(QtCore.QRect(170, 50, 671, 481))
|
||||
self.widget_2.setStyleSheet("background-color:rgb(255, 255, 255);")
|
||||
self.widget_2.setObjectName("widget_2")
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.State_widget.raise_()
|
||||
self.widget_2.raise_()
|
||||
self.Change_Users_Password_widget.raise_()
|
||||
@@ -2817,7 +2806,6 @@ class Ui_MainWindow(object):
|
||||
self.More_Tools_widget.raise_()
|
||||
self.Encryption_Text_widget.raise_()
|
||||
self.Protection_widget.raise_()
|
||||
self.Virus_Scan_widget.raise_()
|
||||
self.Window_widget.raise_()
|
||||
self.Navigation_Bar.raise_()
|
||||
MainWindow.setCentralWidget(self.centralwidget)
|
||||
@@ -2828,9 +2816,9 @@ class Ui_MainWindow(object):
|
||||
def retranslateUi(self, MainWindow):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
MainWindow.setWindowTitle(_translate("MainWindow", "PYAS"))
|
||||
self.Show_Virus_Scan_Progress_Bar_title.setText(_translate("MainWindow", "顯示病毒掃描進度條"))
|
||||
self.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "開啟此選項後可以知道掃描的進度(會增加初始化時間)"))
|
||||
self.Show_Virus_Scan_Progress_Bar_switch_Button.setText(_translate("MainWindow", "關閉"))
|
||||
self.Show_Virus_Scan_Progress_Bar_title.setText(_translate("MainWindow", "高靈敏度模式"))
|
||||
self.Show_Virus_Scan_Progress_Bar_illustrate.setText(_translate("MainWindow", "開啟此選項後可提高掃描時的靈敏度,但這也可能會導致誤殺。"))
|
||||
self.Show_Virus_Scan_Progress_Bar_switch_Button.setText(_translate("MainWindow", "已關閉"))
|
||||
self.Setting_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.Language_title.setText(_translate("MainWindow", "語言"))
|
||||
self.Language_illustrate.setText(_translate("MainWindow", "請選擇語言"))
|
||||
@@ -2839,16 +2827,15 @@ class Ui_MainWindow(object):
|
||||
self.Languahe_English.setText(_translate("MainWindow", "English"))
|
||||
self.Theme_title.setText(_translate("MainWindow", "顯色主題"))
|
||||
self.Theme_illustrate.setText(_translate("MainWindow", "請選擇主題"))
|
||||
self.Theme_White.setText(_translate("MainWindow", "白色主題"))
|
||||
self.Theme_Black.setText(_translate("MainWindow", "黑色主題"))
|
||||
self.Theme_White.setText(_translate("MainWindow", "白色主題"))
|
||||
self.Theme_Pink.setText(_translate("MainWindow", "粉色主題"))
|
||||
self.Theme_Blue.setText(_translate("MainWindow", "藍色主題"))
|
||||
self.Theme_Red.setText(_translate("MainWindow", "紅色主題"))
|
||||
self.Theme_Green.setText(_translate("MainWindow", "綠色主題"))
|
||||
self.Theme_Blue.setText(_translate("MainWindow", "藍色主題"))
|
||||
self.More_Tools_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.Look_for_File_Button.setText(_translate("MainWindow", "尋找檔案"))
|
||||
self.Encryption_Text_Button.setText(_translate("MainWindow", "加密文字"))
|
||||
self.Decrypt_Text_Button.setText(_translate("MainWindow", "解密文字"))
|
||||
self.Change_Users_Password_Button.setText(_translate("MainWindow", "變更用戶密碼"))
|
||||
self.Internet_location_Query_Button.setText(_translate("MainWindow", "網路位置查詢"))
|
||||
self.Rework_Network_Configuration_Button.setText(_translate("MainWindow", "重置網路配置"))
|
||||
@@ -2859,8 +2846,8 @@ class Ui_MainWindow(object):
|
||||
self.Encryption_Text_title.setText(_translate("MainWindow", "加密&解密前"))
|
||||
self.Decrypt_Text_Run_Button.setText(_translate("MainWindow", "解密"))
|
||||
self.Protection_title.setText(_translate("MainWindow", "實時防護"))
|
||||
self.Protection_illustrate.setText(_translate("MainWindow", "啟用該選項可以實時監控系統的惡意軟體並清除(需4GB以上的記憶體)"))
|
||||
self.Protection_switch_Button.setText(_translate("MainWindow", "關閉"))
|
||||
self.Protection_illustrate.setText(_translate("MainWindow", "啟用該選項可以實時監控進程中的惡意軟體並清除"))
|
||||
self.Protection_switch_Button.setText(_translate("MainWindow", "已關閉"))
|
||||
self.State_Button.setText(_translate("MainWindow", "狀態"))
|
||||
self.Virus_Scan_Button.setText(_translate("MainWindow", "掃描"))
|
||||
self.Tools_Button.setText(_translate("MainWindow", "工具"))
|
||||
@@ -2891,17 +2878,17 @@ class Ui_MainWindow(object):
|
||||
self.Privacy_Tools_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.Delete_Private_File_Button.setText(_translate("MainWindow", "刪除隱私檔案"))
|
||||
self.About_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.PYAS_Version.setText(_translate("MainWindow", "PYAS v2.2.0"))
|
||||
self.PYAS_Version.setText(_translate("MainWindow", "PYAS v2.3.5"))
|
||||
self.GUI_Made_title.setText(_translate("MainWindow", "介面製作:"))
|
||||
self.GUI_Made_Name.setText(_translate("MainWindow", "mtkiao129#3921"))
|
||||
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.PYAS_URL_title.setText(_translate("MainWindow", "PYAS官方網站:"))
|
||||
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"))
|
||||
self.PYAE_Version.setText(_translate("MainWindow", "PYAE v1.2.3"))
|
||||
self.PYAS_CopyRight.setText(_translate("MainWindow", "Copyright© 2020-2022 PYAS Security"))
|
||||
self.PYAE_Version.setText(_translate("MainWindow", "PYAE v1.2.5"))
|
||||
self.License_terms_title.setText(_translate("MainWindow", "許可條款:"))
|
||||
self.Customize_REG_Command_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.Value_Path_title.setText(_translate("MainWindow", "值路徑:"))
|
||||
@@ -2910,7 +2897,7 @@ class Ui_MainWindow(object):
|
||||
self.Value_Data_title.setText(_translate("MainWindow", "值資料:"))
|
||||
self.Customize_REG_Command_Run_Button.setText(_translate("MainWindow", "確定"))
|
||||
self.Value_HEKY_title.setText(_translate("MainWindow", "值HEKY:"))
|
||||
self.Window_title.setText(_translate("MainWindow", "PYAS v2.2.0"))
|
||||
self.Window_title.setText(_translate("MainWindow", "PYAS V0.0.0"))
|
||||
self.Process_Tools_Back.setText(_translate("MainWindow", "返回"))
|
||||
self.Process_Total_title.setText(_translate("MainWindow", "進程總數:"))
|
||||
self.System_Process_Manage_Button.setText(_translate("MainWindow", "系統進程管理"))
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
Python Antivirus Software
|
||||
|
||||
Official website:
|
||||
https://pyantivirus.wixsite.com/pyas ,
|
||||
https://github.com/87owo/PYAS
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
import pyinstaller_versionfile
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='2.3.3',
|
||||
version='2.3.6',
|
||||
company_name="PYAS",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
Reference in new issue
Block a user