Compare commits

..
84 Commits
Author SHA1 Message Date
PYDT 5faee6a05f Add files via upload 2023-11-16 11:41:33 +08:00
PYDT 9213f9f54f Add files via upload 2023-11-16 10:39:56 +08:00
PYDT c5e8351d76 Delete PYAS_Rules.py 2023-11-16 10:39:12 +08:00
PYDT e8e245ac0b Add files via upload 2023-11-15 12:49:31 +08:00
PYDT 2d8d6851d1 Add files via upload 2023-11-15 11:39:51 +08:00
PYDT 54f3e2ceda Add files via upload 2023-11-15 00:27:26 +08:00
PYDT 81d98917c3 Add files via upload 2023-11-14 21:10:40 +08:00
PYDT 8651f1e5d6 Add files via upload 2023-11-10 16:14:39 +08:00
PYDT db1a26424d Add files via upload 2023-11-10 15:20:38 +08:00
PYDT 16405810dd Add files via upload 2023-11-10 10:07:45 +08:00
PYDT f4f7fc1b0c Add files via upload 2023-11-09 22:02:06 +08:00
PYDT e1145a743a Add files via upload 2023-11-09 21:33:02 +08:00
PYDT 6e5b54bbfe Add files via upload 2023-11-09 21:21:20 +08:00
PYDT a948219e1a Add files via upload 2023-11-09 10:45:41 +08:00
PYDT 5675e926d5 Add files via upload 2023-11-09 09:19:56 +08:00
PYDT cb7f8bbaab Add files via upload 2023-11-09 09:14:14 +08:00
PYDT 61e7fd8f40 Add files via upload 2023-11-08 19:49:30 +08:00
PYDT 76fab2671a Add files via upload 2023-11-08 09:33:31 +08:00
PYDT dbc2bd2d62 Add files via upload 2023-11-07 23:48:08 +08:00
PYDT 73e62935ff Add files via upload 2023-11-07 14:35:09 +08:00
PYDT c9e28b5482 Add files via upload 2023-11-07 11:15:32 +08:00
PYDT 6bf58eae4a Add files via upload 2023-11-07 07:26:43 +08:00
PYDT 3e09574b3c Add files via upload 2023-11-06 16:23:59 +08:00
PYDT a7a00b9ca6 Add files via upload 2023-11-06 08:24:54 +08:00
PYDT 7a62e2df27 Add files via upload 2023-11-05 17:49:37 +08:00
PYDT 317f1ccae7 Add files via upload 2023-11-05 17:38:51 +08:00
PYDT 884631409a Add files via upload 2023-11-05 14:44:08 +08:00
PYDT 14dca5e2cb Add files via upload 2023-11-04 13:38:04 +08:00
PYDT 3a0b856d47 Add files via upload 2023-11-03 20:36:21 +08:00
PYDT e66f8af022 Add files via upload 2023-11-03 18:02:13 +08:00
PYDT 13e4560d86 Add files via upload 2023-11-03 08:20:39 +08:00
PYDT 5ea789df7f Add files via upload 2023-11-03 08:14:52 +08:00
PYDT debda9ec11 Add files via upload 2023-11-02 20:36:42 +08:00
PYDT b3f126181b Add files via upload 2023-11-02 14:35:57 +08:00
PYDT 6bd110cae7 Add files via upload 2023-11-02 14:30:26 +08:00
PYDT 635f4ccde3 Add files via upload 2023-11-02 10:52:47 +08:00
PYDT 01da2685a5 Add files via upload 2023-11-02 10:51:45 +08:00
PYDT b040aad8d1 Add files via upload 2023-11-02 08:47:53 +08:00
PYDT 84a0f08618 Add files via upload 2023-11-01 19:44:29 +08:00
PYDT 1f64c0d672 Add files via upload 2023-11-01 12:55:25 +08:00
PYDT 5bfff87e21 Add files via upload 2023-11-01 11:19:25 +08:00
PYDT 47db0e1c46 Delete PYAS_Scripts.py 2023-10-31 15:02:10 +08:00
PYDT 9a9fdc418f Delete PYAS_Function_Safe.zip 2023-10-31 15:01:31 +08:00
PYDT c30c89ed40 Add files via upload 2023-10-31 15:01:01 +08:00
PYDT d7bb89968f Add files via upload 2023-10-30 21:05:07 +08:00
PYDT f9b431d158 Add files via upload 2023-10-30 20:56:16 +08:00
PYDT a1364896af Add files via upload 2023-10-30 20:07:24 +08:00
PYDT 2870a999a2 Add files via upload 2023-10-30 20:05:04 +08:00
PYDT 98646a6bd9 Add files via upload 2023-10-29 15:47:10 +08:00
PYDT 8ec894f576 Add files via upload 2023-10-29 13:15:09 +08:00
PYDT 254a67b9a8 Add files via upload 2023-10-29 12:13:14 +08:00
PYDT eebfb79c27 Add files via upload 2023-10-29 11:56:02 +08:00
PYDT 1a1d7ec783 Add files via upload 2023-10-29 08:25:17 +08:00
PYDT 4482144b4d Add files via upload 2023-10-28 18:25:08 +08:00
PYDT 827279c9a8 Add files via upload 2023-10-28 15:32:10 +08:00
PYDT b1d3488842 Add files via upload 2023-10-27 18:57:00 +08:00
PYDT 90112ae1ae Add files via upload 2023-10-27 15:48:25 +08:00
PYDT 1f4b9390b9 Add files via upload 2023-10-27 10:53:02 +08:00
PYDT cc142aca40 Add files via upload 2023-10-27 08:28:38 +08:00
PYDT 89513b2c0d Add files via upload 2023-10-27 00:33:05 +08:00
PYDT bfcd00acec Add files via upload 2023-10-27 00:26:21 +08:00
PYDT 9833b28a50 Add files via upload 2023-10-27 00:03:41 +08:00
PYDT d0404dd29c Add files via upload 2023-10-26 20:52:20 +08:00
PYDT 9d3761e7f6 Add files via upload 2023-10-26 20:14:54 +08:00
PYDT 03515acc68 Add files via upload 2023-10-26 18:06:31 +08:00
PYDT f8413f4cfb Add files via upload 2023-10-26 17:50:39 +08:00
PYDT 24f7f67e63 Add files via upload 2023-10-26 14:29:49 +08:00
PYDT 85129cdfe1 Add files via upload 2023-10-25 15:58:42 +08:00
PYDT 6d4f8b2731 Add files via upload 2023-10-25 13:39:48 +08:00
PYDT 24a0efcce1 Add files via upload 2023-10-24 21:28:11 +08:00
PYDT ce6be1b4d5 Add files via upload 2023-10-24 19:53:41 +08:00
PYDT 723ac47c48 Add files via upload 2023-10-24 19:52:58 +08:00
PYDT 720d163bdb Add files via upload 2023-10-24 13:15:05 +08:00
PYDT a74047d4e5 Add files via upload 2023-10-24 13:12:21 +08:00
PYDT f6538f93c7 Add files via upload 2023-10-24 13:08:41 +08:00
PYDT 49cb0b3ef5 Add files via upload 2023-10-24 09:40:15 +08:00
PYDT c81845ba3a Add files via upload 2023-10-24 09:23:43 +08:00
PYDT 053ae64008 Add files via upload 2023-10-24 09:16:11 +08:00
PYDT 48989840b8 Add files via upload 2023-10-23 20:47:18 +08:00
PYDT 36c7bcd87f Add files via upload 2023-10-23 18:56:42 +08:00
PYDT a50eca1600 Add files via upload 2023-10-22 15:38:01 +08:00
PYDT f70dc8eb46 Add files via upload 2023-10-22 15:09:01 +08:00
PYDT f13d816c5b Add files via upload 2023-10-21 23:46:01 +08:00
PYDT 3429e658b6 Add files via upload 2023-10-21 10:46:45 +08:00
4 changed files with 57 additions and 45 deletions

No files matched your search

+55 -42
View File
@@ -3,7 +3,7 @@ import hashlib, pefile, socket, msvcrt
import requests, pyperclip, win32file import requests, pyperclip, win32file
import win32gui, win32api, win32con import win32gui, win32api, win32con
import xml.etree.ElementTree as xmlet import xml.etree.ElementTree as xmlet
from PYAS_Scripts import scripts_list from PYAS_Rules import pyasrule_dict
from PYAS_Function import function_list from PYAS_Function import function_list
from PYAS_Extension import slist, alist from PYAS_Extension import slist, alist
from PYAS_Language import translate_dict from PYAS_Language import translate_dict
@@ -19,16 +19,17 @@ class MainWindow_Controller(QMainWindow):
self.setAttribute(Qt.WA_TranslucentBackground) self.setAttribute(Qt.WA_TranslucentBackground)
self.setWindowFlags(Qt.FramelessWindowHint) self.setWindowFlags(Qt.FramelessWindowHint)
self.pyas = str(sys.argv[0]).replace("\\", "/") self.pyas = str(sys.argv[0]).replace("\\", "/")
self.pyas_version = "2.8.8" self.pyas_version = "2.9.2"
self.ui = Ui_MainWindow() self.ui = Ui_MainWindow()
self.ui.setupUi(self) self.ui.setupUi(self)
self.init_tray_icon() self.init_tray_icon()
self.init_virus_list() self.init_virus_list()
self.init_state_safe() self.init_state_safe()
self.init_config_path() self.init_config_path()
self.init_config_read()
self.init_config_json()
self.init_config_list() self.init_config_list()
self.init_config_boot() self.init_config_boot()
self.init_config_json()
self.init_config_qtui() self.init_config_qtui()
self.init_change_lang() self.init_change_lang()
self.init_control() self.init_control()
@@ -93,11 +94,18 @@ class MainWindow_Controller(QMainWindow):
except: except:
self.mbr_value = False self.mbr_value = False
def init_config_json(self): def init_config_read(self):
if not os.path.exists("C:/ProgramData/PYAS/PYAS.json"): try:
if not os.path.exists("C:/ProgramData/PYAS/PYAS.json"):
self.write_config({"language":"en_US","high_sensitivity":0,"cloud_services":1})
with open("C:/ProgramData/PYAS/PYAS.json", "r", encoding="utf-8") as f:
self.json = json.load(f)
except:
self.write_config({"language":"en_US","high_sensitivity":0,"cloud_services":1}) self.write_config({"language":"en_US","high_sensitivity":0,"cloud_services":1})
with open("C:/ProgramData/PYAS/PYAS.json", "r", encoding="utf-8") as f: with open("C:/ProgramData/PYAS/PYAS.json", "r", encoding="utf-8") as f:
self.json = json.load(f) self.json = json.load(f)
def init_config_json(self):
self.high_sensitivity = self.json.get("high_sensitivity", 0) self.high_sensitivity = self.json.get("high_sensitivity", 0)
if self.high_sensitivity == 1: if self.high_sensitivity == 1:
self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟")) self.ui.high_sensitivity_switch_Button.setText(self.trans("已開啟"))
@@ -261,7 +269,7 @@ class MainWindow_Controller(QMainWindow):
self.ui.Window_Block_Button.setText(self.trans("軟體彈窗攔截")) self.ui.Window_Block_Button.setText(self.trans("軟體彈窗攔截"))
self.ui.Repair_System_Network_Button.setText(self.trans("系統網路修復")) self.ui.Repair_System_Network_Button.setText(self.trans("系統網路修復"))
self.ui.About_Back.setText(self.trans("返回")) self.ui.About_Back.setText(self.trans("返回"))
self.ui.PYAS_Version.setText(self.trans(f"PYAS V{self.pyas_version} ({len(function_list)})")) self.ui.PYAS_Version.setText(self.trans(f"PYAS V{self.pyas_version} (ML Engine)"))
self.ui.GUI_Made_title.setText(self.trans("介面製作:")) self.ui.GUI_Made_title.setText(self.trans("介面製作:"))
self.ui.GUI_Made_Name.setText(self.trans("mtkiao")) self.ui.GUI_Made_Name.setText(self.trans("mtkiao"))
self.ui.Core_Made_title.setText(self.trans("核心製作:")) self.ui.Core_Made_title.setText(self.trans("核心製作:"))
@@ -529,14 +537,15 @@ class MainWindow_Controller(QMainWindow):
def closeEvent(self, event): def closeEvent(self, event):
if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要退出 PYAS 和所有防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384: if QMessageBox.warning(self,self.trans("警告"),self.trans("您確定要退出 PYAS 和所有防護嗎?"),QMessageBox.Yes|QMessageBox.No) == 16384:
self.virus_scan_break()
event.accept() event.accept()
else: else:
event.ignore() event.ignore()
def bug_event(self, error): def bug_event(self, text):
try: try:
print(f"[Error] {error}") print(f"[Error] {text}")
QMessageBox.critical(self,self.trans("錯誤"),error,QMessageBox.Ok) QMessageBox.critical(self,self.trans("錯誤"), text, QMessageBox.Ok)
except: except:
pass pass
@@ -783,15 +792,15 @@ class MainWindow_Controller(QMainWindow):
for fd in os.listdir(path): for fd in os.listdir(path):
try: try:
file = str(os.path.join(path,fd)).replace("\\", "/") file = str(os.path.join(path,fd)).replace("\\", "/")
self.ui.Virus_Scan_text.setText(self.trans(f"正在掃描: ")+file)
QApplication.processEvents()
if self.scan_file == False: if self.scan_file == False:
return break
elif ":/Windows" in file: elif ":/Windows" in file:
continue continue
elif os.path.isdir(file): elif os.path.isdir(file):
self.traverse_path(file) self.traverse_path(file)
elif file not in self.whitelist: elif file not in self.whitelist:
self.ui.Virus_Scan_text.setText(self.trans(f"正在掃描: ")+file)
QApplication.processEvents()
self.start_scan(file) self.start_scan(file)
gc.collect() gc.collect()
except: except:
@@ -816,26 +825,25 @@ class MainWindow_Controller(QMainWindow):
except: except:
return True return True
def scr_scan(self, text):
try:
if os.path.isfile(text):
with open(text, "r", encoding="utf-8") as f:
text = f.read()
return any(sn.lower() in str(text).lower() for sn in scripts_list)
except:
return False
def pe_scan(self, file): def pe_scan(self, file):
try: try:
pe_func = [] fn = []
with pefile.PE(file) as pe: with pefile.PE(file) as pe:
for entry in pe.DIRECTORY_ENTRY_IMPORT: for entry in pe.DIRECTORY_ENTRY_IMPORT:
for func in entry.imports: for func in entry.imports:
try: try:
pe_func.append(str(func.name, "utf-8")) fn.append(str(func.name, "utf-8"))
except: except:
pass pass
return pe_func in function_list max_vfl = []
for vfl in function_list:
QApplication.processEvents()
max_vfl.append(len(set(fn)&set(vfl))/len(set(fn)|set(vfl)))
if self.high_sensitivity and max(max_vfl) == 1.0:
return True
elif "_CorExeMain" not in fn and max(max_vfl) == 1.0:
return True
return False
except: except:
return False return False
@@ -1171,27 +1179,32 @@ class MainWindow_Controller(QMainWindow):
existing_processes.add(p.pid) existing_processes.add(p.pid)
psutil.Process(p.pid).suspend() psutil.Process(p.pid).suspend()
name, file, cmd = p.name(), p.exe().replace("\\", "/"), p.cmdline() name, file, cmd = p.name(), p.exe().replace("\\", "/"), p.cmdline()
if ":/Windows" in file or ":/Program" in file: if self.protect_proc_scan(name, file, cmd):
if "powershell" in name and self.api_scan(cmd[-1].split("'")[-2]): p.kill()
p.kill() self.send_notify(self.trans("惡意軟體攔截: ")+file)
self.send_notify(self.trans("惡意腳本攔截: ")+name) elif ":/Windows" not in file and self.sign_scan(file):
elif "cmd.exe" in name and self.api_scan(" ".join(cmd[2:])): self.proc = p
p.kill()
self.send_notify(self.trans("惡意腳本攔截: ")+name)
elif self.scr_scan(cmd) or self.api_scan(cmd[-1]):
p.kill()
self.send_notify(self.trans("惡意軟體攔截: ")+name)
elif file != self.pyas and file not in self.whitelist:
if self.sign_scan(file):
self.proc = p
if self.api_scan(file) or self.pe_scan(file):
p.kill()
self.send_notify(self.trans("惡意軟體攔截: ")+name)
psutil.Process(p.pid).resume() psutil.Process(p.pid).resume()
gc.collect() gc.collect()
except: except:
pass pass
def protect_proc_scan(self, name, file, cmd):
try:
if file != self.pyas and file not in self.whitelist:
if "powershell" in name:
file = str(cmd[-1].split("'")[-2])
elif "cmd.exe" in name:
file = str(" ".join(cmd[2:]))
elif ":/Windows" in file:
file = str(cmd[-1])
elif ":/Program" in file:
file = str(cmd[-1])
return self.api_scan(file) or self.pe_scan(file)
return False
except:
pass
def protect_file_thread(self): def protect_file_thread(self):
hDir = win32file.CreateFile("C:/Users/",win32con.GENERIC_READ,win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE|win32con.FILE_SHARE_DELETE,None,win32con.OPEN_EXISTING,win32con.FILE_FLAG_BACKUP_SEMANTICS,None) hDir = win32file.CreateFile("C:/Users/",win32con.GENERIC_READ,win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE|win32con.FILE_SHARE_DELETE,None,win32con.OPEN_EXISTING,win32con.FILE_FLAG_BACKUP_SEMANTICS,None)
self.ransom_block = False self.ransom_block = False
BIN
View File
Binary file not shown.
-1
View File
@@ -1 +0,0 @@
scripts_list = ["%0|%0","ExclusionPath","cmdkey","eiculwo","random","bypass"]
+2 -2
View File
@@ -1,10 +1,10 @@
import pyinstaller_versionfile import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile( pyinstaller_versionfile.create_versionfile(
output_file="versionfile.txt", output_file="versionfile.txt",
version='2.8.8', version='2.9.2',
company_name="PYAS Security", company_name="PYAS Security",
file_description="Python Antivirus Software", file_description="Python Antivirus Software",
internal_name="PYAS", internal_name="PYAS",
legal_copyright="© PYAS Security", legal_copyright="PYAS Security",
original_filename="PYAS.exe", original_filename="PYAS.exe",
product_name="PYAS") product_name="PYAS")