Compare commits

...
18 Commits
Author SHA1 Message Date
87owo f8dbd12b69 Add files via upload 2026-05-06 12:54:54 +08:00
87owo cf6ba66dd2 Add files via upload 2026-05-04 23:29:36 +08:00
87owo 2080b5d10a Add files via upload 2026-05-04 23:29:14 +08:00
87owo dd180977d9 Add files via upload 2026-05-04 23:28:48 +08:00
87owo 221dcbaf1b Add files via upload 2026-05-04 23:28:13 +08:00
87owo 1a2098f4fb Add files via upload 2026-05-04 23:27:50 +08:00
87owo 73eab17110 Add files via upload 2026-05-03 11:34:05 +08:00
87owo 978a336358 Update README.md 2026-05-03 03:27:57 +08:00
87owo 6a0fd4e427 Update README.md 2026-05-03 03:23:58 +08:00
87owo 5fd4efd920 Add files via upload 2026-05-03 03:20:31 +08:00
87owo 43be2987f5 Add files via upload 2026-05-02 17:47:38 +08:00
87owo 06cc048fdc Add files via upload 2026-05-02 17:47:03 +08:00
87owo 5752471420 Add files via upload 2026-05-02 16:16:46 +08:00
87owo 3dfe12b90a Add files via upload 2026-05-02 15:48:47 +08:00
87owo ad1e3501b1 Add files via upload 2026-05-02 15:33:52 +08:00
87owo 1b46572e4c Add files via upload 2026-05-02 15:09:42 +08:00
87owo 9d8e42d34c Add files via upload 2026-05-02 15:09:28 +08:00
87owo 3f6e9dab3e Add files via upload 2026-05-02 15:09:06 +08:00
9 changed files with 438 additions and 280 deletions

No files matched your search

+19 -6
View File
@@ -14,7 +14,7 @@ DB_PATH = "pe_features.db"
MODEL_FILE = "model.txt"
ONNX_FILE = "Pefile_General_S1.onnx"
FEATURE_FILE = "features.json"
TEST_SIZE = 0.0001
TEST_SIZE = 0.1
RANDOM_SEED = 42
LGBM_PARAMS = {
@@ -31,8 +31,8 @@ LGBM_PARAMS = {
'n_jobs': -1,
'max_depth': -1,
'min_data_in_leaf': 10,
'lambda_l1': 0.1,
'lambda_l2': 0.1,
'lambda_l1': 0.05,
'lambda_l2': 0.05,
}
####################################################################################################
@@ -170,11 +170,24 @@ def evaluate_and_save(model, X_test, y_test):
acc = accuracy_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_prob)
tp = np.sum((y_test == 1) & (y_pred == 1))
fn = np.sum((y_test == 1) & (y_pred == 0))
tn = np.sum((y_test == 0) & (y_pred == 0))
fp = np.sum((y_test == 0) & (y_pred == 1))
total_malware = tp + fn
total_safe = tn + fp
detection_rate = (tp / total_malware * 100) if total_malware > 0 else 0.0
fpr = (fp / total_safe * 100) if total_safe > 0 else 0.0
print(f"Accuracy : {acc:.4f}")
print(f"ROC AUC : {auc:.4f}")
print("\n" + classification_report(y_test, y_pred, zero_division=0))
print(f"ROC AUC : {auc:.4f}\n")
print(f"True Positive (Class 1) : {detection_rate:.3f}% ({tp}/{total_malware})")
print(f"False Positive (Class 0) : {fpr:.3f}% ({fp}/{total_safe})")
print("---------------------------------------------------------\n")
print("\n---------------------------------------------------------\n")
print("[*] Top 20 Features (Importance by Gain):")
feature_names = model.feature_name()
+19 -6
View File
@@ -14,7 +14,7 @@ DB_PATH = "pe_features.db"
MODEL_FILE = "model.txt"
ONNX_FILE = "Pefile_General_T1.onnx"
FEATURE_FILE = "features.json"
TEST_SIZE = 0.0001
TEST_SIZE = 0.1
RANDOM_SEED = 42
LGBM_PARAMS = {
@@ -31,8 +31,8 @@ LGBM_PARAMS = {
'n_jobs': -1,
'max_depth': -1,
'min_data_in_leaf': 10,
'lambda_l1': 0.1,
'lambda_l2': 0.1,
'lambda_l1': 0.05,
'lambda_l2': 0.05,
}
####################################################################################################
@@ -170,11 +170,24 @@ def evaluate_and_save(model, X_test, y_test):
acc = accuracy_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_prob)
tp = np.sum((y_test == 1) & (y_pred == 1))
fn = np.sum((y_test == 1) & (y_pred == 0))
tn = np.sum((y_test == 0) & (y_pred == 0))
fp = np.sum((y_test == 0) & (y_pred == 1))
total_malware = tp + fn
total_safe = tn + fp
detection_rate = (tp / total_malware * 100) if total_malware > 0 else 0.0
fpr = (fp / total_safe * 100) if total_safe > 0 else 0.0
print(f"Accuracy : {acc:.4f}")
print(f"ROC AUC : {auc:.4f}")
print("\n" + classification_report(y_test, y_pred, zero_division=0))
print(f"ROC AUC : {auc:.4f}\n")
print(f"True Positive (Class 1) : {detection_rate:.3f}% ({tp}/{total_malware})")
print(f"False Positive (Class 0) : {fpr:.3f}% ({fp}/{total_safe})")
print("---------------------------------------------------------\n")
print("\n---------------------------------------------------------\n")
print("[*] Top 20 Features (Importance by Gain):")
feature_names = model.feature_name()
+167 -167
View File
@@ -4,11 +4,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "此裝置已受到防護",
"智能掃描": "智能掃描",
"此選項可以快速掃病毒": "此選項可以快速掃描病毒",
"此選項可以快速掃描裝置安全性": "此選項可以快速掃描裝置安全性",
"日誌導出": "日誌導出",
"此選項可以篩選導出日誌": "此選項可以篩選導出日誌",
"此選項可以篩選日誌並匯出存檔": "此選項可以篩選日誌並匯出存檔",
"病毒掃描": "病毒掃描",
"此選項可以選擇掃描方式": "此選項可以選擇掃描方式",
"此選項可以選擇進階掃描方式": "此選項可以選擇進階掃描方式",
"刪除": "刪除",
"選擇": "選擇",
"檔案掃描": "檔案掃描",
@@ -16,17 +16,17 @@ window.AppI18n = {
"全盤掃描": "全盤掃描",
"停止": "停止",
"進程防護": "進程防護",
"此選項可以攔截進程病毒": "此選項可以攔截惡意進程",
"此選項可以終止惡意進程運行": "此選項可以終止惡意進程運行",
"檔案防護": "檔案防護",
"此選項可以攔截檔案變更": "此選項可以攔截惡意檔案變更",
"此選項可以隔離惡意檔案建立": "此選項可以隔離惡意檔案建立",
"系統防護": "系統防護",
"此選項可以攔截系統項目": "此選項可以防護系統關鍵項目",
"此選項可以實時修復系統異常": "此選項可以實時修復系統異常",
"驅動防護": "驅動防護",
"此選項可以增強自身防護": "此選項可以增強自身防護",
"此選項可以實時攔截惡意行為": "此選項可以實時攔截惡意行為",
"網路防護": "網路防護",
"此選項可以攔截網路通訊": "此選項可以攔截惡意網路連線",
"此選項可以攔截惡意網路連接": "此選項可以攔截惡意網路連接",
"自訂防護": "自訂防護",
"此選項可以導入自訂防護": "此選項可以導入自訂防護規則",
"此選項可以導入自訂防護規則": "此選項可以導入自訂防護規則",
"進程管理": "進程管理",
"此選項可以實時查看系統進程": "此選項可以實時查看系統進程",
"垃圾清理": "垃圾清理",
@@ -36,15 +36,15 @@ window.AppI18n = {
"彈窗攔截": "彈窗攔截",
"此選項可以選擇指定窗口攔截": "此選項可以選擇指定窗口攔截",
"白名單": "白名單",
"此選項可以管理系統白名單": "此選項可以管理系統白名單",
"此選項可以查看並管理白名單": "此選項可以查看並管理白名單",
"隔離區": "隔離區",
"此選項可以管理已隔離的檔案": "此選項可以管理已隔離的檔案",
"此選項可以查看並管理隔離區": "此選項可以查看並管理隔離區",
"增強模式": "增強模式",
"此選項可以增強掃描引擎": "此選項可以增強掃描引擎",
"此選項可以增強靜態掃描引擎": "此選項可以增強靜態掃描引擎",
"擴展引擎": "擴展引擎",
"此選項可以使用擴展引擎": "此選項可以使用擴展引擎",
"此選項可以使用擴展規則引擎": "此選項可以使用擴展規則引擎",
"雲端服務": "雲端服務",
"此選項可以上報雲端引擎": "此選項可以將可疑檔案上報至雲端",
"此選項可以自動上報可疑檔案": "此選項可以自動上報可疑檔案",
"顯色主題": "顯色主題",
"此選項可以選擇主題顏色": "此選項可以選擇主題顏色",
"白色主題": "白色主題",
@@ -108,7 +108,7 @@ window.AppI18n = {
"正在掃描": "正在掃描",
"正在刪除": "正在刪除",
"選單掃描": "選單掃描",
"此選項可以加入右鍵掃描": "此選項可以加入右鍵掃描",
"此選項可以啟用右鍵掃描功能": "此選項可以啟用右鍵掃描功能",
"刪除項目": "刪除項目",
"忽略項目": "忽略項目",
"加入隔離區": "加入隔離區",
@@ -130,11 +130,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "此设备已受到防护",
"智能掃描": "智能扫描",
"此選項可以快速掃病毒": "此选项可以快速扫描病毒",
"此選項可以快速掃描裝置安全性": "此选项可以快速扫描设备安全性",
"日誌導出": "日志导出",
"此選項可以篩選導出日誌": "此选项可以筛选并导出日志",
"此選項可以篩選日誌並匯出存檔": "此选项可以筛选日志并导出存档",
"病毒掃描": "病毒扫描",
"此選項可以選擇掃描方式": "此选项可以选择扫描方式",
"此選項可以選擇進階掃描方式": "此选项可以选择高级扫描方式",
"刪除": "删除",
"選擇": "选择",
"檔案掃描": "文件扫描",
@@ -142,19 +142,19 @@ window.AppI18n = {
"全盤掃描": "全盘扫描",
"停止": "停止",
"進程防護": "进程防护",
"此選項可以攔截進程病毒": "此选项可以拦截恶意进程",
"此選項可以終止惡意進程運行": "此选项可以终止恶意进程运行",
"檔案防護": "文件防护",
"此選項可以攔截檔案變更": "此选项可以拦截恶意文件变更",
"此選項可以隔離惡意檔案建立": "此选项可以隔离恶意文件建立",
"系統防護": "系统防护",
"此選項可以攔截系統項目": "此选项可以防护系统关键项目",
"此選項可以實時修復系統異常": "此选项可以实时修复系统异常",
"驅動防護": "驱动防护",
"此選項可以增強自身防護": "此选项可以增强自身防护",
"此選項可以實時攔截惡意行為": "此选项可以实时拦截恶意行为",
"網路防護": "网络防护",
"此選項可以攔截網路通訊": "此选项可以拦截恶意网络连线",
"此選項可以攔截惡意網路連接": "此选项可以拦截恶意网络连接",
"自訂防護": "自订防护",
"此選項可以導入自訂防護": "此选项可以导入自订防护规则",
"此選項可以導入自訂防護規則": "此选项可以导入自定义防护规则",
"進程管理": "进程管理",
"此選項可以實時查看系統进程": "此选项可以实时查看系统进程",
"此選項可以實時查看系統進程": "此选项可以实时查看系统进程",
"垃圾清理": "垃圾清理",
"此選項可以清理暫存垃圾檔案": "此选项可以清理暂存垃圾文件",
"系統修復": "系统修复",
@@ -162,15 +162,15 @@ window.AppI18n = {
"彈窗攔截": "弹窗拦截",
"此選項可以選擇指定窗口攔截": "此选项可以选择指定窗口拦截",
"白名單": "白名单",
"此選項可以管理系統白名單": "此选项可以管理系统白名单",
"此選項可以查看並管理白名單": "此选项可以查看并管理白名单",
"隔離區": "隔离区",
"此選項可以管理已隔離的檔案": "此选项可以管理已隔离的文件",
"此選項可以查看並管理隔離區": "此选项可以查看并管理隔离区",
"增強模式": "增强模式",
"此選項可以增強掃描引擎": "此选项可以增强扫描引擎",
"此選項可以增強靜態掃描引擎": "此选项可以增强静态扫描引擎",
"擴展引擎": "扩展引擎",
"此選項可以使用擴展引擎": "此选项可以使用扩展引擎",
"此選項可以使用擴展規則引擎": "此选项可以使用扩展规则引擎",
"雲端服務": "云端服务",
"此選項可以上報雲端引擎": "此选项可以将可疑文件上报至云端",
"此選項可以自動上報可疑檔案": "此选项可以自动上报可疑文件",
"顯色主題": "显色主题",
"此選項可以選擇主題顏色": "此选项可以选择主题颜色",
"白色主題": "白色主题",
@@ -234,7 +234,7 @@ window.AppI18n = {
"正在掃描": "正在扫描",
"正在刪除": "正在删除",
"選單掃描": "菜单扫描",
"此選項可以加入右鍵掃描": "此选项可以加入右键扫描菜单",
"此選項可以啟用右鍵掃描功能": "此选项可以启用右键扫描功能",
"刪除項目": "删除项目",
"忽略項目": "忽略项目",
"加入隔離區": "加入隔离区",
@@ -256,11 +256,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "This Device is Protected",
"智能掃描": "Smart Scan",
"此選項可以快速掃病毒": "Quickly scan for viruses",
"此選項可以快速掃描裝置安全性": "Quickly scan device security",
"日誌導出": "Export Logs",
"此選項可以篩選導出日誌": "Filter and export system logs",
"此選項可以篩選日誌並匯出存檔": "Filter logs and export to archive",
"病毒掃描": "Virus Scan",
"此選項可以選擇掃描方式": "Select a scanning method",
"此選項可以選擇進階掃描方式": "Select an advanced scanning method",
"刪除": "Delete",
"選擇": "Select",
"檔案掃描": "File Scan",
@@ -268,17 +268,17 @@ window.AppI18n = {
"全盤掃描": "Full Scan",
"停止": "Stop",
"進程防護": "Process Protection",
"此選項可以攔截進程病毒": "Block malicious processes",
"此選項可以終止惡意進程運行": "Terminate malicious process execution",
"檔案防護": "File Protection",
"此選項可以攔截檔案變更": "Block malicious file modifications",
"此選項可以隔離惡意檔案建立": "Quarantine malicious file creation",
"系統防護": "System Protection",
"此選項可以攔截系統項目": "Protect critical system components",
"此選項可以實時修復系統異常": "Real-time repair of system anomalies",
"驅動防護": "Driver Protection",
"此選項可以增強自身防護": "Enhance self-defense mechanisms",
"此選項可以實時攔截惡意行為": "Real-time interception of malicious behavior",
"網路防護": "Network Protection",
"此選項可以攔截網路通訊": "Block malicious network connections",
"此選項可以攔截惡意網路連接": "Block malicious network connections",
"自訂防護": "Custom Protection",
"此選項可以導入自訂防護": "Import custom protection rules",
"此選項可以導入自訂防護規則": "Import custom protection rules",
"進程管理": "Process Manager",
"此選項可以實時查看系統進程": "Monitor real-time system processes",
"垃圾清理": "Junk Cleanup",
@@ -288,15 +288,15 @@ window.AppI18n = {
"彈窗攔截": "Popup Blocker",
"此選項可以選擇指定窗口攔截": "Block specific popup windows",
"白名單": "Whitelist",
"此選項可以管理系統白名單": "Manage system whitelist",
"此選項可以查看並管理白名單": "View and manage the whitelist",
"隔離區": "Quarantine",
"此選項可以管理已隔離的檔案": "Manage quarantined files",
"此選項可以查看並管理隔離區": "View and manage the quarantine",
"增強模式": "Enhanced Mode",
"此選項可以增強掃描引擎": "Enhance the scanning engine",
"此選項可以增強靜態掃描引擎": "Enhance the static scanning engine",
"擴展引擎": "Extension Engine",
"此選項可以使用擴展引擎": "Enable external extension engines",
"此選項可以使用擴展規則引擎": "Enable extension rule engines",
"雲端服務": "Cloud Service",
"此選項可以上報雲端引擎": "Report suspicious files to the cloud",
"此選項可以自動上報可疑檔案": "Automatically report suspicious files",
"顯色主題": "Color Theme",
"此選項可以選擇主題顏色": "Select application color theme",
"白色主題": "Light Mode",
@@ -360,7 +360,7 @@ window.AppI18n = {
"正在掃描": "Scanning...",
"正在刪除": "Deleting...",
"選單掃描": "Context Menu Scan",
"此選項可以加入右鍵掃描": "Add scan option to right-click menu",
"此選項可以啟用右鍵掃描功能": "Enable right-click scan functionality",
"刪除項目": "Delete Items",
"忽略項目": "Ignore Items",
"加入隔離區": "Add to Quarantine",
@@ -382,11 +382,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "このデバイスは保護されています",
"智能掃描": "スマートスキャン",
"此選項可以快速掃病毒": "ウイルスを迅速にスキャンします",
"此選項可以快速掃描裝置安全性": "デバイスのセキュリティを迅速にスキャンします",
"日誌導出": "ログのエクスポート",
"此選項可以篩選導出日誌": "システムログをフィルタリングしてエクスポートします",
"此選項可以篩選日誌並匯出存檔": "ログをフィルタリングしてアーカイブにエクスポートします",
"病毒掃描": "ウイルススキャン",
"此選項可以選擇掃描方式": "スキャン方法を選択します",
"此選項可以選擇進階掃描方式": "高度なスキャン方法を選択します",
"刪除": "削除",
"選擇": "選択",
"檔案掃描": "ファイルスキャン",
@@ -394,17 +394,17 @@ window.AppI18n = {
"全盤掃描": "フルスキャン",
"停止": "停止",
"進程防護": "プロセス保護",
"此選項可以攔截進程病毒": "悪意のあるプロセスをブロックします",
"此選項可以終止惡意進程運行": "悪意のあるプロセスの実行を終了します",
"檔案防護": "ファイル保護",
"此選項可以攔截檔案變更": "悪意のあるファイル変更をブロックします",
"此選項可以隔離惡意檔案建立": "悪意のあるファイルの作成を隔離します",
"系統防護": "システム保護",
"此選項可以攔截系統項目": "重要なシステムコンポーネントを保護します",
"此選項可以實時修復系統異常": "システムの異常をリアルタイムで修復します",
"驅動防護": "ドライバー保護",
"此選項可以增強自身防護": "自己防衛メカニズムを強化します",
"此選項可以實時攔截惡意行為": "悪意のある動作をリアルタイムでインターセプトします",
"網路防護": "ネットワーク保護",
"此選項可以攔截網路通訊": "悪意のあるネットワーク接続をブロックします",
"此選項可以攔截惡意網路連接": "悪意のあるネットワーク接続をブロックします",
"自訂防護": "カスタム保護",
"此選項可以導入自訂防護": "カスタム保護ルールをインポートします",
"此選項可以導入自訂防護規則": "カスタム保護ルールをインポートします",
"進程管理": "プロセス管理",
"此選項可以實時查看系統進程": "システムプロセスをリアルタイムで監視します",
"垃圾清理": "ジャンククリーンアップ",
@@ -414,15 +414,15 @@ window.AppI18n = {
"彈窗攔截": "ポップアップブロック",
"此選項可以選擇指定窗口攔截": "特定のポップアップウィンドウをブロックします",
"白名單": "ホワイトリスト",
"此選項可以管理系統白名單": "システムのホワイトリストを管理します",
"此選項可以查看並管理白名單": "ホワイトリストを表示および管理します",
"隔離區": "隔離",
"此選項可以管理已隔離的檔案": "隔離されたファイルを管理します",
"此選項可以查看並管理隔離區": "隔離領域を表示および管理します",
"增強模式": "強化モード",
"此選項可以增強掃描引擎": "スキャンエンジンを強化します",
"此選項可以增強靜態掃描引擎": "静的スキャンエンジンを強化します",
"擴展引擎": "拡張エンジン",
"此選項可以使用擴展引擎": "外部拡張エンジンを有効にします",
"此選項可以使用擴展規則引擎": "拡張ルールエンジンを有効にします",
"雲端服務": "クラウドサービス",
"此選項可以上報雲端引擎": "疑わしいファイルをクラウドに報告します",
"此選項可以自動上報可疑檔案": "不審なファイルを自動的に報告します",
"顯色主題": "カラーテーマ",
"此選項可以選擇主題顏色": "アプリケーションのテーマカラーを選択します",
"白色主題": "ライトモード",
@@ -486,7 +486,7 @@ window.AppI18n = {
"正在掃描": "スキャン中...",
"正在刪除": "削除中...",
"選單掃描": "コンテキストメニュースキャン",
"此選項可以加入右鍵掃描": "右クリックメニューにスキャンオプションを追加します",
"此選項可以啟用右鍵掃描功能": "右クリックでスキャン機能を有効にします",
"刪除項目": "アイテムを削除",
"忽略項目": "アイテムを無視",
"加入隔離區": "隔離に追加",
@@ -508,11 +508,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "이 장치는 보호되고 있습니다",
"智能掃描": "스마트 스캔",
"此選項可以快速掃病毒": "바이러스를 빠르게 스캔합니다",
"此選項可以快速掃描裝置安全性": "디바이스 보안을 빠르게 스캔합니다",
"日誌導出": "로그 내보내기",
"此選項可以篩選導出日誌": "시스템 로그를 필터링하고 내보냅니다",
"此選項可以篩選日誌並匯出存檔": "로그를 필터링하고 아카이브로 내보냅니다",
"病毒掃描": "바이러스 스캔",
"此選項可以選擇掃描方式": "스캔 방법을 선택합니다",
"此選項可以選擇進階掃描方式": "고급 스캔 방법을 선택합니다",
"刪除": "삭제",
"選擇": "선택",
"檔案掃描": "파일 스캔",
@@ -520,17 +520,17 @@ window.AppI18n = {
"全盤掃描": "전체 스캔",
"停止": "정지",
"進程防護": "프로세스 보호",
"此選項可以攔截進程病毒": "악성 프로세스를 차단합니다",
"此選項可以終止惡意進程運行": "악성 프로세스 실행을 종료합니다",
"檔案防護": "파일 보호",
"此選項可以攔截檔案變更": "악의적인 파일 변경을 차단합니다",
"此選項可以隔離惡意檔案建立": "악성 파일 생성을 격리합니다",
"系統防護": "시스템 보호",
"此選項可以攔截系統項目": "중요한 시스템 구성 요소를 보호합니다",
"此選項可以實時修復系統異常": "시스템 이상을 실시간으로 복구합니다",
"驅動防護": "드라이버 보호",
"此選項可以增強自身防護": "자체 보호 메커니즘을 강화합니다",
"此選項可以實時攔截惡意行為": "악의적인 행동을 실시간으로 차단합니다",
"網路防護": "네트워크 보호",
"此選項可以攔截網路通訊": "악의적인 네트워크 연결을 차단합니다",
"此選項可以攔截惡意網路連接": "악의적인 네트워크 연결을 차단합니다",
"自訂防護": "사용자 지정 보호",
"此選項可以導入自訂防護": "사용자 지정 보호 규칙을 가져옵니다",
"此選項可以導入自訂防護規則": "사용자 지정 보호 규칙을 가져옵니다",
"進程管理": "프로세스 관리",
"此選項可以實時查看系統進程": "실시간으로 시스템 프로세스를 모니터링합니다",
"垃圾清理": "정크 정리",
@@ -540,15 +540,15 @@ window.AppI18n = {
"彈窗攔截": "팝업 차단",
"此選項可以選擇指定窗口攔截": "특정 팝업 창을 차단합니다",
"白名單": "화이트리스트",
"此選項可以管理系統白名單": "시스템 화이트리스트를 관리합니다",
"此選項可以查看並管理白名單": "화이트리스트를 보고 관리합니다",
"隔離區": "격리소",
"此選項可以管理已隔離的檔案": "격리된 파일을 관리합니다",
"此選項可以查看並管理隔離區": "격리 구역을 보고 관리합니다",
"增強模式": "고급 모드",
"此選項可以增強掃描引擎": "스캔 엔진을 강화합니다",
"此選項可以增強靜態掃描引擎": "정적 스캔 엔진을 강화합니다",
"擴展引擎": "확장 엔진",
"此選項可以使用擴展引擎": "외부 확장 엔진을 활성화합니다",
"此選項可以使用擴展規則引擎": "확장 규칙 엔진을 활성화합니다",
"雲端服務": "클라우드 서비스",
"此選項可以上報雲端引擎": "의심스러운 파일을 클라우드에 보고합니다",
"此選項可以自動上報可疑檔案": "의심스러운 파일을 자동으로 보고합니다",
"顯色主題": "색상 테마",
"此選項可以選擇主題顏色": "응용 프로그램 테마 색상을 선택합니다",
"白色主題": "라이트 모드",
@@ -591,7 +591,7 @@ window.AppI18n = {
"結束進程?": "프로세스를 종료하시겠습니까?",
"確定要結束選取的進程嗎?": "선택한 프로세스를 종료하시겠습니까?",
"已清理 ": "정리 완료 ",
"設定已重置,請重新啟동程式以套用預設值。": "설정이 초기화되었습니다. 기본값을 적용하려면 프로그램을 다시 시작하십시오.",
"設定已重置,請重新啟動程式以套用預設值。": "설정이 초기화되었습니다. 기본값을 적용하려면 프로그램을 다시 시작하십시오.",
"導出成功": "내보내기 성공",
"選取進程路徑:\n": "선택된 프로세스 경로:\n",
"對 ": "대상: ",
@@ -612,7 +612,7 @@ window.AppI18n = {
"正在掃描": "스캔 중...",
"正在刪除": "삭제 중...",
"選單掃描": "컨텍스트 메뉴 스캔",
"此選項可以加入右鍵掃描": "마우스 우클릭 메뉴에 스캔 옵션을 추가합니다",
"此選項可以啟用右鍵掃描功能": "우클릭 스캔 기능을 활성화합니다",
"刪除項目": "항목 삭제",
"忽略項目": "항목 무시",
"加入隔離區": "격리소에 추가",
@@ -634,11 +634,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Cet appareil est protégé",
"智能掃描": "Analyse intelligente",
"此選項可以快速掃病毒": "Analysez rapidement les virus",
"此選項可以快速掃描裝置安全性": "Analyser rapidement la sécurité de l'appareil",
"日誌導出": "Exporter les journaux",
"此選項可以篩選導出日誌": "Filtrer et exporter les journaux système",
"此選項可以篩選日誌並匯出存檔": "Filtrer les journaux et les exporter vers l'archive",
"病毒掃描": "Analyse antivirus",
"此選項可以選擇掃描方式": "Sélectionnez une méthode d'analyse",
"此選項可以選擇進階掃描方式": "Sélectionnez une méthode d'analyse avancée",
"刪除": "Supprimer",
"選擇": "Sélectionner",
"檔案掃描": "Analyse de fichier",
@@ -646,17 +646,17 @@ window.AppI18n = {
"全盤掃描": "Analyse complète",
"停止": "Arrêter",
"進程防護": "Protection des processus",
"此選項可以攔截進程病毒": "Bloque les processus malveillants",
"此選項可以終止惡意進程運行": "Mettre fin à l'exécution de processus malveillants",
"檔案防護": "Protection des fichiers",
"此選項可以攔截檔案變更": "Bloque les modifications de fichiers malveillantes",
"此選項可以隔離惡意檔案建立": "Mettre en quarantaine la création de fichiers malveillants",
"系統防護": "Protection du système",
"此選項可以攔截系統項目": "Protège les composants critiques du système",
"此選項可以實時修復系統異常": "Réparation en temps réel des anomalies du système",
"驅動防護": "Protection des pilotes",
"此選項可以增強自身防護": "Améliore les mécanismes d'autodéfense",
"此選項可以實時攔截惡意行為": "Interception en temps réel des comportements malveillants",
"網路防護": "Protection réseau",
"此選項可以攔截網路通訊": "Bloque les connexions réseau malveillantes",
"此選項可以攔截惡意網路連接": "Bloquer les connexions réseau malveillantes",
"自訂防護": "Protection personnalisée",
"此選項可以導入自訂防護": "Importer des règles de protection personnalisées",
"此選項可以導入自訂防護規則": "Importer des règles de protection personnalisées",
"進程管理": "Gestionnaire de processus",
"此選項可以實時查看系統進程": "Surveille les processus système en temps réel",
"垃圾清理": "Nettoyage des déchets",
@@ -666,15 +666,15 @@ window.AppI18n = {
"彈窗攔截": "Bloqueur de fenêtres contextuelles",
"此選項可以選擇指定窗口攔截": "Bloque les fenêtres contextuelles spécifiques",
"白名單": "Liste blanche",
"此選項可以管理系統白名單": "Gérer la liste blanche du système",
"此選項可以查看並管理白名單": "Afficher et gérer la liste blanche",
"隔離區": "Quarantaine",
"此選項可以管理已隔離的檔案": "Gérer les fichiers mis en quarantaine",
"此選項可以查看並管理隔離區": "Afficher et gérer la zone de quarantaine",
"增強模式": "Mode amélioré",
"此選項可以增強掃描引擎": "Améliore le moteur d'analyse",
"此選項可以增強靜態掃描引擎": "Améliorer le moteur d'analyse statique",
"擴展引擎": "Moteur d'extension",
"此選項可以使用擴展引擎": "Activer les moteurs d'extension externes",
"此選項可以使用擴展規則引擎": "Activer les moteurs de règles d'extension",
"雲端服務": "Service cloud",
"此選項可以上報雲端引擎": "Signaler les fichiers suspects au cloud",
"此選項可以自動上報可疑檔案": "Signaler automatiquement les fichiers suspects",
"顯色主題": "Thème de couleur",
"此選項可以選擇主題顏色": "Sélectionnez le thème de couleur de l'application",
"白色主題": "Mode clair",
@@ -738,7 +738,7 @@ window.AppI18n = {
"正在掃描": "Analyse en cours...",
"正在刪除": "Suppression en cours...",
"選單掃描": "Analyse du menu contextuel",
"此選項可以加入右鍵掃描": "Ajouter l'option d'analyse au menu contextuel",
"此選項可以啟用右鍵掃描功能": "Activer la fonctionnalité d'analyse par clic droit",
"刪除項目": "Supprimer les éléments",
"忽略項目": "Ignorer les éléments",
"加入隔離區": "Ajouter à la quarantaine",
@@ -760,11 +760,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Este dispositivo está protegido",
"智能掃描": "Escaneo inteligente",
"此選項可以快速掃病毒": "Escanea rápidamente en busca de virus",
"此選項可以快速掃描裝置安全性": "Escanear rápidamente la seguridad del dispositivo",
"日誌導出": "Exportar registros",
"此選項可以篩選導出日誌": "Filtrar y exportar registros del sistema",
"此選項可以篩選日誌並匯出存檔": "Filtrar registros y exportar a un archivo",
"病毒掃描": "Escaneo de virus",
"此選項可以選擇掃描方式": "Seleccione un método de escaneo",
"此選項可以選擇進階掃描方式": "Seleccione un método de escaneo avanzado",
"刪除": "Eliminar",
"選擇": "Seleccionar",
"檔案掃描": "Escaneo de archivos",
@@ -772,17 +772,17 @@ window.AppI18n = {
"全盤掃描": "Escaneo completo",
"停止": "Detener",
"進程防護": "Protección de procesos",
"此選項可以攔截進程病毒": "Bloquea procesos maliciosos",
"此選項可以終止惡意進程運行": "Terminar la ejecución de procesos maliciosos",
"檔案防護": "Protección de archivos",
"此選項可以攔截檔案變更": "Bloquea modificaciones de archivos maliciosos",
"此選項可以隔離惡意檔案建立": "Poner en cuarentena la creación de archivos maliciosos",
"系統防護": "Protección del sistema",
"此選項可以攔截系統項目": "Protege componentes críticos del sistema",
"此選項可以實時修復系統異常": "Reparación en tiempo real de anomalías del sistema",
"驅動防護": "Protección de controladores",
"此選項可以增強自身防護": "Mejora los mecanismos de autodefensa",
"此選項可以實時攔截惡意行為": "Interceptación en tiempo real de comportamientos maliciosos",
"網路防護": "Protección de red",
"此選項可以攔截網路通訊": "Bloquea conexiones de red maliciosas",
"此選項可以攔截惡意網路連接": "Bloquear conexiones de red maliciosas",
"自訂防護": "Protección personalizada",
"此選項可以導入自訂防護": "Importar reglas de protección personalizadas",
"此選項可以導入自訂防護規則": "Importar reglas de protección personalizadas",
"進程管理": "Administrador de procesos",
"此選項可以實時查看系統進程": "Monitorea procesos del sistema en tiempo real",
"垃圾清理": "Limpieza de basura",
@@ -792,15 +792,15 @@ window.AppI18n = {
"彈窗攔截": "Bloqueador de ventanas emergentes",
"此選項可以選擇指定窗口攔截": "Bloquea ventanas emergentes específicas",
"白名單": "Lista blanca",
"此選項可以管理系統白名單": "Gestionar la lista blanca del sistema",
"此選項可以查看並管理白名單": "Ver y administrar la lista blanca",
"隔離區": "Cuarentena",
"此選項可以管理已隔離的檔案": "Gestionar archivos en cuarentena",
"此選項可以查看並管理隔離區": "Ver y administrar la zona de cuarentena",
"增強模式": "Modo mejorado",
"此選項可以增強掃描引擎": "Mejora el motor de escaneo",
"此選項可以增強靜態掃描引擎": "Mejorar el motor de escaneo estático",
"擴展引擎": "Motor de extensión",
"此選項可以使用擴展引擎": "Habilitar motores de extensión externos",
"此選項可以使用擴展規則引擎": "Habilitar motores de reglas de extensión",
"雲端服務": "Servicio en la nube",
"此選項可以上報雲端引擎": "Reportar archivos sospechosos a la nube",
"此選項可以自動上報可疑檔案": "Reportar automáticamente archivos sospechosos",
"顯色主題": "Tema de color",
"此選項可以選擇主題顏色": "Seleccione el tema de color de la aplicación",
"白色主題": "Modo claro",
@@ -864,7 +864,7 @@ window.AppI18n = {
"正在掃描": "Escaneando...",
"正在刪除": "Eliminando...",
"選單掃描": "Escaneo de menú contextual",
"此選項可以加入右鍵掃描": "Añadir opción de escaneo al menú contextual",
"此選項可以啟用右鍵掃描功能": "Habilitar la función de escaneo con el botón derecho",
"刪除項目": "Eliminar elementos",
"忽略項目": "Ignorar elementos",
"加入隔離區": "Añadir a la cuarentena",
@@ -886,11 +886,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "यह डिवाइस सुरक्षित है",
"智能掃描": "स्मार्ट स्कैन",
"此選項可以快速掃病毒": "वायरस के लिए जल्दी स्कैन करें",
"此選項可以快速掃描裝置安全性": "डिवाइस सुरक्षा को जल्दी स्कैन करें",
"日誌導出": "लॉग निर्यात",
"此選項可以篩選導出日誌": "सिस्टम लॉग को फ़िल्टर और निर्यात करें",
"此選項可以篩選日誌並匯出存檔": "लॉग फ़िल्टर करें और संग्रह में निर्यात करें",
"病毒掃描": "वायरस स्कैन",
"此選項可以選擇掃描方式": "एक स्कैनिंग विधि चुनें",
"此選項可以選擇進階掃描方式": "एक उन्नत स्कैनिंग विधि चुनें",
"刪除": "हटाएं",
"選擇": "चुनें",
"檔案掃描": "फ़ाइल स्कैन",
@@ -898,17 +898,17 @@ window.AppI18n = {
"全盤掃描": "पूर्ण स्कैन",
"停止": "रोकें",
"進程防護": "प्रक्रिया सुरक्षा",
"此選項可以攔截進程病毒": "दुर्भावनापूर्ण प्रक्रियाओं को रोकें",
"此選項可以終止惡意進程運行": "दुर्भावनापूर्ण प्रक्रिया निष्पादन को समाप्त करें",
"檔案防護": "फ़ाइल सुरक्षा",
"此選項可以攔截檔案變更": "दुर्भावनापूर्ण फ़ाइल संशोधनों को रोकें",
"此選項可以隔離惡意檔案建立": "दुर्भावनापूर्ण फ़ाइल निर्माण को संगरोध करें",
"系統防護": "सिस्टम सुरक्षा",
"此選項可以攔截系統項目": "महत्वपूर्ण सिस्टम घटकों की रक्षा करें",
"此選項可以實時修復系統異常": "सिस्टम विसंगतियों की रीयल-टाइम मरम्मत",
"驅動防護": "ड्राइवर सुरक्षा",
"此選項可以增強自身防護": "आत्मरक्षा तंत्र को बढ़ाएं",
"此選項可以實時攔截惡意行為": "दुर्भावनापूर्ण व्यवहार का रीयल-टाइम अवरोधन",
"網路防護": "नेटवर्क सुरक्षा",
"此選項可以攔截網路通訊": "दुर्भावनापूर्ण नेटवर्क कनेक्शन को रोकें",
"此選項可以攔截惡意網路連接": "दुर्भावनापूर्ण नेटवर्क कनेक्शन को रोकें",
"自訂防護": "कस्टम सुरक्षा",
"此選項可以導入自訂防護": "कस्टम सुरक्षा नियम आयात करें",
"此選項可以導入自訂防護規則": "कस्टम सुरक्षा नियम आयात करें",
"進程管理": "प्रक्रिया प्रबंधक",
"此選項可以實時查看系統進程": "रीयल-टाइम में सिस्टम प्रक्रियाओं की निगरानी करें",
"垃圾清理": "कचरा सफाई",
@@ -918,15 +918,15 @@ window.AppI18n = {
"彈窗攔截": "पॉपअप ब्लॉकर",
"此選項可以選擇指定窗口攔截": "विशिष्ट पॉपअप विंडो ब्लॉक करें",
"白名單": "श्वेतसूची",
"此選項可以管理系統白名單": "सिस्टम श्वेतसूची प्रबंधित करें",
"此選項可以查看並管理白名單": "श्वेतसूची देखें और प्रबंधित करें",
"隔離區": "संगरोध",
"此選項可以管理已隔離的檔案": "संगरोधित फ़ाइलों का प्रबंधन करें",
"此選項可以查看並管理隔離區": "संगरोध क्षेत्र देखें और प्रबंधित करें",
"增強模式": "उन्नत मोड",
"此選項可以增強掃描引擎": "स्कैनिंग इंजन को बढ़ाएं",
"此選項可以增強靜態掃描引擎": "स्थिर स्कैनिंग इंजन को बढ़ाएं",
"擴展引擎": "विस्तार इंजन",
"此選項可以使用擴展引擎": "बाहरी विस्तार इंजन सक्षम करें",
"此選項可以使用擴展規則引擎": "विस्तार नियम इंजन सक्षम करें",
"雲端服務": "क्लाउड सेवा",
"此選項可以上報雲端引擎": "संदिग्ध फ़ाइलों की क्लाउड पर रिपोर्ट करें",
"此選項可以自動上報可疑檔案": "संदिग्ध फ़ाइलों की स्वचालित रूप से रिपोर्ट करें",
"顯色主題": "रंग थीम",
"此選項可以選擇主題顏色": "एप्लिकेशन का रंग थीम चुनें",
"白色主題": "लाइट मोड",
@@ -990,7 +990,7 @@ window.AppI18n = {
"正在掃描": "स्कैन कर रहा है...",
"正在刪除": "हटा रहा है...",
"選單掃描": "संदर्भ मेनू स्कैन",
"此選項可以加入右鍵掃描": "राइट-क्लिक मेनू में स्कैन विकल्प जोड़ें",
"此選項可以啟用右鍵掃描功能": "राइट-क्लिक स्कैन कार्यक्षमता सक्षम करें",
"刪除項目": "आइटम हटाएं",
"忽略項目": "आइटम अनदेखा करें",
"加入隔離區": "संगरोध में जोड़ें",
@@ -1012,11 +1012,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "هذا الجهاز محمي",
"智能掃描": "فحص ذكي",
"此選項可以快速掃病毒": "فحص سريع للفيروسات",
"此選項可以快速掃描裝置安全性": "فحص أمان الجهاز بسرعة",
"日誌導出": "تصدير السجلات",
"此選項可以篩選導出日誌": "تصفية وتصدير سجلات النظام",
"此選項可以篩選日誌並匯出存檔": "تصفية السجلات وتصديرها إلى الأرشيف",
"病毒掃描": "فحص الفيروسات",
"此選項可以選擇掃描方式": "حدد طريقة الفحص",
"此選項可以選擇進階掃描方式": "حدد طريقة فحص متقدمة",
"刪除": "حذف",
"選擇": "تحديد",
"檔案掃描": "فحص الملفات",
@@ -1024,17 +1024,17 @@ window.AppI18n = {
"全盤掃描": "فحص شامل",
"停止": "إيقاف",
"進程防護": "حماية العمليات",
"此選項可以攔截進程病毒": "يمنع العمليات الخبيثة",
"此選項可以終止惡意進程運行": "إنهاء تنفيذ العمليات الخبيثة",
"檔案防護": "حماية الملفات",
"此選項可以攔截檔案變更": "يمنع التعديلات الخبيثة على الملفات",
"此選項可以隔離惡意檔案建立": "عزل إنشاء الملفات الخبيثة",
"系統防護": "حماية النظام",
"此選項可以攔截系統項目": "يحمي مكونات النظام الحيوية",
"此選項可以實時修復系統異常": "إصلاح في الوقت الفعلي لأعطال النظام",
"驅動防護": "حماية برامج التشغيل",
"此選項可以增強自身防護": "يعزز آليات الدفاع الذاتي",
"此選項可以實時攔截惡意行為": "اعتراض السلوك الخبيث في الوقت الفعلي",
"網路防護": "حماية الشبكة",
"此選項可以攔截網路通訊": "يمنع اتصالات الشبكة الخبيثة",
"此選項可以攔截惡意網路連接": "حظر اتصالات الشبكة الخبيثة",
"自訂防護": "حماية مخصصة",
"此選項可以導入自訂防護": "استيراد قواعد حماية مخصصة",
"此選項可以導入自訂防護規則": "استيراد قواعد حماية مخصصة",
"進程管理": "مدير العمليات",
"此選項可以實時查看系統進程": "مراقبة عمليات النظام في الوقت الفعلي",
"垃圾清理": "تنظيف المخلفات",
@@ -1044,15 +1044,15 @@ window.AppI18n = {
"彈窗攔截": "حظر النوافذ المنبثقة",
"此選項可以選擇指定窗口攔截": "حظر نوافذ منبثقة معينة",
"白名單": "القائمة البيضاء",
"此選項可以管理系統白名單": "إدارة القائمة البيضاء للنظام",
"此選項可以查看並管理白名單": "عرض وإدارة القائمة البيضاء",
"隔離區": "الحجر الصحي",
"此選項可以管理已隔離的檔案": "إدارة الملفات المحجوزة",
"此選項可以查看並管理隔離區": "عرض وإدارة منطقة الحجر الصحي",
"增強模式": "وضع محسن",
"此選項可以增強掃描引擎": "يعزز محرك الفحص",
"此選項可以增強靜態掃描引擎": "تحسين محرك الفحص الثابت",
"擴展引擎": "محرك الإضافات",
"此選項可以使用擴展引擎": "تفعيل محركات الإضافات الخارجية",
"此選項可以使用擴展規則引擎": "تمكين محركات قواعد الإضافة",
"雲端服務": "خدمة السحابة",
"此選項可以上報雲端引擎": "الإبلاغ عن الملفات المشبوهة للسحابة",
"此選項可以自動上報可疑檔案": "الإبلاغ تلقائيًا عن الملفات المشبوهة",
"顯色主題": "سمة اللون",
"此選項可以選擇主題顏色": "تحديد سمة ألوان التطبيق",
"白色主題": "الوضع الفاتح",
@@ -1116,7 +1116,7 @@ window.AppI18n = {
"正在掃描": "جاري الفحص...",
"正在刪除": "جاري الحذف...",
"選單掃描": "فحص قائمة السياق",
"此選項可以加入右鍵掃描": "إضافة خيار الفحص إلى قائمة النقر الأيمن",
"此選項可以啟用右鍵掃描功能": "تمكين ميزة الفحص بزر الماوس الأيمن",
"刪除項目": "حذف العناصر",
"忽略項目": "تجاهل العناصر",
"加入隔離區": "إضافة إلى الحجر الصحي",
@@ -1138,11 +1138,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Это устройство защищено",
"智能掃描": "Умное сканирование",
"此選項可以快速掃病毒": "Быстрое сканирование на наличие вирусов",
"此選項可以快速掃描裝置安全性": "Быстрое сканирование безопасности устройства",
"日誌導出": "Экспорт журналов",
"此選項可以篩選導出日誌": "Фильтрация и экспорт системных журналов",
"此選項可以篩選日誌並匯出存檔": "Фильтрация журналов и экспорт в архив",
"病毒掃描": "Сканирование на вирусы",
"此選項可以選擇掃描方式": "Выберите метод сканирования",
"此選項可以選擇進階掃描方式": "Выберите расширенный метод сканирования",
"刪除": "Удалить",
"選擇": "Выбрать",
"檔案掃描": "Сканирование файлов",
@@ -1150,17 +1150,17 @@ window.AppI18n = {
"全盤掃描": "Полное сканирование",
"停止": "Остановить",
"進程防護": "Защита процессов",
"此選項可以攔截進程病毒": "Блокирует вредоносные процессы",
"此選項可以終止惡意進程運行": "Завершение выполнения вредоносных процессов",
"檔案防護": "Защита файлов",
"此選項可以攔截檔案變更": "Блокирует вредоносные изменения файлов",
"此選項可以隔離惡意檔案建立": "Карантин создания вредоносных файлов",
"系統防護": "Защита системы",
"此選項可以攔截系統項目": "Защищает критические системные компоненты",
"此選項可以實時修復系統異常": "Восстановление системных аномалий в реальном времени",
"驅動防護": "Защита драйверов",
"此選項可以增強自身防護": "Усиливает механизмы самозащиты",
"此選項可以實時攔截惡意行為": "Блокировка вредоносного поведения в реальном времени",
"網路防護": "Сетевая защита",
"此選項可以攔截網路通訊": "Блокирует вредоносные сетевые подключения",
"此選項可以攔截惡意網路連接": "Блокировка вредоносных сетевых подключений",
"自訂防護": "Пользовательская защита",
"此選項可以導入自訂防護": "Импорт пользовательских правил защиты",
"此選項可以導入自訂防護規則": "Импорт пользовательских правил защиты",
"進程管理": "Диспетчер процессов",
"此選項可以實時查看系統進程": "Мониторинг системных процессов в реальном времени",
"垃圾清理": "Очистка мусора",
@@ -1170,15 +1170,15 @@ window.AppI18n = {
"彈窗攔截": "Блокировщик всплывающих окон",
"此選項可以選擇指定窗口攔截": "Блокировка определенных всплывающих окон",
"白名單": "Белый список",
"此選項可以管理系統白名單": "Управление системным белым списком",
"此選項可以查看並管理白名單": "Просмотр и управление белым списком",
"隔離區": "Карантин",
"此選項可以管理已隔離的檔案": "Управление файлами в карантине",
"此選項可以查看並管理隔離區": "Просмотр и управление карантинной зоной",
"增強模式": "Расширенный режим",
"此選項可以增強掃描引擎": "Усиление механизма сканирования",
"此選項可以增強靜態掃描引擎": "Улучшение статического механизма сканирования",
"擴展引擎": "Модули расширения",
"此選項可以使用擴展引擎": "Включение внешних модулей расширения",
"此選項可以使用擴展規則引擎": "Включить механизмы правил расширения",
"雲端服務": "Облачный сервис",
"此選項可以上報雲端引擎": "Сообщить о подозрительных файлах в облако",
"此選項可以自動上報可疑檔案": "Автоматически сообщать о подозрительных файлах",
"顯色主題": "Цветовая тема",
"此選項可以選擇主題顏色": "Выберите цветовую тему приложения",
"白色主題": "Светлый режим",
@@ -1242,7 +1242,7 @@ window.AppI18n = {
"正在掃描": "Сканирование...",
"正在刪除": "Удаление...",
"選單掃描": "Сканирование из контекстного меню",
"此選項可以加入右鍵掃描": "Добавить опцию сканирования в контекстное меню",
"此選項可以啟用右鍵掃描功能": "Включить функцию сканирования по правому клику",
"刪除項目": "Удалить элементы",
"忽略項目": "Игнорировать элементы",
"加入隔離區": "Добавить в карантин",
@@ -1264,11 +1264,11 @@ window.AppI18n = {
"PYAS Security": "PYAS Security",
"此裝置已受到防護": "Ta naprava je zaščitena",
"智能掃描": "Pametno skeniranje",
"此選項可以快速掃病毒": "Hitro skeniranje za viruse",
"此選項可以快速掃描裝置安全性": "Hitro skeniranje varnosti naprave",
"日誌導出": "Izvoz dnevnikov",
"此選項可以篩選導出日誌": "Filtriranje in izvoz sistemskih dnevnikov",
"此選項可以篩選日誌並匯出存檔": "Filtriranje dnevnikov in izvoz v arhiv",
"病毒掃描": "Skeniranje virusov",
"此選項可以選擇掃描方式": "Izberite metodo skeniranja",
"此選項可以選擇進階掃描方式": "Izberite napredno metodo skeniranja",
"刪除": "Izbriši",
"選擇": "Izberi",
"檔案掃描": "Skeniranje datotek",
@@ -1276,17 +1276,17 @@ window.AppI18n = {
"全盤掃描": "Celotno skeniranje",
"停止": "Ustavi",
"進程防護": "Zaščita procesov",
"此選項可以攔截進程病毒": "Blokira zlonamerne procese",
"此選項可以終止惡意進程運行": "Končajte izvajanje zlonamernih procesov",
"檔案防護": "Zaščita datotek",
"此選項可以攔截檔案變更": "Blokira zlonamerne spremembe datotek",
"此選項可以隔離惡意檔案建立": "Karantena za ustvarjanje zlonamernih datotek",
"系統防護": "Sistemska zaščita",
"此選項可以攔截系統項目": "Ščiti kritične sistemske komponente",
"此選項可以實時修復系統異常": "Popravilo sistemskih anomalij v realnem času",
"驅動防護": "Zaščita gonilnikov",
"此選項可以增強自身防護": "Krepi samoobrambne mehanizme",
"此選項可以實時攔截惡意行為": "Prestreganje zlonamernega vedenja v realnem času",
"網路防護": "Omrežna zaščita",
"此選項可以攔截網路通訊": "Blokira zlonamerne omrežne povezave",
"此選項可以攔截惡意網路連接": "Blokiraj zlonamerne omrežne povezave",
"自訂防護": "Zaščita po meri",
"此選項可以導入自訂防護": "Uvozi pravila zaščite po meri",
"此選項可以導入自訂防護規則": "Uvozi pravila zaščite po meri",
"進程管理": "Upravitelj procesov",
"此選項可以實時查看系統進程": "Spremlja sistemske procese v realnem času",
"垃圾清理": "Čiščenje nesnage",
@@ -1296,15 +1296,15 @@ window.AppI18n = {
"彈窗攔截": "Blokator pojavnih oken",
"此選項可以選擇指定窗口攔截": "Blokira določena pojavna okna",
"白名單": "Seznam dovoljenih",
"此選項可以管理系統白名單": "Upravlja sistemski seznam dovoljenih",
"此選項可以查看並管理白名單": "Ogled in upravljanje seznama dovoljenih",
"隔離區": "Karantena",
"此選項可以管理已隔離的檔案": "Upravlja datoteke v karanteni",
"此選項可以查看並管理隔離區": "Ogled in upravljanje karantene",
"增強模式": "Izboljšan način",
"此選項可以增強掃描引擎": "Izboljša mehanizem skeniranja",
"此選項可以增強靜態掃描引擎": "Izboljša statični mehanizem skeniranja",
"擴展引擎": "Razširitveni mehanizem",
"此選項可以使用擴展引擎": "Omogoči zunanje razširitvene mehanizme",
"此選項可以使用擴展規則引擎": "Omogoči razširitvene mehanizme pravil",
"雲端服務": "Storitev v oblaku",
"此選項可以上報雲端引擎": "Poroča sumljive datoteke v oblak",
"此選項可以自動上報可疑檔案": "Samodejno prijavi sumljive datoteke",
"顯色主題": "Barvna tema",
"此選項可以選擇主題顏色": "Izberite barvno temo aplikacije",
"白色主題": "Svetel način",
@@ -1368,7 +1368,7 @@ window.AppI18n = {
"正在掃描": "Skeniranje...",
"正在刪除": "Brisanje...",
"選單掃描": "Skeniranje iz kontekstnega menija",
"此選項可以加入右鍵掃描": "Dodaj možnost skeniranja v kontekstni meni",
"此選項可以啟用右鍵掃描功能": "Omogoči funkcijo skeniranja z desnim klikom",
"刪除項目": "Izbriši elemente",
"忽略項目": "Prezri elemente",
"加入隔離區": "Dodaj v karanteno",
+166 -54
View File
@@ -149,6 +149,16 @@ document.addEventListener('DOMContentLoaded', () => {
if (widget.renderData) widget.renderData();
});
document.documentElement.lang = langMap[currentLang] || "en";
const progressText = document.getElementById('progress_text');
if (progressText && progressText.dataset.dynamicMsg) {
try {
const msgs = JSON.parse(progressText.dataset.dynamicMsg);
if (msgs[lang]) {
progressText.textContent = msgs[lang];
}
} catch (e) {}
}
};
const applyTheme = (theme) => {
@@ -201,6 +211,25 @@ document.addEventListener('DOMContentLoaded', () => {
widget.gridState.colWidths.forEach((w, idx) => {
widget.style.setProperty(`--col-${idx}`, `${w}px`);
});
listUl.addEventListener('click', (e) => {
const li = e.target.closest('.manage-list-item');
if (!li) return;
const cb = li.querySelector('input[type="checkbox"]');
if (e.target.tagName !== 'INPUT') {
cb.checked = !cb.checked;
}
if (containerSelector === '#scan_window') {
virusState.set(cb.value, cb.checked);
if (typeof checkVirusListEmpty === 'function') checkVirusListEmpty();
}
if (typeof widget.updateSelectAllState === 'function') {
widget.updateSelectAllState();
}
});
}
const state = widget.gridState;
@@ -280,7 +309,9 @@ document.addEventListener('DOMContentLoaded', () => {
virusState.set(cb.value, isChecked);
}
});
if (containerSelector === '#scan_window') checkVirusListEmpty();
if (containerSelector === '#scan_window' && typeof checkVirusListEmpty === 'function') {
checkVirusListEmpty();
}
});
let displayData = dataList.filter(item => {
@@ -312,12 +343,15 @@ document.addEventListener('DOMContentLoaded', () => {
});
}
listUl.innerHTML = '';
widget.updateSelectAllState = () => {
const total = listUl.querySelectorAll('input[type="checkbox"]').length;
const checked = listUl.querySelectorAll('input[type="checkbox"]:checked').length;
selectAllCb.checked = (total > 0 && total === checked);
selectAllCb.indeterminate = (checked > 0 && checked < total);
};
let htmlContent = '';
displayData.forEach(item => {
const li = document.createElement('li');
li.className = 'manage-list-item';
let isChecked = defaultChecked;
if (containerSelector === '#scan_window') {
isChecked = virusState.get(item[valKey]) ?? true;
@@ -331,34 +365,16 @@ document.addEventListener('DOMContentLoaded', () => {
`<div class="row-col" style="width: var(--col-${idx}); flex: 0 0 auto;" title="${String(item[col.key] || '').replace(/"/g, '&quot;')}">${item[col.key] || ''}</div>`
).join('');
li.innerHTML = `
<input type="checkbox" value="${item[valKey]}" ${checkedAttr} data-path="${item.path || ''}">
<div class="manage-list-item-content">${rowColsHtml}</div>
htmlContent += `
<li class="manage-list-item">
<input type="checkbox" value="${item[valKey]}" ${checkedAttr} data-path="${item.path || ''}">
<div class="manage-list-item-content">${rowColsHtml}</div>
</li>
`;
li.addEventListener('click', (e) => {
if (e.target.tagName !== 'INPUT') {
const cb = li.querySelector('input');
cb.checked = !cb.checked;
}
if (containerSelector === '#scan_window') {
const cb = li.querySelector('input');
virusState.set(item[valKey], cb.checked);
checkVirusListEmpty();
}
updateSelectAllState();
});
listUl.appendChild(li);
});
function updateSelectAllState() {
const total = listUl.querySelectorAll('input[type="checkbox"]').length;
const checked = listUl.querySelectorAll('input[type="checkbox"]:checked').length;
selectAllCb.checked = (total > 0 && total === checked);
selectAllCb.indeterminate = (checked > 0 && checked < total);
}
updateSelectAllState();
listUl.innerHTML = htmlContent;
widget.updateSelectAllState();
};
widget.renderData();
@@ -582,26 +598,40 @@ document.addEventListener('DOMContentLoaded', () => {
checkVirusListEmpty();
};
const removeListItems = (removedPaths) => {
const removedSet = new Set(removedPaths);
removedPaths.forEach(p => virusState.delete(p));
window.virusResults = window.virusResults.filter(v => !removedSet.has(v.path));
const listUl = document.querySelector('#scan_window .virus-list');
if (listUl) {
listUl.querySelectorAll('.manage-list-item').forEach(li => {
const cb = li.querySelector('input[type="checkbox"]');
if (cb && removedSet.has(cb.value)) {
li.remove();
}
});
}
const widget = document.querySelector('#scan_window .virus-widget');
if (widget && typeof widget.updateSelectAllState === 'function') {
widget.updateSelectAllState();
}
};
if (action === 'delete') {
window.pywebview.api.solve_scan(paths).then((deletedPaths) => {
const deletedSet = new Set(deletedPaths);
deletedPaths.forEach(p => virusState.delete(p));
window.virusResults = window.virusResults.filter(v => !deletedSet.has(v.path));
renderDataGrid('#scan_window', window.virusResults, cols.virus, 'path', true);
removeListItems(deletedPaths);
finalizeAction();
});
} else if (action === 'ignore') {
paths.forEach(p => virusState.delete(p));
window.virusResults = window.virusResults.filter(v => !paths.includes(v.path));
renderDataGrid('#scan_window', window.virusResults, cols.virus, 'path', true);
removeListItems(paths);
finalizeAction();
} else if (action === 'quarantine' || action === 'whitelist') {
const listKey = action === 'quarantine' ? 'quarantine' : 'white_list';
window.pywebview.api.manage_named_list(listKey, paths, 'add').then(() => {
window.pywebview.api.remove_virus_result(paths).then(() => {
paths.forEach(p => virusState.delete(p));
window.virusResults = window.virusResults.filter(v => !paths.includes(v.path));
renderDataGrid('#scan_window', window.virusResults, cols.virus, 'path', true);
removeListItems(paths);
finalizeAction();
});
});
@@ -612,31 +642,95 @@ document.addEventListener('DOMContentLoaded', () => {
updateCustomSelectUI('scan_method_select', 'none');
if (virusState.size === 0) {
changeScanSelectMode('scan');
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "病毒掃描";
progressTitle.textContent = getMsg("病毒掃描");
}
if (progressText) {
progressText.setAttribute('data-i18n', '');
progressText.removeAttribute('data-dynamic-msg');
progressText.dataset.originText = "此選項可以選擇進階掃描方式";
progressText.textContent = getMsg("此選項可以選擇進階掃描方式");
}
}
}
window.addVirusResult = (label, path) => {
if (!window.virusResults.some(v => v.path === path)) {
window.virusResults.push({ label: label, path: path });
if (!virusState.has(path)) {
const item = { label: label, path: path };
window.virusResults.push(item);
virusState.set(path, true);
renderDataGrid('#scan_window', window.virusResults, cols.virus, 'path', true);
const listUl = document.querySelector('#scan_window .virus-list');
const widget = document.querySelector('#scan_window .virus-widget');
if (listUl && widget && widget.gridState) {
const rowColsHtml = cols.virus.map((col, idx) =>
`<div class="row-col" style="width: var(--col-${idx}); flex: 0 0 auto;" title="${String(item[col.key] || '').replace(/"/g, '&quot;')}">${item[col.key] || ''}</div>`
).join('');
const liHtml = `
<li class="manage-list-item">
<input type="checkbox" value="${path}" checked data-path="${path}">
<div class="manage-list-item-content">${rowColsHtml}</div>
</li>
`;
listUl.insertAdjacentHTML('beforeend', liHtml);
if (typeof widget.updateSelectAllState === 'function') {
widget.updateSelectAllState();
}
} else {
renderDataGrid('#scan_window', window.virusResults, cols.virus, 'path', true);
}
}
};
window.updateScanProgress = (path) => {
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = path;
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "正在掃描";
progressTitle.textContent = getMsg("正在掃描");
}
if (progressText) {
progressText.removeAttribute('data-i18n');
progressText.removeAttribute('data-dynamic-msg');
progressText.textContent = path;
}
};
window.updateDeleteProgress = (path) => {
if (progressTitle) progressTitle.textContent = getMsg("正在刪除");
progressText.textContent = path;
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "正在刪除";
progressTitle.textContent = getMsg("正在刪除");
}
if (progressText) {
progressText.removeAttribute('data-i18n');
progressText.removeAttribute('data-dynamic-msg');
progressText.textContent = path;
}
};
window.finishScan = (msg, count) => {
window.finishScan = (msgData, count) => {
isScanning = false;
if (progressTitle) progressTitle.textContent = getMsg("病毒掃描");
progressText.textContent = msg;
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "病毒掃描";
progressTitle.textContent = getMsg("病毒掃描");
}
if (progressText) {
progressText.removeAttribute('data-i18n');
if (typeof msgData === 'object' && msgData !== null) {
progressText.dataset.dynamicMsg = JSON.stringify(msgData);
progressText.textContent = msgData[currentLang] || msgData["english_switch"];
} else {
progressText.removeAttribute('data-dynamic-msg');
progressText.textContent = msgData;
}
}
stopBtn.classList.add('hidden');
scanMethodSelect.classList.remove('hidden');
@@ -658,8 +752,17 @@ document.addEventListener('DOMContentLoaded', () => {
scanMethodSelect.classList.add('hidden');
stopBtn.classList.remove('hidden');
stopBtn.disabled = false;
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = getMsg("正在初始化中");
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "正在掃描";
progressTitle.textContent = getMsg("正在掃描");
}
if (progressText) {
progressText.setAttribute('data-i18n', '');
progressText.removeAttribute('data-dynamic-msg');
progressText.dataset.originText = "正在初始化中";
progressText.textContent = getMsg("正在初始化中");
}
window.pywebview.api.trigger_scan(method);
}
@@ -731,8 +834,17 @@ document.addEventListener('DOMContentLoaded', () => {
scanMethodSelect.classList.add('hidden');
stopBtn.classList.remove('hidden');
changeScanSelectMode('scan');
if (progressTitle) progressTitle.textContent = getMsg("正在掃描");
progressText.textContent = getMsg("正在初始化中");
if (progressTitle) {
progressTitle.setAttribute('data-i18n', '');
progressTitle.dataset.originText = "正在掃描";
progressTitle.textContent = getMsg("正在掃描");
}
if (progressText) {
progressText.setAttribute('data-i18n', '');
progressText.removeAttribute('data-dynamic-msg');
progressText.dataset.originText = "正在初始化中";
progressText.textContent = getMsg("正在初始化中");
}
window.pywebview.api.start_scan([path]);
}
};
+15 -15
View File
@@ -60,13 +60,13 @@
<div class="quick-actions">
<div class="list-item" style="cursor: pointer;" id="quick_scan_btn" data-action="scan">
<div class="item-info">
<h2 data-i18n>智能掃描</h2><p data-i18n>此選項可以快速掃病毒</p>
<h2 data-i18n>智能掃描</h2><p data-i18n>此選項可以快速掃描裝置安全性</p>
</div>
<button class="icon-action-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></button>
</div>
<div class="list-item" style="cursor: pointer;" data-target="log_export_window">
<div class="item-info">
<h2 data-i18n>日誌導出</h2><p data-i18n>此選項可以篩選導出日誌</p>
<h2 data-i18n>日誌導出</h2><p data-i18n>此選項可以篩選日誌並匯出存檔</p>
</div>
<button class="icon-action-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></button>
</div>
@@ -81,7 +81,7 @@
<div class="progress-widget">
<div class="header-group">
<h2 class="section-title" data-i18n>病毒掃描</h2>
<p class="section-desc" id="progress_text" data-i18n>此選項可以選擇掃描方式</p>
<p class="section-desc" id="progress_text" data-i18n>此選項可以選擇進階掃描方式</p>
</div>
<div class="action-group modern-action-group">
<select id="scan_method_select" class="modern-select">
@@ -105,37 +105,37 @@
<div class="list-widget">
<div class="list-item">
<div class="item-info">
<h2 data-i18n>進程防護</h2><p data-i18n>此選項可以攔截進程病毒</p>
<h2 data-i18n>進程防護</h2><p data-i18n>此選項可以終止惡意進程運行</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>檔案防護</h2><p data-i18n>此選項可以攔截檔案變更</p>
<h2 data-i18n>檔案防護</h2><p data-i18n>此選項可以隔離惡意檔案建立</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>系統防護</h2><p data-i18n>此選項可以攔截系統項目</p>
<h2 data-i18n>系統防護</h2><p data-i18n>此選項可以實時修復系統異常</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>驅動防護</h2><p data-i18n>此選項可以增強自身防護</p>
<h2 data-i18n>驅動防護</h2><p data-i18n>此選項可以實時攔截惡意行為</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>網路防護</h2><p data-i18n>此選項可以攔截網路通訊</p>
<h2 data-i18n>網路防護</h2><p data-i18n>此選項可以攔截惡意網路連接</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item" style="cursor: pointer;" data-target="custom_protect_window">
<div class="item-info">
<h2 data-i18n>自訂防護</h2><p data-i18n>此選項可以導入自訂防護</p>
<h2 data-i18n>自訂防護</h2><p data-i18n>此選項可以導入自訂防護規則</p>
</div>
<button class="icon-action-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></button>
</div>
@@ -170,13 +170,13 @@
</div>
<div class="list-item" style="cursor: pointer;" data-target="whitelist_window">
<div class="item-info">
<h2 data-i18n>白名單</h2><p data-i18n>此選項可以管理系統白名單</p>
<h2 data-i18n>白名單</h2><p data-i18n>此選項可以查看並管理白名單</p>
</div>
<button class="icon-action-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></button>
</div>
<div class="list-item" style="cursor: pointer;" data-target="quarantine_window">
<div class="item-info">
<h2 data-i18n>隔離區</h2><p data-i18n>此選項可以管理已隔離的檔案</p>
<h2 data-i18n>隔離區</h2><p data-i18n>此選項可以查看並管理隔離區</p>
</div>
<button class="icon-action-btn"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 18 15 12 9 6"></polyline></svg></button>
</div>
@@ -187,25 +187,25 @@
<div class="list-widget">
<div class="list-item">
<div class="item-info">
<h2 data-i18n>增強模式</h2><p data-i18n>此選項可以增強掃描引擎</p>
<h2 data-i18n>增強模式</h2><p data-i18n>此選項可以增強靜態掃描引擎</p>
</div>
<label class="toggle-switch"><input type="checkbox"><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>擴展引擎</h2><p data-i18n>此選項可以使用擴展引擎</p>
<h2 data-i18n>擴展引擎</h2><p data-i18n>此選項可以使用擴展規則引擎</p>
</div>
<label class="toggle-switch"><input type="checkbox"><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>雲端服務</h2><p data-i18n>此選項可以上報雲端引擎</p>
<h2 data-i18n>雲端服務</h2><p data-i18n>此選項可以自動上報可疑檔案</p>
</div>
<label class="toggle-switch"><input type="checkbox" checked><span class="slider"></span></label>
</div>
<div class="list-item">
<div class="item-info">
<h2 data-i18n>選單掃描</h2><p data-i18n>此選項可以加入右鍵掃描</p>
<h2 data-i18n>選單掃描</h2><p data-i18n>此選項可以啟用右鍵掃描功能</p>
</div>
<label class="toggle-switch"><input type="checkbox"><span class="slider"></span></label>
</div>
+41 -30
View File
@@ -435,12 +435,13 @@ class WindowAPI:
self.logs_data = []
self.tray_icon = None
self.engine_initialized = False
self.logs_dirty = False
self.lock_proc = threading.RLock()
self.lock_net = threading.RLock()
self.pyas_default = {
"version": "3.5.2",
"version": "3.5.3",
"api_host": "https://pyas-security.com/",
"api_key": "fBRZxYS1UxykM-qzNOlKOEl63WILzlvgNMn6QfsG6FXCAAIktCrOPTAfY5_hEyuZ",
"suffix": [".exe", ".dll", ".sys", ".ocx", ".scr", ".efi", ".acm", ".ax", ".cpl", ".drv", ".com", ".mui", ".pyd"],
@@ -470,6 +471,8 @@ class WindowAPI:
]
self.thread_pool = ThreadPoolExecutor(max_workers=8)
self.start_daemon_thread(self.log_flush_thread)
for _ in range(2):
self.start_daemon_thread(self.cloud_worker)
@@ -605,6 +608,21 @@ class WindowAPI:
except Exception:
self.logs_data = []
def log_flush_thread(self):
while True:
time.sleep(5)
with self.lock_logs:
if getattr(self, 'logs_dirty', False):
try:
os.makedirs(os.path.dirname(self.file_log), exist_ok=True)
with open(self.file_log, "w", encoding="utf-8") as f:
json.dump(self.logs_data, f, indent=4, ensure_ascii=False)
self.logs_dirty = False
except Exception:
pass
def write_log(self, level, action, detail=None, code=None, pid=None, file_hash=None, source=None, target=None, operate=None, success=True):
with self.lock_logs:
entry = {
@@ -623,15 +641,11 @@ class WindowAPI:
"success": success
}
self.logs_data.append(entry)
if len(self.logs_data) > 10000:
self.logs_data = self.logs_data[-10000:]
if len(self.logs_data) > 1000:
self.logs_data = self.logs_data[-1000:]
try:
os.makedirs(os.path.dirname(self.file_log), exist_ok=True)
with open(self.file_log, "w", encoding="utf-8") as f:
json.dump(self.logs_data, f, indent=4, ensure_ascii=False)
except Exception:
pass
self.logs_dirty = True
if self._window:
self._window.evaluate_js(f"if(window.updateLogs) window.updateLogs({json.dumps(entry)});")
@@ -908,6 +922,7 @@ class WindowAPI:
####################################################################################################
def scan_worker(self, targets):
last_update = 0.0
try:
for file_path in self.yield_files(targets):
with self.lock_virus:
@@ -918,6 +933,12 @@ class WindowAPI:
if not norm_path:
continue
current_time = time.time()
if current_time - last_update >= 0.05:
if self._window:
self._window.evaluate_js(f"if(window.updateScanProgress) window.updateScanProgress({json.dumps(norm_path.replace(os.sep, '/'))});")
last_update = current_time
was_locked = False
try:
with self.lock_file_ops:
@@ -947,9 +968,6 @@ class WindowAPI:
self.cloud_check(norm_path)
self.write_log("SCAN", "Virus Detected", source=norm_path, file_hash=self.calc_file_hash(norm_path))
if self._window:
self._window.evaluate_js(f"if(window.updateScanProgress) window.updateScanProgress({json.dumps(norm_path.replace(os.sep, '/'))});")
except Exception as e:
self.write_log("WARN", "Scan Engine", source=norm_path, detail=str(e), success=False)
finally:
@@ -961,9 +979,6 @@ class WindowAPI:
count = len(self.virus_results)
elapsed = int(time.time() - self.scan_start)
scanned = self.scan_count
with self.lock_config:
lang = self.pyas_config.get("language", "traditional_switch")
messages = {
"traditional_switch": f"發現 {count} 個病毒,掃描 {scanned} 個檔案,耗時 {elapsed} 秒",
@@ -978,10 +993,9 @@ class WindowAPI:
"russian_switch": f"Найдено {count} вирусов, проверено {scanned} файлов, время {elapsed}с",
"slovenian_switch": f"Najdenih {count} virusov, skeniranih {scanned} datotek, čas {elapsed}s"
}
result_msg = messages.get(lang, messages["traditional_switch"])
if self._window:
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(result_msg)}, {count});")
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(messages)}, {count});")
self.write_log("INFO", "Scan Completed", detail=f"Found {count} viruses, scanned {scanned} files, time {elapsed}s")
####################################################################################################
@@ -1034,6 +1048,8 @@ class WindowAPI:
if norm_p:
proc_map.setdefault(os.path.normcase(norm_p), []).append(proc["pid"])
last_update = 0.0
with self.lock_virus:
deleted_set = set()
for raw_path in file_paths:
@@ -1041,8 +1057,11 @@ class WindowAPI:
if not path:
continue
if self._window:
self._window.evaluate_js(f"if(window.updateDeleteProgress) window.updateDeleteProgress({json.dumps(path.replace(os.sep, '/'))});")
current_time = time.time()
if current_time - last_update >= 0.05:
if self._window:
self._window.evaluate_js(f"if(window.updateDeleteProgress) window.updateDeleteProgress({json.dumps(path.replace(os.sep, '/'))});")
last_update = current_time
try:
if path in self.virus_lock:
@@ -1073,9 +1092,6 @@ class WindowAPI:
self.virus_results = [p for p in self.virus_results if p not in deleted_set]
remaining = len(self.virus_results)
with self.lock_config:
lang = self.pyas_config.get("language", "traditional_switch")
messages = {
"traditional_switch": f"剩餘 {remaining} 個病毒,已刪除 {len(deleted_paths)} 個檔案。",
@@ -1090,10 +1106,9 @@ class WindowAPI:
"russian_switch": f"Осталось вирусов: {remaining}, удалено файлов: {len(deleted_paths)}.",
"slovenian_switch": f"Preostalih virusov: {remaining}, izbrisanih datotek: {len(deleted_paths)}."
}
result_msg = messages.get(lang, messages["traditional_switch"])
if self._window:
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(result_msg)}, {remaining});")
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(messages)}, {remaining});")
return deleted_paths
def remove_virus_result(self, paths):
@@ -1105,9 +1120,6 @@ class WindowAPI:
####################################################################################################
def trigger_scan(self, method):
with self.lock_config:
lang = self.pyas_config.get("language", "traditional_switch")
messages = {
"traditional_switch": "已取消掃描",
"simplified_switch": "已取消扫描",
@@ -1121,7 +1133,6 @@ class WindowAPI:
"russian_switch": "Сканирование отменено",
"slovenian_switch": "Skeniranje preklicano"
}
cancel_msg = messages.get(lang, messages["traditional_switch"])
targets = []
if method == "smart":
@@ -1144,7 +1155,7 @@ class WindowAPI:
self.start_scan(targets)
else:
if self._window:
self._window.evaluate_js(f"if(window.finishScan) window.finishScan('{cancel_msg}', 0);")
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(messages)}, 0);")
elif method == "path":
targets = self.select_folder()
@@ -1152,7 +1163,7 @@ class WindowAPI:
self.start_scan(targets)
else:
if self._window:
self._window.evaluate_js(f"if(window.finishScan) window.finishScan('{cancel_msg}', 0);")
self._window.evaluate_js(f"if(window.finishScan) window.finishScan({json.dumps(messages)}, 0);")
elif method == "full":
targets = [f"{chr(d)}:/" for d in range(65, 91) if os.path.exists(f"{chr(d)}:/")]
+1 -1
View File
@@ -2,7 +2,7 @@ import pyinstaller_versionfile
pyinstaller_versionfile.create_versionfile(
output_file="versionfile.txt",
version='3.5.2.0',
version='3.5.3.0',
company_name="PYAS Security",
file_description="PYAS Security Antivirus",
internal_name="PYAS",
+4 -1
View File
@@ -47,7 +47,6 @@
"*\\DisableTaskMgr",
"*\\DisableRegistryTools",
"*\\DisableChangePassword",
"*\\Wallpaper",
"*\\NoComponents",
"*\\NoStartMenuMorePrograms",
"*\\NoActiveDesktop",
@@ -125,6 +124,9 @@
"*\\XLLiveUD.exe",
"*\\PC4399_WPFLauncher.exe",
"*\\bin\\APlayer.exe",
"*\\hrkill-*.exe",
"*\\bin\\HipsDaemon.exe",
"*\\360Safe.exe",
],
"Rule_Process_ExploitableBlacklist": [
"*\\cmd.exe",
@@ -203,6 +205,7 @@
"*\\ventoy\\Boot\\*",
"*\\AdminRegionConfig.*",
"*\\nt_qq\\nt_*\\*",
"*\\cache\\*",
],
"Rule_File_RansomwareExtensions": [
".zip", ".7z", ".rar", ".tar", ".gz",
+6
View File
@@ -127,6 +127,12 @@ graph TD
BootProtect -->|IOCTL_DISK_FORMAT_TRACKS...| Disk
```
## Machine Learning
The machine learning-based virus scanning engine training achieved extremely high accuracy.
<img width="1191" height="1323" alt="train" src="https://github.com/user-attachments/assets/2eea8426-1f82-44e3-9a38-f96f9257cf50" />
## Support System
Please ensure your computer supports Microsoft Visual C++ 2015-2022 Redistributable and Edge Webview2.