Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
08bdd870a5 | ||
|
|
54a43f6045 | ||
|
|
25a9cc3608 | ||
|
|
7f52a53e62 | ||
|
|
20e9c82854 | ||
|
|
fe92e53f7b | ||
|
|
130aeb01b9 | ||
|
|
7439b5e362 | ||
|
|
166059b9bd | ||
|
|
7e5fc40768 | ||
|
|
aadb2c1e40 |
No files matched your search
@@ -1 +0,0 @@
|
||||
0
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 16 KiB |
+1
-1
@@ -1 +1 @@
|
||||
function_list = ['_CorExeMain', ['LoadLibraryA', 'OpenMutexW', 'SetLocaleInfoA', 'FindNextVolumeA', 'GetNamedPipeHandleStateA', 'FileTimeToLocalFileTime', 'EnumResourceTypesA', 'EnumResourceNamesA', 'FillConsoleOutputCharacterA', 'DeleteTimerQueueTimer', 'TerminateThread', 'SetLastError', 'GetVersionExA', 'FreeResource', 'SetEvent', 'FindNextFileW', 'CopyFileExA', 'BuildCommDCBA', 'ReadConsoleOutputCharacterW', 'SetDefaultCommConfigW', 'VerLanguageNameW', 'GetCommConfig', 'WritePrivateProfileStructA', 'LocalFree', 'FindNextVolumeMountPointA', 'ReadConsoleInputA', 'WriteConsoleInputW', 'LoadResource', 'AddAtomA', 'GlobalDeleteAtom', 'GetThreadPriority', 'CallNamedPipeA', 'GetDriveTypeW', 'BuildCommDCBAndTimeoutsW', 'GetProcAddress', 'GlobalAlloc', 'GlobalFix', 'FindFirstChangeNotificationA', 'VerifyVersionInfoA', 'FormatMessageA', 'SetDllDirectoryA', 'GetModuleHandleA', 'WritePrivateProfileStringW', 'GetUserDefaultLCID', 'SetDllDirectoryW', 'SetConsoleTextAttribute', 'InterlockedDecrement', 'GetStartupInfoA', 'GetSystemWow64DirectoryW', 'CopyFileA', 'SetCalendarInfoW', 'DebugBreak', 'SetConsoleCursorInfo', 'FreeLibraryAndExitThread', 'GetModuleFileNameW', 'GetConsoleAliasExesLengthW', 'WaitForDebugEvent', 'InterlockedExchangeAdd', 'CopyFileW', 'GetOEMCP', 'GetPrivateProfileStringA', 'CreateActCtxA', 'ReadConsoleInputW', 'OutputDebugStringA', 'PulseEvent', 'SetThreadAffinityMask', 'FlushConsoleInputBuffer', 'lstrlenA', 'WriteConsoleW', 'lstrcpyA', 'UnlockFile', 'FreeEnvironmentStringsA', 'GetConsoleCP', 'CreateIoCompletionPort', 'FreeConsole', 'GlobalGetAtomNameW', 'SetComputerNameA', 'GetConsoleAliasExesLengthA', 'CreateMailslotW', 'SetCommState', 'MoveFileWithProgressW', 'GetSystemTimeAdjustment', 'EnumSystemLocalesW', 'GetPrivateProfileIntA', 'WriteProfileStringW', 'GetLastError', 'OpenWaitableTimerW', 'GetConsoleAliasesLengthA', 'PeekNamedPipe', 'FillConsoleOutputCharacterW', 'BuildCommDCBAndTimeoutsA', 'GetConsoleAliasExesA', 'InterlockedIncrement', 'Sleep', 'InitializeCriticalSection', 'DeleteCriticalSection', 'EnterCriticalSection', 'LeaveCriticalSection', 'RaiseException', 'TerminateProcess', 'GetCurrentProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'RtlUnwind', 'GetModuleHandleW', 'ExitProcess', 'DeleteFileA', 'GetStartupInfoW', 'HeapValidate', 'IsBadReadPtr', 'TlsGetValue', 'TlsAlloc', 'TlsSetValue', 'GetCurrentThreadId', 'TlsFree', 'GetStdHandle', 'WriteFile', 'GetFileType', 'OutputDebugStringW', 'LoadLibraryW', 'GetModuleFileNameA', 'GetACP', 'GetCPInfo', 'IsValidCodePage', 'InitializeCriticalSectionAndSpinCount', 'SetHandleCount', 'QueryPerformanceCounter', 'GetTickCount', 'GetCurrentProcessId', 'GetSystemTimeAsFileTime', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'GetCommandLineW', 'HeapDestroy', 'HeapCreate', 'HeapFree', 'VirtualFree', 'FlushFileBuffers', 'WideCharToMultiByte', 'GetConsoleMode', 'HeapAlloc', 'HeapSize', 'HeapReAlloc', 'VirtualAlloc', 'MultiByteToWideChar', 'LCMapStringA', 'LCMapStringW', 'GetStringTypeA', 'GetStringTypeW', 'GetLocaleInfoA', 'SetFilePointer', 'SetStdHandle', 'WriteConsoleA', 'GetConsoleOutputCP', 'CloseHandle', 'CreateFileA'], ['SetErrorMode', 'LoadLibraryW', 'FlushFileBuffers', 'CloseHandle', 'CreateFileW', 'IsProcessorFeaturePresent', 'HeapReAlloc', 'GetStringTypeW', 'LCMapStringW', 'WriteConsoleW', 'SetStdHandle', 'GetSystemTimeAsFileTime', 'HeapAlloc', 'GetLastError', 'HeapFree', 'GetCommandLineW', 'HeapSetInformation', 'GetStartupInfoW', 'TerminateProcess', 'GetCurrentProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'GetProcAddress', 'GetModuleHandleW', 'ExitProcess', 'DecodePointer', 'WriteFile', 'GetStdHandle', 'GetModuleFileNameW', 'HeapCreate', 'EncodePointer', 'RaiseException', 'TlsAlloc', 'TlsGetValue', 'TlsSetValue', 'TlsFree', 'InterlockedIncrement', 'SetLastError', 'GetCurrentThreadId', 'InterlockedDecrement', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'SetHandleCount', 'InitializeCriticalSectionAndSpinCount', 'GetFileType', 'DeleteCriticalSection', 'QueryPerformanceCounter', 'GetTickCount', 'GetCurrentProcessId', 'LeaveCriticalSection', 'EnterCriticalSection', 'SetFilePointer', 'WideCharToMultiByte', 'GetConsoleCP', 'GetConsoleMode', 'GetCPInfo', 'GetACP', 'GetOEMCP', 'IsValidCodePage', 'Sleep', 'MultiByteToWideChar', 'HeapSize', 'RtlUnwind', 'PostQuitMessage', 'DefWindowProcW', 'DestroyWindow', 'UpdateWindow', 'CreateWindowExW', 'RegisterClassExW', 'DispatchMessageW', 'TranslateMessage', 'TranslateAcceleratorW', 'GetMessageW', 'LoadAcceleratorsW'], ['htonl', 'FindClose', 'FindFirstFileA', 'GetVolumeInformationA', 'WaitForSingleObject', 'CreateMutexA', 'OpenMutexA', 'ReadFile', 'FindNextFileA', 'FreeLibrary', 'GetTempPathA', 'GetSystemDirectoryA', 'GetSystemTime', 'lstrlenA', 'lstrcpynA', 'GetComputerNameA', 'OpenProcess', 'GetVersionExA', 'GetModuleFileNameA', 'LocalFree', 'LocalAlloc', 'GetCurrentProcess', 'GetCurrentThread', 'CreateMutexW', Line truncated
|
||||
function_list = ['_CorExeMain', ['LoadLibraryA', 'OpenMutexW', 'SetLocaleInfoA', 'FindNextVolumeA', 'GetNamedPipeHandleStateA', 'FileTimeToLocalFileTime', 'EnumResourceTypesA', 'EnumResourceNamesA', 'FillConsoleOutputCharacterA', 'DeleteTimerQueueTimer', 'TerminateThread', 'SetLastError', 'GetVersionExA', 'FreeResource', 'SetEvent', 'FindNextFileW', 'CopyFileExA', 'BuildCommDCBA', 'ReadConsoleOutputCharacterW', 'SetDefaultCommConfigW', 'VerLanguageNameW', 'GetCommConfig', 'WritePrivateProfileStructA', 'LocalFree', 'FindNextVolumeMountPointA', 'ReadConsoleInputA', 'WriteConsoleInputW', 'LoadResource', 'AddAtomA', 'GlobalDeleteAtom', 'GetThreadPriority', 'CallNamedPipeA', 'GetDriveTypeW', 'BuildCommDCBAndTimeoutsW', 'GetProcAddress', 'GlobalAlloc', 'GlobalFix', 'FindFirstChangeNotificationA', 'VerifyVersionInfoA', 'FormatMessageA', 'SetDllDirectoryA', 'GetModuleHandleA', 'WritePrivateProfileStringW', 'GetUserDefaultLCID', 'SetDllDirectoryW', 'SetConsoleTextAttribute', 'InterlockedDecrement', 'GetStartupInfoA', 'GetSystemWow64DirectoryW', 'CopyFileA', 'SetCalendarInfoW', 'DebugBreak', 'SetConsoleCursorInfo', 'FreeLibraryAndExitThread', 'GetModuleFileNameW', 'GetConsoleAliasExesLengthW', 'WaitForDebugEvent', 'InterlockedExchangeAdd', 'CopyFileW', 'GetOEMCP', 'GetPrivateProfileStringA', 'CreateActCtxA', 'ReadConsoleInputW', 'OutputDebugStringA', 'PulseEvent', 'SetThreadAffinityMask', 'FlushConsoleInputBuffer', 'lstrlenA', 'WriteConsoleW', 'lstrcpyA', 'UnlockFile', 'FreeEnvironmentStringsA', 'GetConsoleCP', 'CreateIoCompletionPort', 'FreeConsole', 'GlobalGetAtomNameW', 'SetComputerNameA', 'GetConsoleAliasExesLengthA', 'CreateMailslotW', 'SetCommState', 'MoveFileWithProgressW', 'GetSystemTimeAdjustment', 'EnumSystemLocalesW', 'GetPrivateProfileIntA', 'WriteProfileStringW', 'GetLastError', 'OpenWaitableTimerW', 'GetConsoleAliasesLengthA', 'PeekNamedPipe', 'FillConsoleOutputCharacterW', 'BuildCommDCBAndTimeoutsA', 'GetConsoleAliasExesA', 'InterlockedIncrement', 'Sleep', 'InitializeCriticalSection', 'DeleteCriticalSection', 'EnterCriticalSection', 'LeaveCriticalSection', 'RaiseException', 'TerminateProcess', 'GetCurrentProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'RtlUnwind', 'GetModuleHandleW', 'ExitProcess', 'DeleteFileA', 'GetStartupInfoW', 'HeapValidate', 'IsBadReadPtr', 'TlsGetValue', 'TlsAlloc', 'TlsSetValue', 'GetCurrentThreadId', 'TlsFree', 'GetStdHandle', 'WriteFile', 'GetFileType', 'OutputDebugStringW', 'LoadLibraryW', 'GetModuleFileNameA', 'GetACP', 'GetCPInfo', 'IsValidCodePage', 'InitializeCriticalSectionAndSpinCount', 'SetHandleCount', 'QueryPerformanceCounter', 'GetTickCount', 'GetCurrentProcessId', 'GetSystemTimeAsFileTime', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'GetCommandLineW', 'HeapDestroy', 'HeapCreate', 'HeapFree', 'VirtualFree', 'FlushFileBuffers', 'WideCharToMultiByte', 'GetConsoleMode', 'HeapAlloc', 'HeapSize', 'HeapReAlloc', 'VirtualAlloc', 'MultiByteToWideChar', 'LCMapStringA', 'LCMapStringW', 'GetStringTypeA', 'GetStringTypeW', 'GetLocaleInfoA', 'SetFilePointer', 'SetStdHandle', 'WriteConsoleA', 'GetConsoleOutputCP', 'CloseHandle', 'CreateFileA'], ['SetErrorMode', 'LoadLibraryW', 'FlushFileBuffers', 'CloseHandle', 'CreateFileW', 'IsProcessorFeaturePresent', 'HeapReAlloc', 'GetStringTypeW', 'LCMapStringW', 'WriteConsoleW', 'SetStdHandle', 'GetSystemTimeAsFileTime', 'HeapAlloc', 'GetLastError', 'HeapFree', 'GetCommandLineW', 'HeapSetInformation', 'GetStartupInfoW', 'TerminateProcess', 'GetCurrentProcess', 'UnhandledExceptionFilter', 'SetUnhandledExceptionFilter', 'IsDebuggerPresent', 'GetProcAddress', 'GetModuleHandleW', 'ExitProcess', 'DecodePointer', 'WriteFile', 'GetStdHandle', 'GetModuleFileNameW', 'HeapCreate', 'EncodePointer', 'RaiseException', 'TlsAlloc', 'TlsGetValue', 'TlsSetValue', 'TlsFree', 'InterlockedIncrement', 'SetLastError', 'GetCurrentThreadId', 'InterlockedDecrement', 'FreeEnvironmentStringsW', 'GetEnvironmentStringsW', 'SetHandleCount', 'InitializeCriticalSectionAndSpinCount', 'GetFileType', 'DeleteCriticalSection', 'QueryPerformanceCounter', 'GetTickCount', 'GetCurrentProcessId', 'LeaveCriticalSection', 'EnterCriticalSection', 'SetFilePointer', 'WideCharToMultiByte', 'GetConsoleCP', 'GetConsoleMode', 'GetCPInfo', 'GetACP', 'GetOEMCP', 'IsValidCodePage', 'Sleep', 'MultiByteToWideChar', 'HeapSize', 'RtlUnwind', 'PostQuitMessage', 'DefWindowProcW', 'DestroyWindow', 'UpdateWindow', 'CreateWindowExW', 'RegisterClassExW', 'DispatchMessageW', 'TranslateMessage', 'TranslateAcceleratorW', 'GetMessageW', 'LoadAcceleratorsW'], ['htonl', 'FindClose', 'FindFirstFileA', 'GetVolumeInformationA', 'WaitForSingleObject', 'CreateMutexA', 'OpenMutexA', 'ReadFile', 'FindNextFileA', 'FreeLibrary', 'GetTempPathA', 'GetSystemDirectoryA', 'GetSystemTime', 'lstrlenA', 'lstrcpynA', 'GetComputerNameA', 'OpenProcess', 'GetVersionExA', 'GetModuleFileNameA', 'LocalFree', 'LocalAlloc', 'GetCurrentProcess', 'GetCurrentThread', 'CreateMutexW', Line truncated
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
import os, sys, time, json, psutil, struct, win32api, win32con
|
||||
import requests, socket, platform, cryptocode, subprocess
|
||||
from PYAS_Language import translations
|
||||
from pefile import PE, DIRECTORY_ENTRY
|
||||
from hashlib import md5, sha1, sha256
|
||||
from PYAS_English import english_list
|
||||
from PYAE_Model import function_list
|
||||
from threading import Thread
|
||||
from random import randrange
|
||||
@@ -199,11 +199,11 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except:
|
||||
pass
|
||||
if not os.path.exists('Library/PYAS/Setup/PYAS.json'):
|
||||
self.writeConfig({"high_sensitivity":0,"language":"english"})
|
||||
self.writeConfig({"high_sensitivity":0,"language":"en_US"})
|
||||
with open('Library/PYAS/Setup/PYAS.json', 'r', encoding='utf-8') as f:
|
||||
self.pyasConfig = json.load(f)
|
||||
self.ui.Theme_White.setChecked(True)
|
||||
language = self.pyasConfig.get('language', 'english')
|
||||
language = self.pyasConfig.get('language', 'en_US')
|
||||
if language == "zh_TW":
|
||||
self.ui.Language_Traditional_Chinese.setChecked(True)
|
||||
self.lang_init_zh_tw()
|
||||
@@ -213,16 +213,15 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
else:
|
||||
self.ui.Languahe_English.setChecked(True)
|
||||
self.lang_init_en()
|
||||
|
||||
self.high_sensitivity = self.pyasConfig.get('high_sensitivity', 0)
|
||||
if self.high_sensitivity == 1:
|
||||
self.ui.high_sensitivity_switch_Button.setText(self.text_Translate("已開啟"))
|
||||
self.ui.high_sensitivity_switch_Button.setStyleSheet("""
|
||||
QPushButton{border:none;background-color:rgba(20,200,20,100);border-radius: 15px;}
|
||||
QPushButton:hover{background-color:rgba(20,200,20,120);}""")
|
||||
self.pyas_protect_init()
|
||||
Thread(target=self.pyas_protect_init).start()
|
||||
|
||||
##################################### 更改語言 #####################################
|
||||
################################### 翻譯及更改語言 ###################################
|
||||
|
||||
def Change_language(self):
|
||||
try:
|
||||
@@ -236,18 +235,16 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.lang_init_zh_cn()
|
||||
else:
|
||||
self.pyasConfig['language'] = "english"
|
||||
self.pyasConfig['language'] = "en_US"
|
||||
self.writeConfig(self.pyasConfig)
|
||||
self.lang_init_en()
|
||||
except Exception as e:
|
||||
pyas_bug_log(e)
|
||||
|
||||
####################################### 翻譯 #####################################
|
||||
|
||||
def text_Translate(self, text):
|
||||
translations = {"zh_TW": {"已开启": "已開啟","已关闭": "已關閉","On": "已開啟","Off": "已關閉"},
|
||||
"zh_CN": {"嗎": "吗","項": "项","復": "复","攔": "拦","請": "请","後": "后","鑰": "钥","統": "统","當": "当","確定": "确认","掃描": "扫描","檔案": "文件","錯誤": "错误","實時": "实时","軟體": "软件","發現": "发现","權限": "权限","惡意": "恶意","設定": "设置","關於": "关于","防護": "保护","已開啟": "已开启","已關閉": "已关闭","On": "已开启","Off": "已关闭","引導扇區":"引导扇区"},}
|
||||
return translations.get(self.pyasConfig['language'], english_list).get(text, text)
|
||||
for k, v in translations.get(self.pyasConfig['language'], translations).items():
|
||||
text = text.replace(str(k), str(v))
|
||||
return text
|
||||
|
||||
##################################### 英文初始化 ####################################
|
||||
|
||||
@@ -799,7 +796,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.high_sensitivity = 0
|
||||
except:
|
||||
try:
|
||||
config = {'high_sensitivity': 0,'language': 'english'}
|
||||
config = {'high_sensitivity': 0,'language': 'en_US'}
|
||||
self.writeConfig(config)
|
||||
except Exception as e:
|
||||
pyas_bug_log(e)
|
||||
@@ -810,29 +807,24 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
if self.ui.Theme_Red.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgba(255,140,140,200);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgba(255,130,130,200);}""")
|
||||
return
|
||||
elif self.ui.Theme_White.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgb(240,240,240);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgb(230,230,230);}""")
|
||||
return
|
||||
elif self.ui.Theme_Black.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgba(90,90,90,130);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgba(80,80,80,150);}""")
|
||||
return
|
||||
elif self.ui.Theme_Green.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgba(120,240,130,180);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgba(100,240,110,200);}""")
|
||||
return
|
||||
elif self.ui.Theme_Pink.isChecked():
|
||||
r,g,b = randrange(50, 250),randrange(50, 250),randrange(50, 250)
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgba("""+str(r)+""","""+str(g)+""","""+str(b)+""",240);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgba("""+str(r-20)+""","""+str(g-20)+""","""+str(b-20)+""",240);}""")
|
||||
return
|
||||
elif self.ui.Theme_Blue.isChecked():
|
||||
self.ui.Window_widget.setStyleSheet("""QWidget#Window_widget {background-color:rgba(0,120,240,100);}""")
|
||||
self.ui.Navigation_Bar.setStyleSheet("""QWidget#Navigation_Bar {background-color:rgba(0,120,240,120);}""")
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
##################################### 操作事件 #####################################
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
@@ -909,7 +901,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def system_notification(self,now_time,text):
|
||||
try:
|
||||
self.ui.State_output.append(f'[{now_time}] {text}')
|
||||
self.tray_icon.showMessage(now_time, text, 0)
|
||||
self.tray_icon.showMessage(now_time, text, 5)
|
||||
except:
|
||||
pass
|
||||
|
||||
@@ -920,7 +912,7 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
with open(sys.argv[0], 'rb') as f:
|
||||
file_md5 = str(md5(f.read()).hexdigest())
|
||||
try:
|
||||
response = requests.get("http://27.147.30.238:5001/pyas", params={'key': file_md5})
|
||||
response = requests.get("http://27.147.30.238:5001/pyas", params={'key': file_md5}, timeout=2)
|
||||
if response.status_code == 200 and response.text == 'True':
|
||||
with open('Library/PYAS/Setup/PYAS.key', 'w') as fc:
|
||||
fc.write(file_md5)
|
||||
@@ -982,19 +974,18 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
def pe_scan(self,file):
|
||||
try:
|
||||
fn = []
|
||||
isvir = False
|
||||
pe = PE(file)
|
||||
pe.close()
|
||||
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||
for func in entry.imports:
|
||||
fn.append(str(func.name, 'utf-8'))
|
||||
if self.high_sensitivity == 0 and fn in function_list:
|
||||
isvir = True
|
||||
return True
|
||||
elif self.high_sensitivity == 1:
|
||||
for vfl in function_list:
|
||||
if sum(1 for num in fn if num in vfl)/len(fn) >= 0.8:
|
||||
isvir = True
|
||||
return isvir
|
||||
return True
|
||||
return False
|
||||
except:
|
||||
return False
|
||||
|
||||
@@ -1169,9 +1160,9 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
question = QMessageBox.warning(self,self.text_Translate('啟用安全模式'),self.text_Translate("您確定啟用安全模式嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('bcdedit /set {default} safeboot minimal', check=True)
|
||||
question = QMessageBox.warning(self,'reboot',self.text_Translate("使用該選項後需要重啟,現在要重啟嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('shutdown -r -t 0', check=True)
|
||||
question = QMessageBox.warning(self,'reboot',self.text_Translate("使用該選項後需要重啟,現在要重啟嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('shutdown -r -t 0', check=True)
|
||||
except Exception as e:
|
||||
pyas_bug_log(e)
|
||||
QMessageBox.critical(self,self.text_Translate('錯誤'),self.text_Translate('錯誤: ')+self.text_Translate("啟用失敗"),QMessageBox.Ok)
|
||||
@@ -1181,9 +1172,9 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
question = QMessageBox.warning(self,self.text_Translate('禁用安全模式'),self.text_Translate("您確定禁用安全模式嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('bcdedit /deletevalue {current} safeboot', check=True)
|
||||
question = QMessageBox.warning(self,'reboot',self.text_Translate("使用該選項後需要重啟,現在要重啟嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('shutdown -r -t 0', check=True)
|
||||
question = QMessageBox.warning(self,'reboot',self.text_Translate("使用該選項後需要重啟,現在要重啟嗎?"),QMessageBox.Yes|QMessageBox.No,QMessageBox.Yes)
|
||||
if question == 16384:
|
||||
subprocess.run('shutdown -r -t 0', check=True)
|
||||
except Exception as e:
|
||||
pyas_bug_log(e)
|
||||
QMessageBox.critical(self,self.text_Translate('錯誤'),self.text_Translate('錯誤: ')+self.text_Translate("禁用失敗"),QMessageBox.Ok)
|
||||
@@ -1450,47 +1441,26 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
self.system_notification(time.strftime('%Y/%m/%d %H:%M:%S'),self.text_Translate('尚未啟用實時防護'))
|
||||
else:
|
||||
self.ui.Protection_illustrate.setText(self.text_Translate("正在初始化中,請稍後..."))
|
||||
self.pyas_protect_init()
|
||||
Thread(target=self.pyas_protect_init).start()
|
||||
|
||||
def protect_system_reg_repair(self):
|
||||
while self.protect_running:
|
||||
def protect_system_processes(self):
|
||||
for p in psutil.process_iter():
|
||||
try:
|
||||
Permission = ['NoControlPanel', 'NoDrives', 'NoControlPanel', 'NoFileMenu', 'NoFind', 'NoRealMode', 'NoRecentDocsMenu','NoSetFolders', \
|
||||
'NoSetFolderOptions', 'NoViewOnDrive', 'NoClose', 'NoRun', 'NoDesktop', 'NoLogOff', 'NoFolderOptions', 'RestrictRun','DisableCMD', \
|
||||
'NoViewContexMenu', 'HideClock', 'NoStartMenuMorePrograms', 'NoStartMenuMyGames', 'NoStartMenuMyMusic' 'NoStartMenuNetworkPlaces', \
|
||||
'NoStartMenuPinnedList', 'NoActiveDesktop', 'NoSetActiveDesktop', 'NoActiveDesktopChanges', 'NoChangeStartMenu', 'ClearRecentDocsOnExit', \
|
||||
'NoFavoritesMenu', 'NoRecentDocsHistory', 'NoSetTaskbar', 'NoSMHelp', 'NoTrayContextMenu', 'NoViewContextMenu', 'NoWindowsUpdate', \
|
||||
'NoWinKeys', 'StartMenuLogOff', 'NoSimpleNetlDList', 'NoLowDiskSpaceChecks', 'DisableLockWorkstation', 'NoManageMyComputerVerb',\
|
||||
'DisableTaskMgr', 'DisableRegistryTools', 'DisableChangePassword', 'Wallpaper', 'NoComponents', 'NoAddingComponents', 'Restrict_Run']
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'Explorer')#創建鍵
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'Explorer')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'ActiveDesktop')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Policies\Microsoft\Windows',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\Windows',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft',0,win32con.KEY_ALL_ACCESS),'MMC')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft\MMC',0,win32con.KEY_ALL_ACCESS),'{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}')
|
||||
keys = [win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Policies\Microsoft\Windows\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\Windows\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}',0,win32con.KEY_ALL_ACCESS)]
|
||||
for key in keys:
|
||||
for i in Permission:
|
||||
try:
|
||||
win32api.RegDeleteValue(key,i)#刪除值
|
||||
except:
|
||||
pass
|
||||
win32api.RegCloseKey(key)#關閉已打開的鍵
|
||||
time.sleep(0.0001)
|
||||
file, name = str(p.exe()), str(p.name())
|
||||
if str(sys.argv[0]) == file or ':\Windows' in file or ':\Program' in file or ':\XboxGames' in file or 'AppData' in file:
|
||||
continue
|
||||
elif self.sign_scan(file) or self.pe_scan(file) or self.api_scan('md5', file):
|
||||
if p.kill() == None:
|
||||
ntext = self.text_Translate('成功攔截惡意軟體: ')
|
||||
else:
|
||||
ntext = self.text_Translate('惡意軟體攔截失敗: ')
|
||||
self.system_notification(time.strftime('%Y/%m/%d %H:%M:%S'), ntext+name)
|
||||
except:
|
||||
pass
|
||||
continue
|
||||
|
||||
def protect_system_mbr_repair(self):
|
||||
while self.protect_running and self.mbr_value != None:
|
||||
if self.mbr_value != None:
|
||||
try:
|
||||
with open(r"\\.\PhysicalDrive0", "r+b") as f:
|
||||
if struct.unpack("<H", f.read(512)[510:512])[0] != 0xAA55:
|
||||
@@ -1500,35 +1470,56 @@ class MainWindow_Controller(QtWidgets.QMainWindow):
|
||||
except:
|
||||
pass
|
||||
|
||||
def protect_system_processes(self):
|
||||
while self.protect_running:
|
||||
for p in psutil.process_iter():
|
||||
try:
|
||||
time.sleep(0.001)
|
||||
file, name = p.exe(), p.name()
|
||||
if not file or str(sys.argv[0]) == file or ':\Windows' in file or ':\Program' in file or ':\XboxGames' in file or 'mem' in file.lower() or 'Registry' in file or 'AppData' in file:
|
||||
continue
|
||||
elif self.sign_scan(file) or self.pe_scan(file) or self.api_scan('md5', file):
|
||||
if p.kill() == None:
|
||||
ntext = self.text_Translate('成功攔截惡意軟體: ') + name
|
||||
else:
|
||||
ntext = self.text_Translate('惡意軟體攔截失敗: ') + name
|
||||
self.system_notification(time.strftime('%Y/%m/%d %H:%M:%S'), ntext)
|
||||
except:
|
||||
continue
|
||||
def protect_system_reg_repair(self):
|
||||
try:
|
||||
Permission = ['NoControlPanel', 'NoDrives', 'NoControlPanel', 'NoFileMenu', 'NoFind', 'NoRealMode', 'NoRecentDocsMenu','NoSetFolders', \
|
||||
'NoSetFolderOptions', 'NoViewOnDrive', 'NoClose', 'NoRun', 'NoDesktop', 'NoLogOff', 'NoFolderOptions', 'RestrictRun','DisableCMD', \
|
||||
'NoViewContexMenu', 'HideClock', 'NoStartMenuMorePrograms', 'NoStartMenuMyGames', 'NoStartMenuMyMusic' 'NoStartMenuNetworkPlaces', \
|
||||
'NoStartMenuPinnedList', 'NoActiveDesktop', 'NoSetActiveDesktop', 'NoActiveDesktopChanges', 'NoChangeStartMenu', 'ClearRecentDocsOnExit', \
|
||||
'NoFavoritesMenu', 'NoRecentDocsHistory', 'NoSetTaskbar', 'NoSMHelp', 'NoTrayContextMenu', 'NoViewContextMenu', 'NoWindowsUpdate', \
|
||||
'NoWinKeys', 'StartMenuLogOff', 'NoSimpleNetlDList', 'NoLowDiskSpaceChecks', 'DisableLockWorkstation', 'NoManageMyComputerVerb',\
|
||||
'DisableTaskMgr', 'DisableRegistryTools', 'DisableChangePassword', 'Wallpaper', 'NoComponents', 'NoAddingComponents', 'Restrict_Run']
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'Explorer')#創建鍵
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'Explorer')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies',0,win32con.KEY_ALL_ACCESS),'ActiveDesktop')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Policies\Microsoft\Windows',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\Windows',0,win32con.KEY_ALL_ACCESS),'System')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft',0,win32con.KEY_ALL_ACCESS),'MMC')
|
||||
win32api.RegCreateKey(win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft\MMC',0,win32con.KEY_ALL_ACCESS),'{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}')
|
||||
keys = [win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\ActiveDesktop',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'SOFTWARE\Policies\Microsoft\Windows\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,'SOFTWARE\Policies\Microsoft\Windows\System',0,win32con.KEY_ALL_ACCESS),\
|
||||
win32api.RegOpenKey(win32con.HKEY_CURRENT_USER,'Software\Policies\Microsoft\MMC\{8FC0B734-A0E1-11D1-A7D3-0000F87571E3}',0,win32con.KEY_ALL_ACCESS)]
|
||||
for key in keys:
|
||||
for i in Permission:
|
||||
try:
|
||||
win32api.RegDeleteValue(key,i)#刪除值
|
||||
except:
|
||||
pass
|
||||
win32api.RegCloseKey(key)#關閉已打開的鍵
|
||||
except:
|
||||
pass
|
||||
|
||||
def pyas_protect_init(self):
|
||||
print('[INFO] Start Action (Real-time Process Protect)')
|
||||
if self.ui.Protection_switch_Button.text() == self.text_Translate("已關閉"):
|
||||
self.protect_running = True
|
||||
Thread(target=self.protect_system_mbr_repair).start()
|
||||
Thread(target=self.protect_system_reg_repair).start()
|
||||
Thread(target=self.protect_system_processes).start()
|
||||
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);}""")
|
||||
self.system_notification(time.strftime('%Y/%m/%d %H:%M:%S'),self.text_Translate('實時防護已開啟'))
|
||||
self.protect_running = True
|
||||
while self.protect_running:
|
||||
self.protect_system_processes()
|
||||
self.protect_system_mbr_repair()
|
||||
self.protect_system_reg_repair()
|
||||
|
||||
##################################### 主初始化 #####################################
|
||||
|
||||
@@ -1536,7 +1527,7 @@ if __name__ == '__main__':
|
||||
try:
|
||||
create_lib()
|
||||
remove_tmp()
|
||||
pyas_version, pyae_version = "2.6.4", "2.3.2"
|
||||
pyas_version, pyae_version = "2.6.5", "2.3.3"
|
||||
print(f'[INFO] PYAS V{pyas_version} , PYAE V{pyae_version}')
|
||||
QtCore.QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)# 自適應窗口縮放
|
||||
QtGui.QGuiApplication.setAttribute(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
english_list = {"提示":"Tips",
|
||||
"已開啟":"On", "已關閉":"Off",
|
||||
"已开启":"On", "已关闭":"Off",
|
||||
"On":"On", "Off":"Off",
|
||||
"存取被拒":"Access denied",
|
||||
"添加數據庫":"Add database",
|
||||
"個病毒":" Virus",
|
||||
'正在掃描: ':'Scanning: ',
|
||||
"掃描失敗。":"Scan failed.",
|
||||
"病毒掃描":"Virus scan",
|
||||
"正在刪除: ":"Deleting: ",
|
||||
"請選擇掃描方式":"Please select a scan method",
|
||||
"正在初始化中,請稍後...":"Initializing, please wait...",
|
||||
'當前未發現惡意軟體。':'No malware currently found.',
|
||||
"這部裝置已受到保護":"This device has been protected",
|
||||
"這部裝置目前不安全":"This device is currently unsafe",
|
||||
"當前已發現惡意軟體共{}項。":"A total of {} items of malware have been found so far.",
|
||||
"錯誤":"Error", "錯誤: ":"Error: ",
|
||||
"安全密鑰錯誤":"Security Key Error",
|
||||
"尚未啟用實時防護":"Real-time Protect is not enabled",
|
||||
"請輸入需要尋找的檔案":"Please enter the file you want to find",
|
||||
"成功: 已執行成功。":"Success: Executed successfully.",
|
||||
"錯誤: 執行失敗。":"Error: Execution failed.",
|
||||
"完成":'Finish',
|
||||
"您確定要修復系統權限嗎?":"Are you sure you want to fix system permissions?",
|
||||
"修復完成!":"Repair complete!",
|
||||
"您確定要修復系統檔案嗎?":"Are you sure you want to repair the system files?",
|
||||
"修復系統檔案":'Repair System Files',
|
||||
"修復失敗":"Repair failed",
|
||||
'清理系統檔案':'Clean up system files',
|
||||
"您確定要清理系統檔案嗎?":"Are you sure you want to clean the system files?",
|
||||
"清理完成":"Cleanup complete",
|
||||
"清理失敗":"Cleanup failed",
|
||||
"啟用安全模式":"Enable safe mode",
|
||||
"您確定啟用安全模式嗎?":"Are you sure you enable safe mode?",
|
||||
"使用該選項後需要重啟,現在要重啟嗎?":"A reboot is required after using this option, do you want to reboot now?",
|
||||
"啟用失敗":"Enable failed",
|
||||
'禁用安全模式':'Disable safe mode',
|
||||
"您確定禁用安全模式嗎?":"Are you sure you want to disable Safe Mode?",
|
||||
"禁用失敗":"Disable failed",
|
||||
"刪除檔案":"Delete file",
|
||||
"您確定刪除該檔案嗎?":"Are you sure you want to delete this file?",
|
||||
"刪除成功":"Success to deleted",
|
||||
"刪除失敗":"Failed to delete",
|
||||
"運行成功":"Run successfully",
|
||||
"不是有效命令":"Not a valid command",
|
||||
"您輸入了錯誤的HEKY":"You entered the wrong HEKY",
|
||||
"您輸入了錯誤的TYPE":"You entered the wrong TYPE",
|
||||
"警告":"Warning",
|
||||
"您確定要新增值或是修改值嗎?":"Are you sure you want to add or modify a value?",
|
||||
"成功的創建或修改註冊表值":"Successfully created or modified registry value",
|
||||
"分析文件函數":"Analyze File Func",
|
||||
"分析文件哈希值":"Analyze File Hashes",
|
||||
"分析文件位元":"Analyze File Bits",
|
||||
'尋找結果:':'Find result:',
|
||||
'正在尋找: ':'Searching: ',
|
||||
'找到檔案: ':'File found: ',
|
||||
'未找到檔案':'File Not Found',
|
||||
'創建日期: ':'Created Date: ',
|
||||
"您確定要修改用戶密碼嗎?":"Are you sure you want to change the user password?",
|
||||
"IP查詢":"IP query",
|
||||
"您的ip地址為:{}":"Your ip address is: {}",
|
||||
"您確定要重置網路配置嗎?":"Are you sure you want to reset the network configuration?",
|
||||
"重置網路配置成功":"Reset network configuration successful",
|
||||
"設定":"Setting",
|
||||
"關於":"About",
|
||||
"結束進程":"End process",
|
||||
"啟用該選項可以實時監控進程中的惡意軟體並清除。":"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.",
|
||||
'成功攔截惡意軟體: ':'Malware blocking success: ',
|
||||
'成功修復註冊表: ':'Repair registry success: ',
|
||||
'成功修復引導扇區: PhysicalDrive0':'Repair boot sector success: PhysicalDrive0',
|
||||
'正在掃描檔案安全性: ':'Scanning file security: ',
|
||||
'惡意軟體攔截失敗: ':'Malware blocking failed: ',
|
||||
'修復系統權限':"Repair System Permissions",}
|
||||
@@ -0,0 +1,45 @@
|
||||
translations = {"zh_TW": {"已开启": "已開啟","已关闭": "已關閉","On": "已開啟","Off": "已關閉"},
|
||||
"zh_CN": {"On": "已开启","Off": "已关闭","已開啟": "已开启","已關閉": "已关闭",
|
||||
"嗎": "吗","項": "项","復": "复","攔": "拦","請": "请","掃描": "扫描",
|
||||
"鑰": "钥","統": "统","當": "当","確定": "确认","檔案": "文件",
|
||||
"權限": "权限","惡意": "恶意","設定": "设置","後": "后","發現": "发现",
|
||||
"關於": "关于","防護": "保护","軟體": "软件","引導扇區":"引导扇区",
|
||||
"錯誤": "错误","實時": "实时"},
|
||||
"en_US": {"Off":"Off","提示":"Tips","存取被拒":"Access denied","添加數據庫":"Add database",
|
||||
"個病毒":" Virus","正在掃描: ":"Scanning: ","掃描失敗。":"Scan failed.","已关闭":"Off","On":"On",
|
||||
"病毒掃描":"Virus scan","正在刪除: ":"Deleting: ","請選擇掃描方式":"Please select a scan method",
|
||||
"正在初始化中,請稍後...":"Initializing, please wait...","當前未發現惡意軟體。":"No malware currently found.",
|
||||
"這部裝置已受到保護":"This device has been protected","錯誤":"Error", "錯誤: ":"Error: ",
|
||||
"這部裝置目前不安全":"This device is currently unsafe","修復完成!":"Repair complete!",
|
||||
"當前已發現惡意軟體共{}項。":"A total of {} items of malware have been found so far.",
|
||||
"安全密鑰錯誤":"Security Key Error","完成":"Finish","修復系統檔案":"Repair System Files",
|
||||
"尚未啟用實時防護":"Real-time Protect is not enabled","修復失敗":"Repair failed",
|
||||
"請輸入需要尋找的檔案":"Please enter the file you want to find","清理失敗":"Cleanup failed",
|
||||
"成功: 已執行成功。":"Success: Executed successfully.","錯誤: 執行失敗。":"Error: Execution failed.",
|
||||
"您確定要修復系統權限嗎?":"Are you sure you want to fix system permissions?",
|
||||
"您確定要修復系統檔案嗎?":"Are you sure you want to repair the system files?",
|
||||
"清理系統檔案":"Clean up system files","清理完成":"Cleanup complete","刪除檔案":"Delete file",
|
||||
"您確定要清理系統檔案嗎?":"Are you sure you want to clean the system files?",
|
||||
"啟用安全模式":"Enable safe mode","啟用失敗":"Enable failed","禁用安全模式":"Disable safe mode",
|
||||
"您確定啟用安全模式嗎?":"Are you sure you enable safe mode?","禁用失敗":"Disable failed",
|
||||
"使用該選項後需要重啟,現在要重啟嗎?":"A reboot is required after using this option, do you want to reboot now?",
|
||||
"您確定禁用安全模式嗎?":"Are you sure you want to disable Safe Mode?","刪除失敗":"Failed to delete",
|
||||
"您確定刪除該檔案嗎?":"Are you sure you want to delete this file?","刪除成功":"Success to deleted",
|
||||
"運行成功":"Run successfully","不是有效命令":"Not a valid command","警告":"Warning",
|
||||
"您輸入了錯誤的HEKY":"You entered the wrong HEKY","分析文件函數":"Analyze File Func",
|
||||
"您輸入了錯誤的TYPE":"You entered the wrong TYPE","分析文件哈希值":"Analyze File Hashes",
|
||||
"您確定要新增值或是修改值嗎?":"Are you sure you want to add or modify a value?",
|
||||
"成功的創建或修改註冊表值":"Successfully created or modified registry value",
|
||||
"分析文件位元":"Analyze File Bits","尋找結果:":"Find result:","正在尋找: ":"Searching: ",
|
||||
"找到檔案: ":"File found: ","未找到檔案":"File Not Found","創建日期: ":"Created Date: ",
|
||||
"您確定要修改用戶密碼嗎?":"Are you sure you want to change the user password?",
|
||||
"IP查詢":"IP query","您的ip地址為:{}":"Your ip address is: {}","設定":"Setting",
|
||||
"您確定要重置網路配置嗎?":"Are you sure you want to reset the network configuration?",
|
||||
"重置網路配置成功":"Reset network configuration successful","關於":"About",
|
||||
"結束進程":"End process","成功攔截惡意軟體: ":"Malware blocking success: ",
|
||||
"啟用該選項可以實時監控進程中的惡意軟體並清除。":"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.",
|
||||
"成功修復註冊表: ":"Repair registry success: ","修復系統權限":"Repair System Permissions",
|
||||
"成功修復引導扇區: PhysicalDrive0":"Repair boot sector success: PhysicalDrive0",
|
||||
"正在掃描檔案安全性: ":"Scanning file security: ","惡意軟體攔截失敗: ":"Malware blocking failed: ",
|
||||
"實時防護已開啟":"Real-time protection is enabled","已開啟":"On", "已關閉":"Off","已开启":"On",}}
|
||||
+1
-1
@@ -11,7 +11,7 @@ class Ui_MainWindow(object):
|
||||
MainWindow.setFont(font)
|
||||
MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap("Library/PYAS/Icon/ICON.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
icon.addPixmap(QtGui.QPixmap("Library/PYAS/Icon/ICON.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
MainWindow.setWindowIcon(icon)
|
||||
MainWindow.setIconSize(QtCore.QSize(24, 24))
|
||||
MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import pyinstaller_versionfile
|
||||
pyinstaller_versionfile.create_versionfile(
|
||||
output_file="versionfile.txt",
|
||||
version='2.6.4',
|
||||
version='2.6.5',
|
||||
company_name="PYAS Security",
|
||||
file_description="Python Antivirus Software",
|
||||
internal_name="PYAS",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# PYAS (Python Antivirus Software)
|
||||
PYAS is not only free and open source without ads,Also uses multiple intelligent protection engines,Always protect the privacy and data security of users.
|
||||

|
||||
|
||||
|
||||
@@ -7,9 +6,6 @@ PYAS is not only free and open source without ads,Also uses multiple intelligent
|
||||
https://pyantivirus.wixsite.com/pyas ,
|
||||
https://github.com/87owo/PYAS
|
||||
|
||||
## Hashes Library
|
||||
https://virusshare.com/hashes
|
||||
|
||||
## MIT License
|
||||
https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
|
||||
@@ -17,7 +13,7 @@ https://github.com/87owo/PYAS/blob/main/LICENSE.md
|
||||
Windows 8.1, 10, 11 (64-bit), Ram 1GB, Rom 1GB or higher
|
||||
|
||||
## Import Module
|
||||
os, sys, time, json, psutil, struct, win32api, win32con, requests, socket, platform, cryptocode, subprocess, pefile, hashlib, PYAS_English, win10toast, threading, random, PyQt5, PYAS_UI
|
||||
os, sys, time, json, psutil, struct, win32api, win32con, requests, socket, platform, cryptocode, subprocess, pefile, hashlib, PYAS_Language, threading, random, PyQt5, PYAS_UI
|
||||
|
||||
## Special Thanks
|
||||
Wix, VirusShare, mtkiao129, LenStevens
|
||||
|
||||
Reference in new issue
Block a user