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