@dimzxzzx07/file-watcher 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +13 -0
- package/.eslintrc.json +128 -0
- package/.prettierrc +18 -0
- package/Dimzxzzx07.png +0 -0
- package/README.md +1024 -0
- package/dist/core/BackupManager.d.ts +25 -0
- package/dist/core/BackupManager.d.ts.map +1 -0
- package/dist/core/BackupManager.js +290 -0
- package/dist/core/BackupManager.js.map +1 -0
- package/dist/core/IntegrityValidator.d.ts +18 -0
- package/dist/core/IntegrityValidator.d.ts.map +1 -0
- package/dist/core/IntegrityValidator.js +212 -0
- package/dist/core/IntegrityValidator.js.map +1 -0
- package/dist/core/SecurityManager.d.ts +40 -0
- package/dist/core/SecurityManager.d.ts.map +1 -0
- package/dist/core/SecurityManager.js +320 -0
- package/dist/core/SecurityManager.js.map +1 -0
- package/dist/core/WatcherEngine.d.ts +44 -0
- package/dist/core/WatcherEngine.d.ts.map +1 -0
- package/dist/core/WatcherEngine.js +470 -0
- package/dist/core/WatcherEngine.js.map +1 -0
- package/dist/crypto/HashGenerator.d.ts +26 -0
- package/dist/crypto/HashGenerator.d.ts.map +1 -0
- package/dist/crypto/HashGenerator.js +220 -0
- package/dist/crypto/HashGenerator.js.map +1 -0
- package/dist/crypto/KeyManager.d.ts +30 -0
- package/dist/crypto/KeyManager.d.ts.map +1 -0
- package/dist/crypto/KeyManager.js +235 -0
- package/dist/crypto/KeyManager.js.map +1 -0
- package/dist/crypto/SignatureValidator.d.ts +11 -0
- package/dist/crypto/SignatureValidator.d.ts.map +1 -0
- package/dist/crypto/SignatureValidator.js +102 -0
- package/dist/crypto/SignatureValidator.js.map +1 -0
- package/dist/detectors/AnomalyDetector.d.ts +24 -0
- package/dist/detectors/AnomalyDetector.d.ts.map +1 -0
- package/dist/detectors/AnomalyDetector.js +209 -0
- package/dist/detectors/AnomalyDetector.js.map +1 -0
- package/dist/detectors/InjectionDetector.d.ts +14 -0
- package/dist/detectors/InjectionDetector.d.ts.map +1 -0
- package/dist/detectors/InjectionDetector.js +204 -0
- package/dist/detectors/InjectionDetector.js.map +1 -0
- package/dist/detectors/PatternMatcher.d.ts +28 -0
- package/dist/detectors/PatternMatcher.d.ts.map +1 -0
- package/dist/detectors/PatternMatcher.js +283 -0
- package/dist/detectors/PatternMatcher.js.map +1 -0
- package/dist/guards/FileGuard.d.ts +35 -0
- package/dist/guards/FileGuard.d.ts.map +1 -0
- package/dist/guards/FileGuard.js +357 -0
- package/dist/guards/FileGuard.js.map +1 -0
- package/dist/guards/MemoryGuard.d.ts +28 -0
- package/dist/guards/MemoryGuard.d.ts.map +1 -0
- package/dist/guards/MemoryGuard.js +256 -0
- package/dist/guards/MemoryGuard.js.map +1 -0
- package/dist/guards/ProcessGuard.d.ts +25 -0
- package/dist/guards/ProcessGuard.d.ts.map +1 -0
- package/dist/guards/ProcessGuard.js +221 -0
- package/dist/guards/ProcessGuard.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +186 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +69 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/Constants.d.ts +407 -0
- package/dist/utils/Constants.d.ts.map +1 -0
- package/dist/utils/Constants.js +505 -0
- package/dist/utils/Constants.js.map +1 -0
- package/dist/utils/Logger.d.ts +45 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +285 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/Validator.d.ts +27 -0
- package/dist/utils/Validator.d.ts.map +1 -0
- package/dist/utils/Validator.js +245 -0
- package/dist/utils/Validator.js.map +1 -0
- package/favicon.png +0 -0
- package/jest.config.js +69 -0
- package/package.json +69 -0
- package/src/core/BackupManager.ts +305 -0
- package/src/core/IntegrityValidator.ts +200 -0
- package/src/core/SecurityManager.ts +348 -0
- package/src/core/WatcherEngine.ts +537 -0
- package/src/crypto/HashGenerator.ts +234 -0
- package/src/crypto/KeyManager.ts +249 -0
- package/src/crypto/SignatureValidator.ts +76 -0
- package/src/detectors/AnomalyDetector.ts +247 -0
- package/src/detectors/InjectionDetector.ts +233 -0
- package/src/detectors/PatternMatcher.ts +319 -0
- package/src/guards/FileGuard.ts +385 -0
- package/src/guards/MemoryGuard.ts +263 -0
- package/src/guards/ProcessGuard.ts +219 -0
- package/src/index.ts +189 -0
- package/src/types/index.ts +72 -0
- package/src/utils/Constants.ts +532 -0
- package/src/utils/Logger.ts +279 -0
- package/src/utils/Validator.ts +248 -0
- package/tests/setup.ts +80 -0
- package/tsconfig.json +42 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export interface SecurityConfig {
|
|
2
|
+
watchDir: string;
|
|
3
|
+
hashAlgorithm: 'sha256' | 'sha384' | 'sha512' | 'blake2b';
|
|
4
|
+
backupDir: string;
|
|
5
|
+
quarantineDir: string;
|
|
6
|
+
maxFileSize: number;
|
|
7
|
+
scanInterval: number;
|
|
8
|
+
realtimeMonitoring: boolean;
|
|
9
|
+
autoRollback: boolean;
|
|
10
|
+
quarantineEnabled: boolean;
|
|
11
|
+
signatureVerification: boolean;
|
|
12
|
+
integrityLevel: 'basic' | 'advanced' | 'paranoid';
|
|
13
|
+
alertThreshold: 'low' | 'medium' | 'high' | 'critical';
|
|
14
|
+
allowedExtensions: string[];
|
|
15
|
+
blockedPatterns: RegExp[];
|
|
16
|
+
trustedSigners: string[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface FileMetadata {
|
|
20
|
+
path: string;
|
|
21
|
+
hash: string;
|
|
22
|
+
signature?: string;
|
|
23
|
+
size: number;
|
|
24
|
+
created: Date;
|
|
25
|
+
modified: Date;
|
|
26
|
+
accessed: Date;
|
|
27
|
+
permissions: number;
|
|
28
|
+
owner: string;
|
|
29
|
+
group: string;
|
|
30
|
+
inode: number;
|
|
31
|
+
checksum: string;
|
|
32
|
+
version: number;
|
|
33
|
+
encryptedHash?: string;
|
|
34
|
+
entropy: number;
|
|
35
|
+
magicBytes?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface IntegrityViolation {
|
|
39
|
+
id: string;
|
|
40
|
+
timestamp: Date;
|
|
41
|
+
filePath: string;
|
|
42
|
+
violationType: 'hash_mismatch' | 'signature_invalid' | 'injection_detected' | 'permission_changed' | 'metadata_modified' | 'quarantine_triggered' | 'self_modification' | 'memory_tamper' | 'process_hijack' | 'unexpected_file';
|
|
43
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
44
|
+
oldHash?: string;
|
|
45
|
+
newHash?: string;
|
|
46
|
+
details: any;
|
|
47
|
+
actionTaken: 'rollback' | 'quarantine' | 'delete' | 'alert' | 'terminate' | 'ignore';
|
|
48
|
+
backupPath?: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface SecurityAlert {
|
|
52
|
+
id: string;
|
|
53
|
+
timestamp: Date;
|
|
54
|
+
level: 'info' | 'warning' | 'error' | 'critical';
|
|
55
|
+
source: string;
|
|
56
|
+
message: string;
|
|
57
|
+
details: any;
|
|
58
|
+
stackTrace?: string;
|
|
59
|
+
memoryDump?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface BackupEntry {
|
|
63
|
+
id: string;
|
|
64
|
+
originalPath: string;
|
|
65
|
+
backupPath: string;
|
|
66
|
+
timestamp: Date;
|
|
67
|
+
hash: string;
|
|
68
|
+
encrypted: boolean;
|
|
69
|
+
size: number;
|
|
70
|
+
metadata: FileMetadata;
|
|
71
|
+
version: number;
|
|
72
|
+
}
|
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
export const VERSION = '2.0.0';
|
|
2
|
+
|
|
3
|
+
export const SECURITY_LEVELS = {
|
|
4
|
+
BASIC: 'basic',
|
|
5
|
+
ADVANCED: 'advanced',
|
|
6
|
+
PARANOID: 'paranoid'
|
|
7
|
+
} as const;
|
|
8
|
+
|
|
9
|
+
export const HASH_ALGORITHMS = {
|
|
10
|
+
SHA256: 'sha256',
|
|
11
|
+
SHA384: 'sha384',
|
|
12
|
+
SHA512: 'sha512',
|
|
13
|
+
BLAKE2B: 'blake2b512'
|
|
14
|
+
} as const;
|
|
15
|
+
|
|
16
|
+
export const ALERT_THRESHOLDS = {
|
|
17
|
+
LOW: 'low',
|
|
18
|
+
MEDIUM: 'medium',
|
|
19
|
+
HIGH: 'high',
|
|
20
|
+
CRITICAL: 'critical'
|
|
21
|
+
} as const;
|
|
22
|
+
|
|
23
|
+
export const VIOLATION_TYPES = {
|
|
24
|
+
HASH_MISMATCH: 'hash_mismatch',
|
|
25
|
+
SIGNATURE_INVALID: 'signature_invalid',
|
|
26
|
+
INJECTION_DETECTED: 'injection_detected',
|
|
27
|
+
PERMISSION_CHANGED: 'permission_changed',
|
|
28
|
+
METADATA_MODIFIED: 'metadata_modified',
|
|
29
|
+
QUARANTINE_TRIGGERED: 'quarantine_triggered',
|
|
30
|
+
SELF_MODIFICATION: 'self_modification',
|
|
31
|
+
MEMORY_TAMPER: 'memory_tamper',
|
|
32
|
+
PROCESS_HIJACK: 'process_hijack',
|
|
33
|
+
UNEXPECTED_FILE: 'unexpected_file',
|
|
34
|
+
BACKUP_CORRUPT: 'backup_corrupt',
|
|
35
|
+
ENCRYPTION_FAILED: 'encryption_failed',
|
|
36
|
+
DECRYPTION_FAILED: 'decryption_failed',
|
|
37
|
+
KEY_COMPROMISED: 'key_compromised',
|
|
38
|
+
INTEGRITY_CHECK_FAILED: 'integrity_check_failed',
|
|
39
|
+
QUARANTINE_VIOLATION: 'quarantine_violation',
|
|
40
|
+
ROLLBACK_FAILED: 'rollback_failed',
|
|
41
|
+
WATCHER_STOPPED: 'watcher_stopped',
|
|
42
|
+
CONFIG_MODIFIED: 'config_modified'
|
|
43
|
+
} as const;
|
|
44
|
+
|
|
45
|
+
export const ACTION_TYPES = {
|
|
46
|
+
ROLLBACK: 'rollback',
|
|
47
|
+
QUARANTINE: 'quarantine',
|
|
48
|
+
DELETE: 'delete',
|
|
49
|
+
ALERT: 'alert',
|
|
50
|
+
TERMINATE: 'terminate',
|
|
51
|
+
IGNORE: 'ignore',
|
|
52
|
+
RESTORE: 'restore',
|
|
53
|
+
ENCRYPT: 'encrypt',
|
|
54
|
+
DECRYPT: 'decrypt',
|
|
55
|
+
LOCK: 'lock',
|
|
56
|
+
UNLOCK: 'unlock',
|
|
57
|
+
BACKUP: 'backup',
|
|
58
|
+
SCAN: 'scan'
|
|
59
|
+
} as const;
|
|
60
|
+
|
|
61
|
+
export const FILE_CATEGORIES = {
|
|
62
|
+
EXECUTABLE: 'executable',
|
|
63
|
+
SCRIPT: 'script',
|
|
64
|
+
CONFIG: 'config',
|
|
65
|
+
DATA: 'data',
|
|
66
|
+
LOG: 'log',
|
|
67
|
+
TEMP: 'temp',
|
|
68
|
+
BACKUP: 'backup',
|
|
69
|
+
SYSTEM: 'system',
|
|
70
|
+
ENCRYPTED: 'encrypted',
|
|
71
|
+
QUARANTINED: 'quarantined',
|
|
72
|
+
ARCHIVE: 'archive',
|
|
73
|
+
DATABASE: 'database',
|
|
74
|
+
CACHE: 'cache',
|
|
75
|
+
LOCK: 'lock',
|
|
76
|
+
PID: 'pid',
|
|
77
|
+
SOCKET: 'socket',
|
|
78
|
+
PIPE: 'pipe',
|
|
79
|
+
DEVICE: 'device'
|
|
80
|
+
} as const;
|
|
81
|
+
|
|
82
|
+
export const PATTERN_TYPES = {
|
|
83
|
+
INJECTION: 'injection',
|
|
84
|
+
OBFUSCATION: 'obfuscation',
|
|
85
|
+
BACKDOOR: 'backdoor',
|
|
86
|
+
MALWARE: 'malware',
|
|
87
|
+
ANTI_DEBUG: 'anti_debug',
|
|
88
|
+
SELF_MODIFY: 'self_modify',
|
|
89
|
+
ENCODED: 'encoded',
|
|
90
|
+
MINIFIED: 'minified',
|
|
91
|
+
COMPRESSED: 'compressed',
|
|
92
|
+
ENCRYPTED: 'encrypted',
|
|
93
|
+
SHELLCODE: 'shellcode',
|
|
94
|
+
ROOTKIT: 'rootkit',
|
|
95
|
+
KEYLOGGER: 'keylogger',
|
|
96
|
+
RANSOMWARE: 'ransomware',
|
|
97
|
+
MINER: 'miner',
|
|
98
|
+
SPYWARE: 'spyware',
|
|
99
|
+
TROJAN: 'trojan',
|
|
100
|
+
WORM: 'worm',
|
|
101
|
+
VIRUS: 'virus'
|
|
102
|
+
} as const;
|
|
103
|
+
|
|
104
|
+
export const SEVERITY_LEVELS = {
|
|
105
|
+
INFO: 'info',
|
|
106
|
+
LOW: 'low',
|
|
107
|
+
MEDIUM: 'medium',
|
|
108
|
+
HIGH: 'high',
|
|
109
|
+
CRITICAL: 'critical',
|
|
110
|
+
EMERGENCY: 'emergency'
|
|
111
|
+
} as const;
|
|
112
|
+
|
|
113
|
+
export const MONITORING_MODES = {
|
|
114
|
+
REALTIME: 'realtime',
|
|
115
|
+
POLLING: 'polling',
|
|
116
|
+
HYBRID: 'hybrid',
|
|
117
|
+
PASSIVE: 'passive'
|
|
118
|
+
} as const;
|
|
119
|
+
|
|
120
|
+
export const ENCRYPTION_ALGORITHMS = {
|
|
121
|
+
AES_256_GCM: 'aes-256-gcm',
|
|
122
|
+
AES_256_CBC: 'aes-256-cbc',
|
|
123
|
+
CHACHA20: 'chacha20',
|
|
124
|
+
RSA_2048: 'rsa-2048',
|
|
125
|
+
RSA_4096: 'rsa-4096',
|
|
126
|
+
ECDSA: 'ecdsa',
|
|
127
|
+
ED25519: 'ed25519'
|
|
128
|
+
} as const;
|
|
129
|
+
|
|
130
|
+
export const KEY_TYPES = {
|
|
131
|
+
MASTER: 'master',
|
|
132
|
+
SESSION: 'session',
|
|
133
|
+
EPHEMERAL: 'ephemeral',
|
|
134
|
+
LONG_TERM: 'long_term',
|
|
135
|
+
BACKUP: 'backup',
|
|
136
|
+
RECOVERY: 'recovery'
|
|
137
|
+
} as const;
|
|
138
|
+
|
|
139
|
+
export const BACKUP_MODES = {
|
|
140
|
+
FULL: 'full',
|
|
141
|
+
INCREMENTAL: 'incremental',
|
|
142
|
+
DIFFERENTIAL: 'differential',
|
|
143
|
+
MIRROR: 'mirror'
|
|
144
|
+
} as const;
|
|
145
|
+
|
|
146
|
+
export const SCAN_MODES = {
|
|
147
|
+
QUICK: 'quick',
|
|
148
|
+
DEEP: 'deep',
|
|
149
|
+
HEURISTIC: 'heuristic',
|
|
150
|
+
SIGNATURE: 'signature',
|
|
151
|
+
BEHAVIORAL: 'behavioral',
|
|
152
|
+
MEMORY: 'memory',
|
|
153
|
+
FILESYSTEM: 'filesystem',
|
|
154
|
+
NETWORK: 'network'
|
|
155
|
+
} as const;
|
|
156
|
+
|
|
157
|
+
export const QUARANTINE_ACTIONS = {
|
|
158
|
+
ISOLATE: 'isolate',
|
|
159
|
+
ENCRYPT: 'encrypt',
|
|
160
|
+
DELETE: 'delete',
|
|
161
|
+
ANALYZE: 'analyze',
|
|
162
|
+
REPORT: 'report'
|
|
163
|
+
} as const;
|
|
164
|
+
|
|
165
|
+
export const INTEGRITY_CHECKS = {
|
|
166
|
+
HASH: 'hash',
|
|
167
|
+
SIGNATURE: 'signature',
|
|
168
|
+
METADATA: 'metadata',
|
|
169
|
+
PERMISSION: 'permission',
|
|
170
|
+
CONTENT: 'content',
|
|
171
|
+
STRUCTURE: 'structure',
|
|
172
|
+
ENTROPY: 'entropy',
|
|
173
|
+
TIMESTAMP: 'timestamp',
|
|
174
|
+
SIZE: 'size'
|
|
175
|
+
} as const;
|
|
176
|
+
|
|
177
|
+
export const ERROR_CODES = {
|
|
178
|
+
FILE_NOT_FOUND: 1000,
|
|
179
|
+
PERMISSION_DENIED: 1001,
|
|
180
|
+
FILE_TOO_LARGE: 1002,
|
|
181
|
+
INVALID_PATH: 1003,
|
|
182
|
+
FILE_LOCKED: 1004,
|
|
183
|
+
QUARANTINE_FAILED: 1005,
|
|
184
|
+
BACKUP_FAILED: 1006,
|
|
185
|
+
RESTORE_FAILED: 1007,
|
|
186
|
+
INTEGRITY_VIOLATION: 2000,
|
|
187
|
+
INJECTION_DETECTED: 2001,
|
|
188
|
+
MALWARE_DETECTED: 2002,
|
|
189
|
+
UNAUTHORIZED_ACCESS: 2003,
|
|
190
|
+
TAMPER_DETECTED: 2004,
|
|
191
|
+
DEBUGGER_DETECTED: 2005,
|
|
192
|
+
MEMORY_CORRUPTION: 2006,
|
|
193
|
+
PROCESS_HIJACK: 2007,
|
|
194
|
+
HASH_MISMATCH: 3000,
|
|
195
|
+
SIGNATURE_INVALID: 3001,
|
|
196
|
+
ENCRYPTION_FAILED: 3002,
|
|
197
|
+
DECRYPTION_FAILED: 3003,
|
|
198
|
+
KEY_NOT_FOUND: 3004,
|
|
199
|
+
KEY_EXPIRED: 3005,
|
|
200
|
+
KEY_REVOKED: 3006,
|
|
201
|
+
INVALID_CONFIG: 4000,
|
|
202
|
+
MISSING_CONFIG: 4001,
|
|
203
|
+
CONFIG_MODIFIED: 4002,
|
|
204
|
+
WATCHER_FAILED: 5000,
|
|
205
|
+
SCAN_FAILED: 5001,
|
|
206
|
+
VALIDATION_FAILED: 5002,
|
|
207
|
+
TIMEOUT: 5003,
|
|
208
|
+
OUT_OF_MEMORY: 5004
|
|
209
|
+
} as const;
|
|
210
|
+
|
|
211
|
+
export const DEFAULT_CONFIG = {
|
|
212
|
+
HASH_ALGORITHM: 'sha512',
|
|
213
|
+
MAX_FILE_SIZE: 10 * 1024 * 1024,
|
|
214
|
+
SCAN_INTERVAL: 60,
|
|
215
|
+
REALTIME_MONITORING: true,
|
|
216
|
+
AUTO_ROLLBACK: true,
|
|
217
|
+
QUARANTINE_ENABLED: true,
|
|
218
|
+
SIGNATURE_VERIFICATION: false,
|
|
219
|
+
INTEGRITY_LEVEL: 'advanced',
|
|
220
|
+
ALERT_THRESHOLD: 'medium',
|
|
221
|
+
ALLOWED_EXTENSIONS: ['.js', '.ts', '.json', '.txt', '.md', '.yml', '.yaml', '.xml', '.html', '.css'],
|
|
222
|
+
BACKUP_RETENTION_DAYS: 30,
|
|
223
|
+
MAX_BACKUPS_PER_FILE: 10,
|
|
224
|
+
QUARANTINE_RETENTION_DAYS: 90,
|
|
225
|
+
LOG_RETENTION_DAYS: 30,
|
|
226
|
+
MAX_LOG_SIZE: 10 * 1024 * 1024,
|
|
227
|
+
ENABLE_MEMORY_GUARD: true,
|
|
228
|
+
ENABLE_PROCESS_GUARD: true,
|
|
229
|
+
ENABLE_FILE_GUARD: true,
|
|
230
|
+
DEBUG_MODE: false
|
|
231
|
+
} as const;
|
|
232
|
+
|
|
233
|
+
export const MIME_TYPES = {
|
|
234
|
+
PLAIN: 'text/plain',
|
|
235
|
+
HTML: 'text/html',
|
|
236
|
+
CSS: 'text/css',
|
|
237
|
+
JAVASCRIPT: 'application/javascript',
|
|
238
|
+
TYPESCRIPT: 'application/typescript',
|
|
239
|
+
JSON: 'application/json',
|
|
240
|
+
XML: 'application/xml',
|
|
241
|
+
YAML: 'application/x-yaml',
|
|
242
|
+
MARKDOWN: 'text/markdown',
|
|
243
|
+
JPEG: 'image/jpeg',
|
|
244
|
+
PNG: 'image/png',
|
|
245
|
+
GIF: 'image/gif',
|
|
246
|
+
WEBP: 'image/webp',
|
|
247
|
+
SVG: 'image/svg+xml',
|
|
248
|
+
ICO: 'image/x-icon',
|
|
249
|
+
PDF: 'application/pdf',
|
|
250
|
+
DOC: 'application/msword',
|
|
251
|
+
DOCX: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
252
|
+
XLS: 'application/vnd.ms-excel',
|
|
253
|
+
XLSX: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
254
|
+
ZIP: 'application/zip',
|
|
255
|
+
GZIP: 'application/gzip',
|
|
256
|
+
TAR: 'application/x-tar',
|
|
257
|
+
RAR: 'application/vnd.rar',
|
|
258
|
+
_7Z: 'application/x-7z-compressed',
|
|
259
|
+
EXE: 'application/vnd.microsoft.portable-executable',
|
|
260
|
+
DLL: 'application/x-msdownload',
|
|
261
|
+
SO: 'application/x-sharedlib',
|
|
262
|
+
DMG: 'application/x-apple-diskimage',
|
|
263
|
+
DEB: 'application/vnd.debian.binary-package',
|
|
264
|
+
RPM: 'application/x-rpm',
|
|
265
|
+
MP3: 'audio/mpeg',
|
|
266
|
+
MP4: 'video/mp4',
|
|
267
|
+
WAV: 'audio/wav',
|
|
268
|
+
OGG: 'audio/ogg',
|
|
269
|
+
WEBM: 'video/webm',
|
|
270
|
+
TTF: 'font/ttf',
|
|
271
|
+
OTF: 'font/otf',
|
|
272
|
+
WOFF: 'font/woff',
|
|
273
|
+
WOFF2: 'font/woff2'
|
|
274
|
+
} as const;
|
|
275
|
+
|
|
276
|
+
export const MAGIC_BYTES: Record<string, string> = {
|
|
277
|
+
JPEG: 'ffd8ffe0',
|
|
278
|
+
PNG: '89504e47',
|
|
279
|
+
GIF: '47494638',
|
|
280
|
+
WEBP: '52494646',
|
|
281
|
+
BMP: '424d',
|
|
282
|
+
ICO: '00000100',
|
|
283
|
+
PDF: '25504446',
|
|
284
|
+
DOC: 'd0cf11e0',
|
|
285
|
+
XLS: 'd0cf11e0',
|
|
286
|
+
ZIP: '504b0304',
|
|
287
|
+
GZIP: '1f8b08',
|
|
288
|
+
TAR: '7573746172',
|
|
289
|
+
RAR: '52617221',
|
|
290
|
+
_7Z: '377abcaf',
|
|
291
|
+
ELF: '7f454c46',
|
|
292
|
+
PE: '4d5a',
|
|
293
|
+
MACHO: 'cafebabe',
|
|
294
|
+
MACHO_64: 'cffaedfe',
|
|
295
|
+
CLASS: 'cafebabe',
|
|
296
|
+
JAR: '504b0304',
|
|
297
|
+
SQLITE: '53514c697465',
|
|
298
|
+
JSON: '7b0a',
|
|
299
|
+
XML: '3c3f786d6c',
|
|
300
|
+
HTML: '3c68746d6c',
|
|
301
|
+
SVG: '3c737667'
|
|
302
|
+
} as const;
|
|
303
|
+
|
|
304
|
+
export const SUSPICIOUS_STRINGS = [
|
|
305
|
+
'eval(',
|
|
306
|
+
'Function(',
|
|
307
|
+
'setTimeout(',
|
|
308
|
+
'setInterval(',
|
|
309
|
+
'new Function(',
|
|
310
|
+
'require(',
|
|
311
|
+
'process.binding',
|
|
312
|
+
'process.dlopen',
|
|
313
|
+
'child_process',
|
|
314
|
+
'exec(',
|
|
315
|
+
'spawn(',
|
|
316
|
+
'fork(',
|
|
317
|
+
'vm.runIn',
|
|
318
|
+
'vm.create',
|
|
319
|
+
'String.fromCharCode',
|
|
320
|
+
'unescape(',
|
|
321
|
+
'escape(',
|
|
322
|
+
'decodeURI(',
|
|
323
|
+
'decodeURIComponent(',
|
|
324
|
+
'atob(',
|
|
325
|
+
'btoa(',
|
|
326
|
+
'Buffer.from(',
|
|
327
|
+
'new Buffer(',
|
|
328
|
+
'__defineGetter__',
|
|
329
|
+
'__defineSetter__',
|
|
330
|
+
'__lookupGetter__',
|
|
331
|
+
'__lookupSetter__',
|
|
332
|
+
'Object.defineProperty',
|
|
333
|
+
'Object.defineProperties',
|
|
334
|
+
'Reflect.set',
|
|
335
|
+
'Reflect.defineProperty',
|
|
336
|
+
'Proxy(',
|
|
337
|
+
'WeakMap',
|
|
338
|
+
'WeakSet',
|
|
339
|
+
'FinalizationRegistry',
|
|
340
|
+
'WebAssembly',
|
|
341
|
+
'SharedArrayBuffer',
|
|
342
|
+
'Atomics.',
|
|
343
|
+
'globalThis',
|
|
344
|
+
'this.constructor',
|
|
345
|
+
'__proto__',
|
|
346
|
+
'Object.setPrototypeOf',
|
|
347
|
+
'module.constructor',
|
|
348
|
+
'require.cache',
|
|
349
|
+
'module.children'
|
|
350
|
+
] as const;
|
|
351
|
+
|
|
352
|
+
export const SUSPICIOUS_EXTENSIONS = [
|
|
353
|
+
'.exe', '.dll', '.so', '.dylib', '.bin',
|
|
354
|
+
'.sh', '.bash', '.zsh', '.fish', '.ps1',
|
|
355
|
+
'.bat', '.cmd', '.vbs', '.js', '.jse',
|
|
356
|
+
'.vbe', '.wsf', '.wsc', '.wsh', '.msi',
|
|
357
|
+
'.msp', '.mst', '.app', '.deb', '.rpm',
|
|
358
|
+
'.apk', '.ipa', '.dmg', '.pkg', '.jar',
|
|
359
|
+
'.class', '.py', '.pyc', '.pyo', '.rb',
|
|
360
|
+
'.rbw', '.php', '.php3', '.php4', '.php5',
|
|
361
|
+
'.phtml', '.asp', '.aspx', '.cer', '.cfm',
|
|
362
|
+
'.jsp', '.jspx', '.pl', '.pm', '.cgi',
|
|
363
|
+
'.swf', '.flv', '.com', '.scr', '.cpl'
|
|
364
|
+
] as const;
|
|
365
|
+
|
|
366
|
+
export const ALLOWED_EXTENSIONS = [
|
|
367
|
+
'.txt', '.md', '.json', '.xml', '.yaml', '.yml',
|
|
368
|
+
'.html', '.htm', '.css', '.js', '.ts', '.jsx',
|
|
369
|
+
'.tsx', '.vue', '.svelte', '.php', '.py', '.rb',
|
|
370
|
+
'.java', '.c', '.cpp', '.h', '.hpp', '.cs',
|
|
371
|
+
'.go', '.rs', '.swift', '.kt', '.scala',
|
|
372
|
+
'.pdf', '.doc', '.docx', '.xls', '.xlsx',
|
|
373
|
+
'.ppt', '.pptx', '.jpg', '.jpeg', '.png',
|
|
374
|
+
'.gif', '.bmp', '.ico', '.svg', '.webp',
|
|
375
|
+
'.mp3', '.mp4', '.wav', '.ogg', '.flac',
|
|
376
|
+
'.zip', '.tar', '.gz', '.bz2', '.7z', '.rar'
|
|
377
|
+
] as const;
|
|
378
|
+
|
|
379
|
+
export const REGEX_PATTERNS = {
|
|
380
|
+
EMAIL: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
|
|
381
|
+
URL: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/,
|
|
382
|
+
IPV4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
|
|
383
|
+
IPV6: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,
|
|
384
|
+
UUID: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
|
|
385
|
+
HEX: /^[0-9a-fA-F]+$/,
|
|
386
|
+
BASE64: /^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/,
|
|
387
|
+
PATH_TRAVERSAL: /(?:\.\.\/|\.\.\\)+/,
|
|
388
|
+
NULL_BYTE: /\0/,
|
|
389
|
+
CONTROL_CHARS: /[\x00-\x1F\x7F]/,
|
|
390
|
+
ZERO_WIDTH: /[\u200B-\u200D\uFEFF]/,
|
|
391
|
+
HIDDEN_FILE: /^\.[^.]+/,
|
|
392
|
+
DOUBLE_EXTENSION: /\.[^.]+\.[^.]+$/,
|
|
393
|
+
TEMP_FILE: /\.(tmp|temp|swp|bak|backup)$/i,
|
|
394
|
+
LOCK_FILE: /\.(lock|pid)$/i
|
|
395
|
+
} as const;
|
|
396
|
+
|
|
397
|
+
export const TIMEOUTS = {
|
|
398
|
+
WATCHER_START: 5000,
|
|
399
|
+
FILE_SCAN: 10000,
|
|
400
|
+
BACKUP_CREATE: 5000,
|
|
401
|
+
BACKUP_RESTORE: 5000,
|
|
402
|
+
ENCRYPTION: 3000,
|
|
403
|
+
DECRYPTION: 3000,
|
|
404
|
+
INTEGRITY_CHECK: 2000,
|
|
405
|
+
MEMORY_SCAN: 1000,
|
|
406
|
+
PROCESS_SCAN: 2000,
|
|
407
|
+
NETWORK_SCAN: 5000,
|
|
408
|
+
QUARANTINE: 3000,
|
|
409
|
+
ROLLBACK: 5000,
|
|
410
|
+
SHUTDOWN: 10000
|
|
411
|
+
} as const;
|
|
412
|
+
|
|
413
|
+
export const PATHS = {
|
|
414
|
+
BACKUP_DIR: '.secure_backup',
|
|
415
|
+
QUARANTINE_DIR: '.secure_quarantine',
|
|
416
|
+
LOGS_DIR: 'logs',
|
|
417
|
+
KEYS_DIR: '.keys',
|
|
418
|
+
CACHE_DIR: '.cache',
|
|
419
|
+
TEMP_DIR: '.tmp',
|
|
420
|
+
CONFIG_DIR: '.config',
|
|
421
|
+
REPORTS_DIR: 'reports'
|
|
422
|
+
} as const;
|
|
423
|
+
|
|
424
|
+
export const EVENT_TYPES = {
|
|
425
|
+
FILE_ADDED: 'file:added',
|
|
426
|
+
FILE_CHANGED: 'file:changed',
|
|
427
|
+
FILE_DELETED: 'file:deleted',
|
|
428
|
+
FILE_RESTORED: 'file:restored',
|
|
429
|
+
FILE_QUARANTINED: 'file:quarantined',
|
|
430
|
+
FILE_SCANNED: 'file:scanned',
|
|
431
|
+
SECURITY_ALERT: 'security:alert',
|
|
432
|
+
SECURITY_CRITICAL: 'security:critical',
|
|
433
|
+
SECURITY_VIOLATION: 'security:violation',
|
|
434
|
+
SECURITY_BREACH: 'security:breach',
|
|
435
|
+
INTEGRITY_CHECK: 'integrity:check',
|
|
436
|
+
INTEGRITY_PASS: 'integrity:pass',
|
|
437
|
+
INTEGRITY_FAIL: 'integrity:fail',
|
|
438
|
+
INTEGRITY_VIOLATION: 'integrity:violation',
|
|
439
|
+
SYSTEM_START: 'system:start',
|
|
440
|
+
SYSTEM_STOP: 'system:stop',
|
|
441
|
+
SYSTEM_ERROR: 'system:error',
|
|
442
|
+
SYSTEM_WARNING: 'system:warning',
|
|
443
|
+
SYSTEM_INFO: 'system:info',
|
|
444
|
+
WATCHER_START: 'watcher:start',
|
|
445
|
+
WATCHER_STOP: 'watcher:stop',
|
|
446
|
+
WATCHER_ERROR: 'watcher:error',
|
|
447
|
+
WATCHER_READY: 'watcher:ready',
|
|
448
|
+
BACKUP_CREATED: 'backup:created',
|
|
449
|
+
BACKUP_RESTORED: 'backup:restored',
|
|
450
|
+
BACKUP_FAILED: 'backup:failed',
|
|
451
|
+
BACKUP_VERIFIED: 'backup:verified',
|
|
452
|
+
SCAN_START: 'scan:start',
|
|
453
|
+
SCAN_COMPLETE: 'scan:complete',
|
|
454
|
+
SCAN_ERROR: 'scan:error',
|
|
455
|
+
SCAN_PROGRESS: 'scan:progress'
|
|
456
|
+
} as const;
|
|
457
|
+
|
|
458
|
+
export const LOG_LEVELS = {
|
|
459
|
+
DEBUG: 0,
|
|
460
|
+
INFO: 1,
|
|
461
|
+
WARNING: 2,
|
|
462
|
+
ERROR: 3,
|
|
463
|
+
CRITICAL: 4,
|
|
464
|
+
EMERGENCY: 5
|
|
465
|
+
} as const;
|
|
466
|
+
|
|
467
|
+
export const EXIT_CODES = {
|
|
468
|
+
SUCCESS: 0,
|
|
469
|
+
GENERAL_ERROR: 1,
|
|
470
|
+
INVALID_CONFIG: 2,
|
|
471
|
+
PERMISSION_DENIED: 3,
|
|
472
|
+
SECURITY_VIOLATION: 4,
|
|
473
|
+
MEMORY_ERROR: 5,
|
|
474
|
+
DISK_ERROR: 6,
|
|
475
|
+
NETWORK_ERROR: 7,
|
|
476
|
+
TIMEOUT: 8,
|
|
477
|
+
USER_INTERRUPT: 9,
|
|
478
|
+
FATAL_ERROR: 10
|
|
479
|
+
} as const;
|
|
480
|
+
|
|
481
|
+
export const ENV_VARS = {
|
|
482
|
+
NODE_ENV: 'NODE_ENV',
|
|
483
|
+
WATCH_DIR: 'WATCH_DIR',
|
|
484
|
+
HASH_ALGORITHM: 'HASH_ALGORITHM',
|
|
485
|
+
INTEGRITY_LEVEL: 'INTEGRITY_LEVEL',
|
|
486
|
+
AUTO_ROLLBACK: 'AUTO_ROLLBACK',
|
|
487
|
+
SCAN_INTERVAL: 'SCAN_INTERVAL',
|
|
488
|
+
MAX_FILE_SIZE: 'MAX_FILE_SIZE',
|
|
489
|
+
ALLOWED_EXTENSIONS: 'ALLOWED_EXTENSIONS',
|
|
490
|
+
QUARANTINE_ENABLED: 'QUARANTINE_ENABLED',
|
|
491
|
+
SIGNATURE_VERIFICATION: 'SIGNATURE_VERIFICATION',
|
|
492
|
+
ALERT_THRESHOLD: 'ALERT_THRESHOLD',
|
|
493
|
+
DEBUG_MODE: 'DEBUG_MODE',
|
|
494
|
+
LOG_LEVEL: 'LOG_LEVEL'
|
|
495
|
+
} as const;
|
|
496
|
+
|
|
497
|
+
export const ERROR_MESSAGES = {
|
|
498
|
+
FILE_NOT_FOUND: 'File not found',
|
|
499
|
+
PERMISSION_DENIED: 'Permission denied',
|
|
500
|
+
INVALID_PATH: 'Invalid file path',
|
|
501
|
+
FILE_TOO_LARGE: 'File exceeds maximum size',
|
|
502
|
+
INTEGRITY_VIOLATION: 'File integrity violation detected',
|
|
503
|
+
INJECTION_DETECTED: 'Code injection detected',
|
|
504
|
+
MALWARE_DETECTED: 'Malware detected',
|
|
505
|
+
BACKUP_FAILED: 'Backup operation failed',
|
|
506
|
+
RESTORE_FAILED: 'Restore operation failed',
|
|
507
|
+
ENCRYPTION_FAILED: 'Encryption failed',
|
|
508
|
+
DECRYPTION_FAILED: 'Decryption failed',
|
|
509
|
+
KEY_NOT_FOUND: 'Encryption key not found',
|
|
510
|
+
INVALID_CONFIG: 'Invalid configuration',
|
|
511
|
+
WATCHER_FAILED: 'File watcher failed to start',
|
|
512
|
+
SCAN_FAILED: 'Security scan failed',
|
|
513
|
+
MEMORY_CORRUPTION: 'Memory corruption detected',
|
|
514
|
+
PROCESS_HIJACK: 'Process hijacking attempt detected',
|
|
515
|
+
DEBUGGER_DETECTED: 'Debugger detected',
|
|
516
|
+
QUARANTINE_FAILED: 'Failed to quarantine file',
|
|
517
|
+
ROLLBACK_FAILED: 'Failed to rollback file',
|
|
518
|
+
UNKNOWN_ERROR: 'An unknown error occurred'
|
|
519
|
+
} as const;
|
|
520
|
+
|
|
521
|
+
export const SUCCESS_MESSAGES = {
|
|
522
|
+
WATCHER_STARTED: 'File watcher started successfully',
|
|
523
|
+
WATCHER_STOPPED: 'File watcher stopped successfully',
|
|
524
|
+
FILE_PROTECTED: 'File protected successfully',
|
|
525
|
+
FILE_RESTORED: 'File restored successfully',
|
|
526
|
+
BACKUP_CREATED: 'Backup created successfully',
|
|
527
|
+
SCAN_COMPLETE: 'Security scan completed',
|
|
528
|
+
INTEGRITY_PASS: 'Integrity check passed',
|
|
529
|
+
QUARANTINE_SUCCESS: 'File quarantined successfully',
|
|
530
|
+
ENCRYPTION_SUCCESS: 'File encrypted successfully',
|
|
531
|
+
DECRYPTION_SUCCESS: 'File decrypted successfully'
|
|
532
|
+
} as const;
|