-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpimpdorker.py
125 lines (104 loc) · 4.05 KB
/
pimpdorker.py
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
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Pimp Dorker
Author: Om Shingare
GitHub: https://github.com/ShingareOm
"""
import sys
import time
import os
from urllib.parse import urlparse
from googlesearch import search
class Colors:
RED = "\033[91m"
BLUE = "\033[94m"
GREEN = "\033[92m"
RESET = "\033[0m"
def display_banner():
banner = f"""
{Colors.RED}
d8, d8b d8b
`8P 88P ?88
d88 88b
?88,.d88b, 88b 88bd8b,d88b ?88,.d88b, d888888 d8888b 88bd88b 888 d88'
`?88' ?88 88P 88P'`?8P'?8b`?88' ?88d8P' ?88 d8P' ?88 88P' ` 888bd8P'
88b d8P d88 d88 d88 88P 88b d8P88b ,88b 88b d88 d88 d88888b
888888P'd88' d88' d88' 88b 888888P'`?88P'`88b`?8888P'd88' d88' `?88b,
88P' 88P'
d88 d88 V 1.0
?8P ?8P
{Colors.RESET}
"""
print(banner)
print(f"{Colors.BLUE}Author: Om Shingare | Pimp Dorker")
print("GitHub: https://github.com/ShingareOm")
print(f"{Colors.RESET}")
def create_folder(folder_name):
try:
os.makedirs(folder_name, exist_ok=True)
print(f"{Colors.GREEN}[+] Folder created: {folder_name}{Colors.RESET}")
except Exception as e:
print(f"{Colors.RED}[!] Error creating folder: {e}{Colors.RESET}")
sys.exit(1)
def save_to_file(filepath, data):
try:
with open(filepath, "a", encoding="utf-8") as file:
file.write(data + "\n")
except Exception as e:
print(f"{Colors.RED}[!] Error saving to file: {e}{Colors.RESET}")
def extract_main_domain(url):
try:
domain = urlparse(url).netloc
if domain.startswith("www."):
domain = domain[4:]
return domain
except Exception:
return None
def perform_dork_search(query, amount, folder_name):
all_links_file = os.path.join(folder_name, "all_links.txt")
main_domains_file = os.path.join(folder_name, "main_domains.txt")
print(f"\n{Colors.BLUE}[~] Searching for: {query}{Colors.RESET}\n")
try:
for index, result in enumerate(search(query, num_results=amount), start=1):
print(f"[{index}] {result}")
# Save full URL
save_to_file(all_links_file, result)
# Save main domain
main_domain = extract_main_domain(result)
if main_domain:
save_to_file(main_domains_file, main_domain)
time.sleep(0.1)
except KeyboardInterrupt:
print(f"\n{Colors.RED}[!] Search interrupted by user. Exiting...{Colors.RESET}")
sys.exit(0)
except Exception as e:
print(f"{Colors.RED}[!] An error occurred: {e}{Colors.RESET}")
def get_user_input():
query = input("\n[+] Enter the Dork Search Query: ").strip()
while True:
try:
amount = int(input("[+] Enter the Number of Results to Display: ").strip())
if amount > 0:
break
else:
print(f"{Colors.RED}[!] Please enter a positive integer.{Colors.RESET}")
except ValueError:
print(f"{Colors.RED}[!] Invalid input. Please enter a number.{Colors.RESET}")
return query, amount
def main():
display_banner()
# Get folder name from command-line argument or user input
if len(sys.argv) > 1:
folder_name = sys.argv[1]
else:
folder_name = input("[+] Enter the folder name to save results: ").strip()
create_folder(folder_name)
try:
query, amount = get_user_input()
perform_dork_search(query, amount, folder_name)
print(f"{Colors.GREEN}[~] Done! Results saved in {folder_name}.{Colors.RESET}")
except KeyboardInterrupt:
print(f"\n{Colors.RED}[!] Program interrupted by user. Exiting...{Colors.RESET}")
if __name__ == "__main__":
main()