100%
🖱️ 滾輪縮放
✋ 拖拽移動
⌨️ R鍵重置
graph TB %% 定義樣式 classDef clientNode fill:#e1f5fe,stroke:#01579b,stroke-width:2px classDef serverNode fill:#f3e5f5,stroke:#4a148c,stroke-width:2px classDef processNode fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px classDef dbNode fill:#fff3e0,stroke:#e65100,stroke-width:2px classDef monitorNode fill:#ffebee,stroke:#b71c1c,stroke-width:2px %% 客戶端啟動流程 subgraph "🔄 客戶端啟動流程" A1[客戶端啟動] --> A2[生成Client ID] A2 --> A3[註冊到Server] A3 --> A4[下載病毒庫定義] A4 --> A5[下載YARA規則] A5 --> A6[啟動檔案監控] A6 --> A7[啟動網路監控] end %% 定時同步流程 subgraph "🔄 定時同步流程" B1[每30分鐘檢查] --> B2{病毒庫有更新?} B2 -->|是| B3[下載新病毒庫] B2 -->|否| B4[等待下次檢查] B3 --> B5[更新本地Hash庫] B5 --> B6[更新YARA規則] B6 --> B7[重新載入規則] end %% 檔案掃描流程 subgraph "🔍 檔案掃描流程" C1[檔案變更事件] --> C2[計算檔案Hash] C2 --> C3[Hash比對檢查] C3 --> C4{找到匹配?} C4 -->|是| C5[觸發警報] C4 -->|否| C6[YARA規則掃描] C6 --> C7{YARA匹配?} C7 -->|是| C5 C7 -->|否| C8[檔案安全] C5 --> C9[隔離檔案] C9 --> C10[生成掃描報告] C10 --> C11[上報到Server] end %% 網路監控流程 subgraph "🌐 網路監控流程" D1[網路連接事件] --> D2[分析連接模式] D2 --> D3{可疑模式?} D3 -->|是| D4[記錄掃描事件] D3 -->|否| D5[允許連接] D4 --> D6{自動封鎖?} D6 -->|是| D7[封鎖連接] D6 -->|否| D8[標記為可疑] D7 --> D9[生成網路報告] D9 --> D10[上報到Server] end %% Server處理流程 subgraph "🖥️ Server處理流程" E1[接收客戶端註冊] --> E2[儲存客戶端信息] E2 --> E3[返回病毒庫版本] E4[接收掃描報告] --> E5[儲存到資料庫] E5 --> E6[更新統計數據] E7[接收網路報告] --> E8[分析威脅模式] E8 --> E9[儲存威脅記錄] E10[管理員操作] --> E11[查看儀表板] E11 --> E12[管理隔離檔案] E12 --> E13[更新病毒定義] end %% USB監控流程 subgraph "💾 USB裝置監控" F1[USB裝置插入] --> F2[檢查白名單] F2 --> F3{在白名單中?} F3 -->|是| F4[允許存取] F3 -->|否| F5[封鎖裝置] F5 --> F6[上報安全事件] end %% 資料庫結構 subgraph "🗄️ 資料庫結構" DB1[(客戶端表
clients)] --> DB2[(掃描報告表
scan_reports)] DB2 --> DB3[(感染檔案表
infected_files)] DB3 --> DB4[(隔離檔案表
quarantined_files)] DB4 --> DB5[(病毒定義表
virus_hashes)] DB5 --> DB6[(網路掃描表
network_scan_reports)] end %% 連接關係 A3 -.-> E1 A4 -.-> E3 C11 -.-> E4 D10 -.-> E7 F6 -.-> E9 B1 -.-> E10 %% 應用樣式 class A1,A2,A3,A4,A5,A6,A7 clientNode class E1,E2,E3,E4,E5,E6,E7,E8,E9,E10,E11,E12,E13 serverNode class C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11 processNode class D1,D2,D3,D4,D5,D6,D7,D8,D9,D10 monitorNode class F1,F2,F3,F4,F5,F6 monitorNode class DB1,DB2,DB3,DB4,DB5,DB6 dbNode class B1,B2,B3,B4,B5,B6,B7 processNode