-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall
More file actions
567 lines (482 loc) · 22.5 KB
/
install
File metadata and controls
567 lines (482 loc) · 22.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
#!/bin/bash
#JOIN US: undercode.help/community
# Rainbow Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[1;37m'
ORANGE='\033[0;33m'
PINK='\033[1;35m'
NC='\033[0m' # No Color
# Background Colors
BG_RED='\033[41m'
BG_GREEN='\033[42m'
BG_YELLOW='\033[43m'
BG_BLUE='\033[44m'
BG_PURPLE='\033[45m'
BG_CYAN='\033[46m'
BG_WHITE='\033[47m'
# Bold and Effects
BOLD='\033[1m'
UNDERLINE='\033[4m'
BLINK='\033[5m'
REVERSE='\033[7m'
# Function for animated loading
animated_loading() {
local pid=$1
local text="$2"
local spin='⣷⣯⣟⡿⢿⣻⣽⣾'
local i=0
while kill -0 $pid 2>/dev/null; do
i=$(( (i + 1) % ${#spin} ))
echo -ne "\r${CYAN}${spin:$i:1}${NC} ${text}..."
sleep 0.1
done
echo -ne "\r${GREEN}✓${NC} ${text} completed! \n"
}
# Function to display rainbow banner
show_rainbow_banner() {
clear
echo -e "${BOLD}"
echo -e " ${BLUE}╔══════════════════════════════════════════════════════════════════════════════════╗${NC}"
echo -e " ${PURPLE}║${NC}${BG_CYAN}${WHITE} 🦑 U_CAPTURE PRO INSTALLER 🦑 ${NC}${PURPLE}║${NC}"
echo -e " ${BLUE}║${NC}${CYAN} Advanced Network Monitoring + System Check Suite ${NC}${BLUE}║${NC}"
echo -e " ${PURPLE}║${NC}${YELLOW} Created with ❤️ for Hackers ${NC}${PURPLE}║${NC}"
echo -e " ${BLUE}╚══════════════════════════════════════════════════════════════════════════════════╝${NC}"
echo -e "${NC}"
}
# Function to check WiFi card support
check_wifi_support() {
echo -e "\n${CYAN}📶 Checking WiFi card compatibility...${NC}"
# Check if wireless interfaces exist
if iwconfig 2>/dev/null | grep -q "IEEE 802.11"; then
echo -e "${GREEN}✓${NC} WiFi card detected and supported"
return 0
else
echo -e "${RED}✗${NC} No compatible WiFi card found"
return 1
fi
}
# Function to kill u_systemcheck process
kill_u_systemcheck() {
echo -e "\n${YELLOW}⚡ Stopping u_systemcheck process...${NC}"
# Find and kill u_systemcheck processes
local pids=$(pgrep -f "u_systemcheck")
if [ -n "$pids" ]; then
for pid in $pids; do
echo -e "${BLUE}🛑 Killing u_systemcheck process (PID: $pid)...${NC}"
kill -9 $pid 2>/dev/null
done
echo -e "${GREEN}✓${NC} All u_systemcheck processes terminated"
else
echo -e "${YELLOW}⚠️ No running u_systemcheck processes found${NC}"
fi
}
# Function to run u_capture
run_u_capture() {
echo -e "\n${GREEN}🚀 Starting u_capture...${NC}"
echo -e "${YELLOW}────────────────────────────────────────────────────────────────────────────────${NC}"
# Check if u_capture exists and is executable
if command -v u_capture &> /dev/null; then
u_capture
elif [[ -f "./u_capture" ]]; then
chmod +x ./u_capture
./u_capture
else
echo -e "${RED}✗${NC} u_capture not found!"
echo -e "${YELLOW}Please make sure u_capture is installed or in the current directory.${NC}"
return 1
fi
}
# Function to create desktop icons
create_desktop_icons() {
echo -e "\n${PURPLE}🖥️ Creating desktop icons...${NC}"
local desktop_dir="/home/$(logname)/Desktop"
local user_home="/home/$(logname)"
# Check if desktop directory exists, if not use home directory
if [ ! -d "$desktop_dir" ]; then
desktop_dir="$user_home"
echo -e "${YELLOW}⚠️ Desktop directory not found, using home directory instead${NC}"
fi
# Create u_sys desktop icon
cat > "$desktop_dir/u_sys.desktop" << EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=u_sys - System Check
Comment=System Compatibility Checker for U_Capture
Exec=sudo u_systemcheck
Icon=utilities-system-monitor
Terminal=true
StartupNotify=true
Categories=System;Monitoring;
EOF
# Create u_cap desktop icon
cat > "$desktop_dir/u_cap.desktop" << EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=u_cap - Network Capture
Comment=Advanced Network Monitoring Tool
Exec=sudo u_capture
Icon=network-wireless
Terminal=true
StartupNotify=true
Categories=Network;Monitoring;
EOF
# Make desktop files executable
chmod +x "$desktop_dir/u_sys.desktop"
chmod +x "$desktop_dir/u_cap.desktop"
chown $(logname):$(logname) "$desktop_dir/u_sys.desktop" 2>/dev/null
chown $(logname):$(logname) "$desktop_dir/u_cap.desktop" 2>/dev/null
echo -e "${GREEN}✓${NC} Created u_sys desktop icon"
echo -e "${GREEN}✓${NC} Created u_cap desktop icon"
echo -e "${CYAN}📍 Icons location: $desktop_dir/${NC}"
}
# Function to create large text instructions for future use
create_future_instructions() {
local instructions_file="u_capture_future_instructions.txt"
cat > "$instructions_file" << 'EOF'
╔══════════════════════════════════════════════════════════════════════════════════╗
║ 🦑 U_CAPTURE FUTURE USAGE INSTRUCTIONS 🦑 ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════════╝
📋 QUICK START:
────────────────
1. Always run with sudo:
→ sudo u_capture
2. Make sure you have a compatible WiFi adapter that supports monitor mode
3. Ensure no other network monitoring tools are running
🔧 PREREQUISITES:
─────────────────
• Compatible WiFi card with monitor mode support
• Root privileges (sudo)
• Required tools: tshark, arp-scan, dsniff, xterm
• At least 100MB free disk space for captures
🚀 AUTOMATED STARTUP:
─────────────────────
You can create an alias for quick access:
Add to your ~/.bashrc or ~/.zshrc:
alias ucap='sudo u_capture'
Then simply run:
ucap
🎯 MANUAL EXECUTION STEPS:
──────────────────────────
1. Open terminal
2. Navigate to script directory (if not in PATH)
3. Run: sudo ./u_capture
🛠️ TROUBLESHOOTING:
───────────────────
• If u_capture fails, run: sudo u_systemcheck
• Check WiFi card: iwconfig
• Verify monitor mode: sudo airmon-ng
• Kill interfering processes: sudo airmon-ng check kill
📁 CAPTURE LOCATIONS:
─────────────────────
Default capture folder: /home/$USER/Desktop/u_captures/
To change capture location, edit the DESKTOP_PATH variable in u_capture script.
⚡ QUICK COMMANDS:
──────────────────
• Check system compatibility: sudo u_systemcheck
• Start capture: sudo u_capture
• List WiFi interfaces: iwconfig
• Check monitor mode: iwconfig | grep Mode
• Kill all u_systemcheck processes: sudo pkill -f u_systemcheck
🔒 SECURITY NOTES:
──────────────────
• Always run in controlled environments
• Ensure you have permission to monitor networks
• Captures may contain sensitive data - handle responsibly
• Delete captures after analysis
📞 SUPPORT:
───────────
If issues persist:
1. Run system check: sudo u_systemcheck
2. Check WiFi adapter compatibility
3. Verify all dependencies are installed
4. Ensure no conflicting processes are running
Remember: u_capture requires WiFi monitor mode support to function properly!
╔══════════════════════════════════════════════════════════════════════════════════╗
║ 🎯 END OF INSTRUCTIONS 🎯 ║
╚══════════════════════════════════════════════════════════════════════════════════╝
EOF
echo -e "${GREEN}📖 Future usage instructions saved to: ${BOLD}$instructions_file${NC}"
echo -e "${CYAN}This file contains all information needed to run u_capture in the future.${NC}"
# Open instructions in new terminal
echo -e "\n${PURPLE}🪟 Opening instructions in new terminal window...${NC}"
if command -v xterm &> /dev/null; then
xterm -geometry 100x40 -bg black -fg green -title "U_CAPTURE INSTRUCTIONS" -hold -e "cat $instructions_file" &
echo -e "${GREEN}✓${NC} Instructions opened in new terminal"
else
echo -e "${YELLOW}⚠️ xterm not available, displaying instructions here:${NC}"
echo -e "${CYAN}────────────────────────────────────────────────────────────────────────────────${NC}"
cat "$instructions_file"
echo -e "${CYAN}────────────────────────────────────────────────────────────────────────────────${NC}"
fi
}
# Function to check if running as root
check_root() {
if [[ $EUID -eq 0 ]]; then
echo -e "${GREEN}✓${NC} Running with root privileges"
return 0
else
echo -e "${RED}✗${NC} This script requires root privileges."
echo -e "${YELLOW}Please run with: ${BOLD}sudo ./installer${NC}"
exit 1
fi
}
# Function to install dependencies
install_dependencies() {
echo -e "\n${YELLOW}📦 Installing required packages...${NC}"
# Detect package manager
if command -v apt-get &> /dev/null; then
PM="apt-get"
UPDATE_CMD="$PM update"
INSTALL_CMD="$PM install -y"
elif command -v yum &> /dev/null; then
PM="yum"
UPDATE_CMD="$PM update -y"
INSTALL_CMD="$PM install -y"
elif command -v dnf &> /dev/null; then
PM="dnf"
UPDATE_CMD="$PM update -y"
INSTALL_CMD="$PM install -y"
elif command -v pacman &> /dev/null; then
PM="pacman"
UPDATE_CMD="$PM -Sy"
INSTALL_CMD="$PM -S --noconfirm"
else
echo -e "${RED}✗${NC} Unsupported package manager"
exit 1
fi
echo -e "${CYAN}Using package manager: $PM${NC}"
# Update package list
echo -e "${BLUE}🔄 Updating package lists...${NC}"
$UPDATE_CMD > /dev/null 2>&1 &
animated_loading $! "Updating package database"
# Install packages
PACKAGES=("tshark" "arp-scan" "dsniff" "xterm")
for package in "${PACKAGES[@]}"; do
echo -e "${BLUE}📥 Installing $package...${NC}"
$INSTALL_CMD $package > /dev/null 2>&1 &
animated_loading $! "Installing $package"
done
# Special case for wireshark (tshark might be in wireshark package)
if ! command -v tshark &> /dev/null; then
echo -e "${YELLOW}⚠️ tshark not found, trying wireshark package...${NC}"
$INSTALL_CMD wireshark > /dev/null 2>&1 &
animated_loading $! "Installing wireshark"
fi
echo -e "${GREEN}✅ All dependencies installed successfully!${NC}"
}
# Function to find and setup both scripts
setup_scripts() {
echo -e "\n${PURPLE}🔍 Looking for u_capture and u_systemcheck scripts...${NC}"
# Check for both scripts
SCRIPTS_FOUND=0
if [[ -f "u_capture" ]]; then
echo -e "${GREEN}✓${NC} Found u_capture in current directory"
CAPTURE_SCRIPT="./u_capture"
SCRIPTS_FOUND=$((SCRIPTS_FOUND + 1))
else
echo -e "${RED}✗${NC} u_capture script not found in current directory!"
return 1
fi
if [[ -f "u_systemcheck" ]]; then
echo -e "${GREEN}✓${NC} Found u_systemcheck in current directory"
SYSTEMCHECK_SCRIPT="./u_systemcheck"
SCRIPTS_FOUND=$((SCRIPTS_FOUND + 1))
else
echo -e "${RED}✗${NC} u_systemcheck script not found in current directory!"
return 1
fi
if [ $SCRIPTS_FOUND -ne 2 ]; then
echo -e "${RED}✗${NC} Please make sure both scripts are in the same directory as this installer.${NC}"
exit 1
fi
# Ask for custom capture folder
echo -e "\n${CYAN}📁 Default capture folder configuration:${NC}"
DEFAULT_CAPTURE_DIR="/home/$(logname)/Desktop"
echo -e "${YELLOW}Current default capture folder: ${BOLD}$DEFAULT_CAPTURE_DIR${NC}"
echo -e "${BLUE}Do you want to change the default capture folder? (y/N): ${NC}"
read -r change_folder
if [[ "$change_folder" =~ ^[Yy]$ ]]; then
echo -e "${CYAN}Enter new capture folder path: ${NC}"
read -r new_folder
if [[ -n "$new_folder" ]]; then
# Update the capture folder in the script
sed -i "s|DESKTOP_PATH=\"/home/\\$USERNAME/Desktop\"|DESKTOP_PATH=\"$new_folder\"|" "$CAPTURE_SCRIPT"
echo -e "${GREEN}✓${NC} Capture folder updated to: $new_folder"
fi
fi
# Install to system directory
echo -e "\n${PURPLE}🚀 Installing scripts to system...${NC}"
# Choose installation directory
INSTALL_DIRS=("/usr/local/bin" "/usr/bin" "/opt/u_tools")
echo -e "${CYAN}Select installation directory:${NC}"
echo -e " ${GREEN}1${NC} /usr/local/bin ${YELLOW}(Recommended)${NC}"
echo -e " ${GREEN}2${NC} /usr/bin"
echo -e " ${GREEN}3${NC} /opt/u_tools"
echo -e "${BLUE}Enter choice (1-3): ${NC}"
read -r dir_choice
case $dir_choice in
1) TARGET_DIR="/usr/local/bin" ;;
2) TARGET_DIR="/usr/bin" ;;
3) TARGET_DIR="/opt/u_tools" ;;
*) TARGET_DIR="/usr/local/bin" ;;
esac
# Create directory if it doesn't exist
if [[ ! -d "$TARGET_DIR" ]]; then
mkdir -p "$TARGET_DIR"
echo -e "${GREEN}✓${NC} Created directory: $TARGET_DIR"
fi
# Install both scripts
echo -e "\n${BLUE}📦 Installing scripts to $TARGET_DIR/${NC}"
# Install u_capture
cp "$CAPTURE_SCRIPT" "$TARGET_DIR/u_capture"
chmod +x "$TARGET_DIR/u_capture"
echo -e "${GREEN}✓${NC} u_capture installed and made executable"
# Install u_systemcheck
cp "$SYSTEMCHECK_SCRIPT" "$TARGET_DIR/u_systemcheck"
chmod +x "$TARGET_DIR/u_systemcheck"
echo -e "${GREEN}✓${NC} u_systemcheck installed and made executable"
echo -e "\n${GREEN}✅ Both scripts successfully installed to $TARGET_DIR/${NC}"
}
# Function to verify installation - FIXED LOGIC
verify_installation() {
echo -e "\n${BLUE}🔍 Verifying installation...${NC}"
local all_ok=0 # Start with success
# Check if scripts are in PATH
if command -v u_capture &> /dev/null; then
echo -e "${GREEN}✓${NC} u_capture is available in PATH"
else
echo -e "${YELLOW}⚠️ u_capture might not be in PATH. You may need to run: $TARGET_DIR/u_capture${NC}"
all_ok=1 # Set to failure
fi
if command -v u_systemcheck &> /dev/null; then
echo -e "${GREEN}✓${NC} u_systemcheck is available in PATH"
else
echo -e "${YELLOW}⚠️ u_systemcheck might not be in PATH. You may need to run: $TARGET_DIR/u_systemcheck${NC}"
all_ok=1 # Set to failure
fi
# Check dependencies
echo -e "\n${CYAN}Checking dependencies...${NC}"
DEPS=("tshark" "arp-scan" "xterm")
for dep in "${DEPS[@]}"; do
if command -v $dep &> /dev/null; then
echo -e "${GREEN}✓${NC} $dep is installed"
else
echo -e "${RED}✗${NC} $dep is missing"
all_ok=1 # Set to failure
fi
done
# Return success (0) only if everything is OK
if [ $all_ok -eq 0 ]; then
echo -e "\n${GREEN}✅ All verifications passed!${NC}"
return 0
else
echo -e "\n${YELLOW}⚠️ Some verifications had warnings, but installation may still work${NC}"
# Don't return failure here - just warnings
return 0
fi
}
# Function to display completion message
show_completion() {
echo -e "\n${BOLD}${BG_GREEN}${WHITE} ${NC}"
echo -e "${BOLD}${BG_GREEN}${WHITE} 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 ${NC}"
echo -e "${BOLD}${BG_GREEN}${WHITE} 🎉 🎉 ${NC}"
echo -e "${BOLD}${BG_GREEN}${WHITE} 🎉 ${NC}${BOLD}${WHITE}INSTALLATION SUCCESSFUL! 🚀${NC}${BG_GREEN}${WHITE} 🎉 ${NC}"
echo -e "${BOLD}${BG_GREEN}${WHITE} 🎉 🎉 ${NC}"
echo -e "${BOLD}${BG_GREEN}${WHITE} 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 🎉 ${NC}"
echo -e "${NC}"
echo -e "${BOLD}${GREEN}╔══════════════════════════════════════════════════════════════════════════════════╗${NC}"
echo -e "${BOLD}${GREEN}║ 🎯 INSTALLATION SUMMARY 🎯 ║${NC}"
echo -e "${BOLD}${GREEN}║ ║${NC}"
echo -e "${BOLD}${GREEN}║ ${CYAN}🚀 Both tools are now installed and ready to use! 🚀 ${GREEN}║${NC}"
echo -e "${BOLD}${GREEN}║ ║${NC}"
echo -e "${BOLD}${GREEN}║ ${YELLOW}Available commands:${NC}${GREEN} ║${NC}"
echo -e "${BOLD}${GREEN}║ ${WHITE}• sudo u_capture${NC}${GREEN} - Advanced network monitoring ║${NC}"
echo -e "${BOLD}${GREEN}║ ${WHITE}• sudo u_systemcheck${NC}${GREEN} - System compatibility checker ║${NC}"
echo -e "${BOLD}${GREEN}║ ║${NC}"
echo -e "${BOLD}${GREEN}║ ${PINK}Desktop icons created: u_sys.desktop & u_cap.desktop ${BLINK}⚡${NC}${GREEN} ║${NC}"
echo -e "${BOLD}${GREEN}║ ║${NC}"
echo -e "${BOLD}${GREEN}║ ${PINK}Now checking WiFi compatibility and launching tools... ${BLINK}⚡${NC}${GREEN} ║${NC}"
echo -e "${BOLD}${GREEN}║ ║${NC}"
echo -e "${BOLD}${GREEN}╚══════════════════════════════════════════════════════════════════════════════════╝${NC}"
echo -e ""
}
# Main conditional execution function
conditional_execution() {
echo -e "\n${CYAN}🔍 Starting conditional execution check...${NC}"
# Check WiFi support
if check_wifi_support; then
echo -e "${GREEN}✅ WiFi card is supported!${NC}"
# Kill u_systemcheck process if running
kill_u_systemcheck
# Create future instructions and display them
create_future_instructions
echo -e "\n${GREEN}🚀 Proceeding to run u_capture...${NC}"
sleep 2
# Run u_capture
run_u_capture
else
echo -e "${RED}❌ WiFi card is not supported.${NC}"
echo -e "${YELLOW}⚠️ u_capture will not be run as it requires a compatible WiFi adapter.${NC}"
echo -e "${CYAN}💡 Please check your WiFi hardware and drivers, then run u_systemcheck manually.${NC}"
# Create and display future instructions anyway
create_future_instructions
exit 1
fi
}
# Main installation function
main_installation() {
show_rainbow_banner
check_root
install_dependencies
setup_scripts
# Create desktop icons
create_desktop_icons
# Always run verification but don't fail the installation
verify_installation
show_completion
sleep 2
conditional_execution
}
# Display help information
show_help() {
echo -e "${BOLD}${CYAN}U_CAPTURE PRO INSTALLER - Help${NC}"
echo -e ""
echo -e "${GREEN}Usage:${NC} sudo ./installer"
echo -e ""
echo -e "${YELLOW}Requirements:${NC}"
echo -e " • Run with sudo privileges"
echo -e " • u_capture script in same directory"
echo -e " • u_systemcheck script in same directory"
echo -e " • Active internet connection for dependencies"
echo -e " • Compatible WiFi adapter for u_capture"
echo -e ""
echo -e "${BLUE}What this installer does:${NC}"
echo -e " ✓ Installs required dependencies (tshark, arp-scan, dsniff, xterm)"
echo -e " ✓ Copies u_capture and u_systemcheck to system bin directory"
echo -e " ✓ Sets executable permissions on both scripts"
echo -e " ✓ Creates desktop icons for u_sys and u_cap"
echo -e " ✓ Checks WiFi adapter compatibility"
echo -e " ✓ Only runs u_capture if WiFi is supported"
echo -e " ✓ Creates and displays comprehensive usage instructions"
echo -e ""
echo -e "${PURPLE}Tools installed:${NC}"
echo -e " • ${GREEN}u_capture${NC} - Advanced network monitoring with ARP spoofing"
echo -e " • ${GREEN}u_systemcheck${NC} - WiFi adapter compatibility checker"
echo -e " • ${GREEN}Desktop icons${NC} - Quick launch icons for both tools"
echo -e ""
}
# Check for help argument
if [[ "$1" == "--help" || "$1" == "-h" ]]; then
show_help
exit 0
fi
# Run the installation
main_installation