Compare commits

...
11 Commits
Author SHA1 Message Date
PYDT 08bdd870a5 Add files via upload 2023-04-13 19:40:46 +08:00
PYDT 54a43f6045 Update README.md 2023-04-13 10:05:56 +08:00
PYDT 25a9cc3608 Update README.md 2023-04-13 10:03:14 +08:00
PYDT 7f52a53e62 Add files via upload 2023-04-13 10:00:49 +08:00
PYDT 20e9c82854 Delete ICON.bmp 2023-04-13 09:58:45 +08:00
PYDT fe92e53f7b Delete Viruslist.num 2023-04-13 09:58:30 +08:00
PYDT 130aeb01b9 Add files via upload 2023-04-13 09:57:55 +08:00
PYDT 7439b5e362 Delete PYAS_English.py 2023-04-12 15:15:24 +08:00
PYDT 166059b9bd Add files via upload 2023-04-12 15:15:12 +08:00
PYDT 7e5fc40768 Add files via upload 2023-04-09 20:32:12 +08:00
PYDT aadb2c1e40 Add files via upload 2023-04-09 14:19:03 +08:00
9 changed files with 129 additions and 173 deletions

No files matched your search

-1
View File
@@ -1 +0,0 @@
0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

+1 -1
View File
@@ -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
+80 -89
View File
@@ -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)
-75
View File
@@ -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",}
+45
View File
@@ -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
View File
@@ -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 -1
View File
@@ -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
View File
@@ -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.
![PYAS](https://user-images.githubusercontent.com/85057800/202692146-e55848d5-7e24-405d-b33d-f4fa3883fba6.png)
@@ -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