Compare commits

...
23 Commits
Author SHA1 Message Date
PYDT 1e091a3e7c Delete PYAS_Function_Virus.7z 2024-01-11 10:23:11 +08:00
PYDT 8840da91d7 Delete PYAS_Function_Safe.7z 2024-01-11 10:22:59 +08:00
PYDT 1f4ff04ed3 Add files via upload 2024-01-11 10:22:17 +08:00
PYDT 60974e8f72 Add files via upload 2024-01-11 09:31:52 +08:00
PYDT 86f68994c2 Add files via upload 2024-01-10 09:19:18 +08:00
PYDT 21c4918486 Add files via upload 2024-01-09 08:20:17 +08:00
PYDT c6a426ec25 Add files via upload 2024-01-08 21:22:54 +08:00
PYDT db75a22c1c Add files via upload 2024-01-08 19:31:04 +08:00
PYDT 7e85d22ecd Add files via upload 2024-01-08 18:53:53 +08:00
PYDT 67adadc0a4 Add files via upload 2024-01-08 17:46:19 +08:00
PYDT 6b78562454 Add files via upload 2024-01-08 08:33:37 +08:00
PYDT 4f13afc867 Add files via upload 2024-01-07 20:06:03 +08:00
PYDT c34e8f193f Add files via upload 2024-01-06 16:53:56 +08:00
PYDT 4bcb507eae Add files via upload 2024-01-06 12:45:32 +08:00
PYDT a50d457d75 Add files via upload 2024-01-05 10:51:12 +08:00
PYDT 9f119265a9 Add files via upload 2024-01-05 10:21:49 +08:00
PYDT 0b121a624b Add files via upload 2024-01-05 09:34:07 +08:00
PYDT 0f47f5ec8f Add files via upload 2024-01-05 08:12:45 +08:00
PYDT f89896d041 Add files via upload 2024-01-04 15:47:23 +08:00
PYDT 5e335fd5e8 Add files via upload 2024-01-04 15:47:06 +08:00
PYDT fd245dec14 Add files via upload 2024-01-04 14:56:46 +08:00
PYDT 774cdc5de3 Add files via upload 2024-01-04 13:28:02 +08:00
PYDT 633cfad1a8 Add files via upload 2024-01-04 11:39:51 +08:00
6 changed files with 49 additions and 15 deletions

No files matched your search

+13 -14
View File
@@ -4,10 +4,10 @@ import xml.etree.ElementTree as xmlet
import requests, pyperclip, win32file
import win32gui, win32api, win32con
from PYAS_Extension import slist, alist
from PYAS_Function_Safe import func_safe
from PYAS_Function_Virus import func_virus
from PYAS_Compress import ListCompressor
from PYAS_Language import translate_dict
from PYAS_Interface import Ui_MainWindow
from PYAS_Function import model_dict
from threading import Thread
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
@@ -19,9 +19,10 @@ class MainWindow_Controller(QMainWindow):
self.setAttribute(Qt.WA_TranslucentBackground)
self.setWindowFlags(Qt.FramelessWindowHint)
self.pyas = str(sys.argv[0]).replace("\\", "/")
self.pyas_version = "2.9.8"
self.pyas_version = "2.9.9"
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.init_data_base()
self.init_tray_icon()
self.init_virus_list()
self.init_state_safe()
@@ -36,6 +37,10 @@ class MainWindow_Controller(QMainWindow):
self.show_pyas_ui()
self.init_threads()
def init_data_base(self):
self.pe = ListCompressor()
self.pe.load_model(model_dict)
def init_threads(self):
self.protect_proc_init()
self.protect_file_init()
@@ -837,17 +842,11 @@ class MainWindow_Controller(QMainWindow):
fn.append(str(func.name, "utf-8"))
except:
pass
max_vfl = []
for vfl in func_virus:
QApplication.processEvents()
max_vfl.append(len(set(fn)&set(vfl))/len(set(fn)|set(vfl)))
max_sfl = []
for sfl in func_safe:
QApplication.processEvents()
max_sfl.append(len(set(fn)&set(sfl))/len(set(fn)|set(sfl)))
if self.high_sensitivity:
return max(max_vfl) >= max(max_sfl)
return max(max_vfl) - max(max_sfl) >= 0.1
return self.pe.predict(fn, similarity=0.5)
elif "_CorExeMain" not in fn:
return self.pe.predict(fn, similarity=0.6)
return False
except:
return False
@@ -1209,7 +1208,7 @@ class MainWindow_Controller(QMainWindow):
elif self.proc_scan(p.pid):
p.kill()
self.send_notify(self.trans("惡意軟體攔截: ")+file)
elif self.sign_scan(file):
elif ":/Windows" not in file and self.sign_scan(file):
self.proc = p
psutil.Process(p.pid).resume()
gc.collect()
+35
View File
@@ -0,0 +1,35 @@
import json
class ListCompressor:
def __init__(self):
self.model = {'ones': [], 'zero': [], 'word': {}}
def save_model(self, file_name):
with open(file_name, 'w') as f:
json.dump(self.model, f)
print(f"\nModel Is Saved In {file_name}")
def load_model(self, model_data):
if isinstance(model_data, str):
with open(model_data, 'r') as f:
model_data = json.load(f)
self.model = model_data
def train_model(self, ones, zero, min_count=1, max_ratio=1.0):
unique_words = set([item for sublist in ones + zero for item in sublist])
self.model['word'] = {word: idx for idx, word in enumerate(unique_words)}
ones = [[self.model['word'][item] for item in lst] for lst in ones if len(lst) >= min_count and len(lst) / len(unique_words) <= max_ratio]
zero = [[self.model['word'][item] for item in lst] for lst in zero if len(lst) >= min_count and len(lst) / len(unique_words) <= max_ratio]
self.model['ones'].extend(ones)
self.model['zero'].extend(zero)
def simplify_lists(self, lists):
return [list(set(lst)) for lst in lists]
def predict(self, new_list, similarity=0.5):
new_list = [self.model['word'].get(item, -1) for item in new_list if item in self.model['word']]
if len(new_list) < 1:
return False
max_vfl = [len(set(new_list) & set(ones)) / len(set(new_list) | set(ones)) for ones in self.model['ones']]
max_sfl = [len(set(new_list) & set(zero)) / len(set(new_list) | set(zero)) for zero in self.model['zero']]
return max(max_vfl) >= max(max_sfl) and max(max_vfl) >= similarity
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,7 +1,7 @@
import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile(
output_file="versionfile.txt",
version='2.9.8',
version='2.9.9',
company_name="PYAS Security",
file_description="Python Antivirus Software",
internal_name="PYAS",