bmf911 commited on
Commit
65c4b3b
·
verified ·
1 Parent(s): 7814bb4

🐳 08/03 - 18:57 - PyFlood Suite Steam Tools IP Tools Email Tools Search tools... Steam ID Flooder Flood Steam IDs with friend requests make appl

Browse files
Files changed (2) hide show
  1. pyflood_suite.py +571 -0
  2. requirements.txt +1 -0
pyflood_suite.py ADDED
@@ -0,0 +1,571 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ PyFlood Suite v1.2.5
4
+ Educational Network Testing Tool
5
+ Command Line Interface Version
6
+ """
7
+
8
+ import threading
9
+ import time
10
+ import json
11
+ import random
12
+ import os
13
+ from datetime import datetime
14
+ from typing import List, Dict, Optional
15
+ from dataclasses import dataclass, asdict
16
+ from enum import Enum
17
+ import argparse
18
+
19
+ # Color codes for terminal output
20
+ class Colors:
21
+ HEADER = '\033[95m'
22
+ BLUE = '\033[94m'
23
+ CYAN = '\033[96m'
24
+ GREEN = '\033[92m'
25
+ YELLOW = '\033[93m'
26
+ RED = '\033[91m'
27
+ MAGENTA = '\033[35m'
28
+ BOLD = '\033[1m'
29
+ UNDERLINE = '\033[4m'
30
+ END = '\033[0m'
31
+
32
+ class AttackType(Enum):
33
+ STEAM_FRIEND = "steam_friend"
34
+ STEAM_MESSAGE = "steam_message"
35
+ STEAM_COMMENT = "steam_comment"
36
+ IP_UDP = "ip_udp"
37
+ IP_SYN = "ip_syn"
38
+ IP_HTTP = "ip_http"
39
+ IP_ICMP = "ip_icmp"
40
+ EMAIL_FLOOD = "email_flood"
41
+
42
+ @dataclass
43
+ class SteamConfig:
44
+ targets: List[str]
45
+ attack_type: str
46
+ count: int
47
+ message: str
48
+
49
+ @dataclass
50
+ class IPConfig:
51
+ targets: List[str]
52
+ attack_type: str
53
+ duration: int
54
+ port: int = 80
55
+
56
+ @dataclass
57
+ class EmailConfig:
58
+ targets: List[str]
59
+ emails_per_target: int
60
+ delay: int
61
+ subject: str
62
+ body: str
63
+
64
+ class ConsoleLogger:
65
+ def __init__(self):
66
+ self.log_history = []
67
+
68
+ def log(self, message: str, color: str = Colors.END, prefix: str = ">>"):
69
+ timestamp = datetime.now().strftime("%H:%M:%S")
70
+ formatted = f"{Colors.CYAN}[{timestamp}]{Colors.END} {color}{prefix} {message}{Colors.END}"
71
+ print(formatted)
72
+ self.log_history.append({
73
+ "time": timestamp,
74
+ "message": message,
75
+ "type": color
76
+ })
77
+
78
+ def success(self, message: str):
79
+ self.log(message, Colors.GREEN)
80
+
81
+ def error(self, message: str):
82
+ self.log(message, Colors.RED)
83
+
84
+ def warning(self, message: str):
85
+ self.log(message, Colors.YELLOW)
86
+
87
+ def info(self, message: str):
88
+ self.log(message, Colors.BLUE)
89
+
90
+ def debug(self, message: str):
91
+ self.log(message, Colors.MAGENTA)
92
+
93
+ class AttackSimulator:
94
+ def __init__(self, logger: ConsoleLogger):
95
+ self.logger = logger
96
+ self.active_attacks = {}
97
+ self.attack_counter = 0
98
+ self.lock = threading.Lock()
99
+
100
+ def steam_flood(self, config: SteamConfig, attack_id: str):
101
+ """Simulate Steam ID flooding"""
102
+ self.logger.info(f"Initializing Steam ID flood attack #{attack_id}...")
103
+ self.logger.info(f"Targets: {len(config.targets)} Steam IDs")
104
+ self.logger.info(f"Attack type: {config.attack_type}")
105
+
106
+ time.sleep(1)
107
+
108
+ if config.attack_type == "Friend Requests":
109
+ self.logger.info("Connecting to Steam API proxy...")
110
+ time.sleep(0.8)
111
+ self.logger.success("Connected to Steam relay servers")
112
+
113
+ for i in range(config.count):
114
+ if attack_id not in self.active_attacks:
115
+ self.logger.warning("Attack stopped by user")
116
+ break
117
+
118
+ target = random.choice(config.targets)
119
+
120
+ with self.lock:
121
+ self.attack_counter += 1
122
+
123
+ if config.attack_type == "Friend Requests":
124
+ actions = [
125
+ f"Sent friend request to {target}",
126
+ f"Sending add friend packet to Steam ID {target}",
127
+ f"Friend request queued for {target}"
128
+ ]
129
+ elif config.attack_type == "Message Flood":
130
+ actions = [
131
+ f"Sent message to {target}: '{config.message}'",
132
+ f"Message delivered to {target}",
133
+ f"Chat packet sent to {target}"
134
+ ]
135
+ else: # Profile Comments
136
+ actions = [
137
+ f"Posted comment on {target}'s profile",
138
+ f"Profile comment submitted to {target}",
139
+ f"Comment flood sent to {target}"
140
+ ]
141
+
142
+ self.logger.success(random.choice(actions))
143
+ time.sleep(random.uniform(0.5, 1.5))
144
+
145
+ self.logger.info(f"Steam attack #{attack_id} completed. Sent {config.count} requests.")
146
+
147
+ def ip_flood(self, config: IPConfig, attack_id: str):
148
+ """Simulate IP flooding"""
149
+ self.logger.info(f"Initializing IP flood attack #{attack_id}...")
150
+ self.logger.warning(f"Target IPs: {', '.join(config.targets)}")
151
+ self.logger.info(f"Attack vector: {config.attack_type}")
152
+
153
+ time.sleep(1)
154
+
155
+ if config.attack_type == "UDP Flood":
156
+ self.logger.info("Preparing UDP payload...")
157
+ elif config.attack_type == "SYN Flood":
158
+ self.logger.info("Initializing SYN packet generator...")
159
+ elif config.attack_type == "HTTP Flood":
160
+ self.logger.info("Preparing HTTP request headers...")
161
+ elif config.attack_type == "ICMP Flood":
162
+ self.logger.info("Loading ICMP packet structure...")
163
+
164
+ self.logger.success("Attack modules loaded successfully")
165
+ time.sleep(0.5)
166
+
167
+ end_time = time.time() + config.duration
168
+ packet_count = 0
169
+
170
+ while time.time() < end_time:
171
+ if attack_id not in self.active_attacks:
172
+ self.logger.warning("Attack interrupted by user")
173
+ break
174
+
175
+ target = random.choice(config.targets)
176
+
177
+ if config.attack_type == "UDP Flood":
178
+ size = random.randint(64, 1024)
179
+ msg = f"UDP packet sent to {target}:{config.port} ({size} bytes)"
180
+ elif config.attack_type == "SYN Flood":
181
+ msg = f"SYN request sent to {target}:{config.port} [SYN_SENT]"
182
+ elif config.attack_type == "HTTP Flood":
183
+ path = random.choice(["/", "/index.html", "/api", "/login", "/admin"])
184
+ msg = f"HTTP GET {path} sent to {target}:{config.port} [200 OK]"
185
+ else: # ICMP
186
+ msg = f"ICMP echo request to {target} [ttl=64]"
187
+
188
+ self.logger.success(msg)
189
+ packet_count += 1
190
+
191
+ # Fast transmission for IP floods
192
+ time.sleep(random.uniform(0.01, 0.1))
193
+
194
+ self.logger.info(f"IP flood completed. Sent {packet_count} packets over {config.duration} seconds.")
195
+
196
+ def email_flood(self, config: EmailConfig, attack_id: str):
197
+ """Simulate Email flooding"""
198
+ self.logger.info(f"Initializing Email flood attack #{attack_id}...")
199
+ self.logger.info(f"Target addresses: {len(config.targets)}")
200
+ self.logger.info(f"Emails per target: {config.emails_per_target}")
201
+
202
+ time.sleep(1)
203
+
204
+ self.logger.info("Connecting to SMTP relay...")
205
+ time.sleep(0.8)
206
+ self.logger.success("SMTP connection established")
207
+ self.logger.info(f"Subject: {config.subject}")
208
+
209
+ sent_count = 0
210
+
211
+ for target in config.targets:
212
+ for i in range(config.emails_per_target):
213
+ if attack_id not in self.active_attacks:
214
+ self.logger.warning("Attack stopped by user")
215
+ return
216
+
217
+ with self.lock:
218
+ sent_count += 1
219
+
220
+ self.logger.success(f"Email #{i+1} sent to {target}")
221
+
222
+ if config.delay > 0:
223
+ time.sleep(config.delay / 1000)
224
+
225
+ self.logger.info(f"Email flood completed. Sent {sent_count} messages.")
226
+
227
+ class PyFloodSuite:
228
+ def __init__(self):
229
+ self.logger = ConsoleLogger()
230
+ self.simulator = AttackSimulator(self.logger)
231
+ self.running = True
232
+ self.config_file = "pyflood_config.json"
233
+
234
+ def clear_screen(self):
235
+ os.system('cls' if os.name == 'nt' else 'clear')
236
+
237
+ def print_banner(self):
238
+ banner = f"""
239
+ {Colors.BLUE}{Colors.BOLD}
240
+ ╔═══════════════════════════════════════════════════════════════╗
241
+ ║ ║
242
+ ║ ██████╗ ██╗ ██╗███████╗██╗ ██████╗ ██████╗ ██████╗ ║
243
+ ║ ██╔══██╗╚██╗ ██╔╝██╔════╝██║ ██╔═══██╗██╔══██╗██╔══██╗ ║
244
+ ║ ██████╔╝ ╚████╔╝ █████╗ ██║ ██║ ██║██║ ██║██║ ██║ ║
245
+ ║ ██╔═══╝ ╚██╔╝ ██╔══╝ ██║ ██║ ██║██║ ██║██║ ██║ ║
246
+ ║ ██║ ██║ ██║ ███████╗╚██████╔╝██████╔╝██████╔╝ ║
247
+ ║ ╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═════╝ ║
248
+ ║ ║
249
+ ║ Steam ID/IP/Email Testing Suite v1.2.5 ║
250
+ ║ [Educational Use Only] ║
251
+ ╚═══════════════════════════════════════════════════════════════╝
252
+ {Colors.END}"""
253
+ print(banner)
254
+
255
+ def print_menu(self):
256
+ menu = f"""
257
+ {Colors.YELLOW}{Colors.BOLD}Available Commands:{Colors.END}
258
+ {Colors.CYAN}1.{Colors.END} Steam Tools - Configure Steam ID flooding
259
+ {Colors.CYAN}2.{Colors.END} IP Tools - Configure IP address flooding
260
+ {Colors.CYAN}3.{Colors.END} Email Tools - Configure Email flooding
261
+ {Colors.CYAN}4.{Colors.END} Start Attack - Begin configured attack
262
+ {Colors.CYAN}5.{Colors.END} Stop Attack - Halt current operations
263
+ {Colors.CYAN}6.{Colors.END} Status - View attack statistics
264
+ {Colors.CYAN}7.{Colors.END} Save Config - Export current configuration
265
+ {Colors.CYAN}8.{Colors.END} Load Config - Import saved configuration
266
+ {Colors.CYAN}9.{Colors.END} Clear Console - Clear terminal output
267
+ {Colors.CYAN}0.{Colors.END} Exit - Close application
268
+
269
+ {Colors.GREEN}Current Status:{Colors.END} {self.get_status()}
270
+ """
271
+ print(menu)
272
+
273
+ def get_status(self):
274
+ if self.simulator.active_attacks:
275
+ return f"{Colors.GREEN}{Colors.BOLD}ATTACKING{Colors.END} ({len(self.simulator.active_attacks)} active)"
276
+ return f"{Colors.RED}IDLE{Colors.END}"
277
+
278
+ def steam_tools_menu(self):
279
+ print(f"\n{Colors.BLUE}{Colors.BOLD}=== Steam ID Flooder Configuration ==={Colors.END}\n")
280
+
281
+ targets_input = input(f"{Colors.CYAN}Enter Steam IDs (one per line, empty line to finish):{Colors.END}\n")
282
+ targets = []
283
+ while targets_input.strip():
284
+ targets.append(targets_input.strip())
285
+ targets_input = input()
286
+
287
+ if not targets:
288
+ self.logger.error("No targets specified")
289
+ return None
290
+
291
+ print(f"\n{Colors.YELLOW}Request Type:{Colors.END}")
292
+ print(" 1. Friend Requests")
293
+ print(" 2. Message Flood")
294
+ print(" 3. Profile Comments")
295
+ choice = input("Select (1-3): ")
296
+
297
+ types = ["Friend Requests", "Message Flood", "Profile Comments"]
298
+ attack_type = types[int(choice)-1] if choice in ['1','2','3'] else "Friend Requests"
299
+
300
+ count = input(f"\nNumber of attacks per target [50]: ") or "50"
301
+ message = ""
302
+ if attack_type == "Message Flood":
303
+ message = input(f"Custom message [Hello from PyFlood]: ") or "Hello from PyFlood"
304
+
305
+ config = SteamConfig(
306
+ targets=targets,
307
+ attack_type=attack_type,
308
+ count=int(count),
309
+ message=message
310
+ )
311
+
312
+ self.logger.success(f"Steam configuration saved: {len(targets)} targets, {count} requests each")
313
+ return config
314
+
315
+ def ip_tools_menu(self):
316
+ print(f"\n{Colors.PURPLE}{Colors.BOLD}=== IP Flooder Configuration ==={Colors.END}\n")
317
+
318
+ targets_input = input(f"{Colors.CYAN}Enter IP addresses (one per line, empty line to finish):{Colors.END}\n")
319
+ targets = []
320
+ while targets_input.strip():
321
+ targets.append(targets_input.strip())
322
+ targets_input = input()
323
+
324
+ if not targets:
325
+ self.logger.error("No targets specified")
326
+ return None
327
+
328
+ print(f"\n{Colors.YELLOW}Attack Type:{Colors.END}")
329
+ print(" 1. UDP Flood")
330
+ print(" 2. SYN Flood")
331
+ print(" 3. HTTP Flood")
332
+ print(" 4. ICMP Flood")
333
+ choice = input("Select (1-4): ")
334
+
335
+ types = ["UDP Flood", "SYN Flood", "HTTP Flood", "ICMP Flood"]
336
+ attack_type = types[int(choice)-1] if choice in ['1','2','3','4'] else "UDP Flood"
337
+
338
+ duration = input(f"\nDuration in seconds [60]: ") or "60"
339
+ port = 80
340
+ if attack_type in ["UDP Flood", "SYN Flood", "HTTP Flood"]:
341
+ port = input(f"Target port [80]: ") or "80"
342
+
343
+ config = IPConfig(
344
+ targets=targets,
345
+ attack_type=attack_type,
346
+ duration=int(duration),
347
+ port=int(port)
348
+ )
349
+
350
+ self.logger.success(f"IP configuration saved: {len(targets)} targets, {duration}s duration")
351
+ return config
352
+
353
+ def email_tools_menu(self):
354
+ print(f"\n{Colors.GREEN}{Colors.BOLD}=== Email Flooder Configuration ==={Colors.END}\n")
355
+
356
+ targets_input = input(f"{Colors.CYAN}Enter email addresses (one per line, empty line to finish):{Colors.END}\n")
357
+ targets = []
358
+ while targets_input.strip():
359
+ targets.append(targets_input.strip())
360
+ targets_input = input()
361
+
362
+ if not targets:
363
+ self.logger.error("No targets specified")
364
+ return None
365
+
366
+ emails_per = input(f"\nEmails per target [20]: ") or "20"
367
+ delay = input(f"Delay between emails in ms [250]: ") or "250"
368
+ subject = input(f"Subject line [Important notification]: ") or "Important notification"
369
+ body = input(f"Email body [Default message]: ") or "This is a test message from PyFlood Suite"
370
+
371
+ config = EmailConfig(
372
+ targets=targets,
373
+ emails_per_target=int(emails_per),
374
+ delay=int(delay),
375
+ subject=subject,
376
+ body=body
377
+ )
378
+
379
+ self.logger.success(f"Email configuration saved: {len(targets)} targets, {emails_per} emails each")
380
+ return config
381
+
382
+ def start_attack(self, config):
383
+ if isinstance(config, SteamConfig):
384
+ attack_id = f"steam_{int(time.time())}"
385
+ self.simulator.active_attacks[attack_id] = True
386
+ thread = threading.Thread(
387
+ target=self.simulator.steam_flood,
388
+ args=(config, attack_id)
389
+ )
390
+ thread.daemon = True
391
+ thread.start()
392
+ self.logger.info(f"Steam attack thread started: {attack_id}")
393
+
394
+ elif isinstance(config, IPConfig):
395
+ attack_id = f"ip_{int(time.time())}"
396
+ self.simulator.active_attacks[attack_id] = True
397
+ thread = threading.Thread(
398
+ target=self.simulator.ip_flood,
399
+ args=(config, attack_id)
400
+ )
401
+ thread.daemon = True
402
+ thread.start()
403
+ self.logger.info(f"IP attack thread started: {attack_id}")
404
+
405
+ elif isinstance(config, EmailConfig):
406
+ attack_id = f"email_{int(time.time())}"
407
+ self.simulator.active_attacks[attack_id] = True
408
+ thread = threading.Thread(
409
+ target=self.simulator.email_flood,
410
+ args=(config, attack_id)
411
+ )
412
+ thread.daemon = True
413
+ thread.start()
414
+ self.logger.info(f"Email attack thread started: {attack_id}")
415
+
416
+ def stop_all_attacks(self):
417
+ count = len(self.simulator.active_attacks)
418
+ self.simulator.active_attacks.clear()
419
+ self.logger.warning(f"Stopped {count} active attack(s)")
420
+
421
+ def save_configuration(self, configs: Dict):
422
+ try:
423
+ data = {}
424
+ for key, config in configs.items():
425
+ if config:
426
+ data[key] = asdict(config)
427
+
428
+ with open(self.config_file, 'w') as f:
429
+ json.dump(data, f, indent=2)
430
+ self.logger.success(f"Configuration saved to {self.config_file}")
431
+ except Exception as e:
432
+ self.logger.error(f"Failed to save config: {e}")
433
+
434
+ def load_configuration(self):
435
+ try:
436
+ if not os.path.exists(self.config_file):
437
+ self.logger.error("No configuration file found")
438
+ return {}
439
+
440
+ with open(self.config_file, 'r') as f:
441
+ data = json.load(f)
442
+
443
+ configs = {}
444
+ if 'steam' in data:
445
+ configs['steam'] = SteamConfig(**data['steam'])
446
+ if 'ip' in data:
447
+ configs['ip'] = IPConfig(**data['ip'])
448
+ if 'email' in data:
449
+ configs['email'] = EmailConfig(**data['email'])
450
+
451
+ self.logger.success("Configuration loaded successfully")
452
+ return configs
453
+ except Exception as e:
454
+ self.logger.error(f"Failed to load config: {e}")
455
+ return {}
456
+
457
+ def show_status(self):
458
+ print(f"\n{Colors.BOLD}=== System Status ==={Colors.END}")
459
+ print(f"Active Attacks: {len(self.simulator.active_attacks)}")
460
+ print(f"Total Requests Sent: {self.simulator.attack_counter}")
461
+ print(f"Uptime: {time.strftime('%H:%M:%S', time.gmtime(time.time() - self.start_time))}")
462
+ print(f"Security: AES-256 Encrypted Connection")
463
+ print("")
464
+
465
+ def run(self):
466
+ self.start_time = time.time()
467
+ current_config = {}
468
+
469
+ self.clear_screen()
470
+ self.print_banner()
471
+
472
+ self.logger.info("PyFlood Suite v1.2.5 initialized")
473
+ self.logger.info("Security protocol: AES-256 encrypted")
474
+ self.logger.info("Ready to initiate flood attacks")
475
+ self.logger.warning("Use responsibly - Educational purposes only")
476
+
477
+ while self.running:
478
+ self.print_menu()
479
+ choice = input(f"{Colors.BOLD}pyflood>{Colors.END} ").strip().lower()
480
+
481
+ if choice in ['1', 'steam', 'steam tools']:
482
+ config = self.steam_tools_menu()
483
+ if config:
484
+ current_config['steam'] = config
485
+
486
+ elif choice in ['2', 'ip', 'ip tools']:
487
+ config = self.ip_tools_menu()
488
+ if config:
489
+ current_config['ip'] = config
490
+
491
+ elif choice in ['3', 'email', 'email tools']:
492
+ config = self.email_tools_menu()
493
+ if config:
494
+ current_config['email'] = config
495
+
496
+ elif choice in ['4', 'start', 'start attack']:
497
+ if not current_config:
498
+ self.logger.error("No configuration loaded. Configure tools first.")
499
+ else:
500
+ print(f"\n{Colors.YELLOW}Available configurations:{Colors.END}")
501
+ for i, (key, _) in enumerate(current_config.items(), 1):
502
+ print(f" {i}. {key.upper()}")
503
+ print(" 0. ALL")
504
+
505
+ attack_choice = input("Select attack to start: ")
506
+ if attack_choice == '0':
507
+ for config in current_config.values():
508
+ self.start_attack(config)
509
+ elif attack_choice.isdigit():
510
+ idx = int(attack_choice) - 1
511
+ if 0 <= idx < len(current_config):
512
+ key = list(current_config.keys())[idx]
513
+ self.start_attack(current_config[key])
514
+
515
+ elif choice in ['5', 'stop', 'stop attack']:
516
+ self.stop_all_attacks()
517
+
518
+ elif choice in ['6', 'status']:
519
+ self.show_status()
520
+
521
+ elif choice in ['7', 'save', 'save config']:
522
+ self.save_configuration(current_config)
523
+
524
+ elif choice in ['8', 'load', 'load config']:
525
+ loaded = self.load_configuration()
526
+ current_config.update(loaded)
527
+
528
+ elif choice in ['9', 'clear', 'clear console']:
529
+ self.clear_screen()
530
+ self.print_banner()
531
+
532
+ elif choice in ['0', 'exit', 'quit']:
533
+ self.running = False
534
+ self.stop_all_attacks()
535
+ self.logger.info("Shutting down PyFlood Suite...")
536
+ time.sleep(1)
537
+
538
+ elif choice == 'help':
539
+ print(f"\n{Colors.CYAN}Detailed Help:{Colors.END}")
540
+ print(" This tool simulates network testing scenarios.")
541
+ print(" Configure targets, select attack vectors, and monitor output.")
542
+ print(" All traffic is simulated for educational demonstration.")
543
+ print("")
544
+
545
+ else:
546
+ self.logger.error(f"Unknown command: {choice}")
547
+
548
+ def main():
549
+ parser = argparse.ArgumentParser(description='PyFlood Suite - Network Testing Tool')
550
+ parser.add_argument('--config', '-c', help='Load configuration file')
551
+ parser.add_argument('--steam', '-s', action='store_true', help='Steam mode')
552
+ parser.add_argument('--ip', '-i', action='store_true', help='IP mode')
553
+ parser.add_argument('--email', '-e', action='store_true', help='Email mode')
554
+ args = parser.parse_args()
555
+
556
+ suite = PyFloodSuite()
557
+
558
+ if args.config:
559
+ configs = suite.load_configuration()
560
+ # Auto-start if config provided
561
+ pass
562
+
563
+ try:
564
+ suite.run()
565
+ except KeyboardInterrupt:
566
+ print(f"\n{Colors.YELLOW}Interrupted by user{Colors.END}")
567
+ suite.stop_all_attacks()
568
+ print(f"{Colors.GREEN}Cleanup complete. Exiting.{Colors.END}")
569
+
570
+ if __name__ == "__main__":
571
+ main()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ colorama>=0.4.4