milenium 0.5.2__tar.gz → 0.5.3__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.
- {milenium-0.5.2 → milenium-0.5.3}/PKG-INFO +1 -1
- {milenium-0.5.2 → milenium-0.5.3}/milenium/tui.py +73 -59
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/PKG-INFO +1 -1
- {milenium-0.5.2 → milenium-0.5.3}/pyproject.toml +1 -1
- {milenium-0.5.2 → milenium-0.5.3}/README.md +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/__init__.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/cli.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/__init__.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/aggregator.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/breach.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/breach_local.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dehashed.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dns_history.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/domain.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dorker.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/email.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/email_validator.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/exif_extractor.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/github_search.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/gravatar.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/hibp.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/instagram_osint.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip_geo_advanced.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip_reputation.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/leakcheck.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/logger.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/password_pattern.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/permutator.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/pgp_lookup.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/phone.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/pwned_passwords.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/report.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/reverse_whois.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/shodan_lite.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/social.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/telegram_osint.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/tg_parser.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/twitter_osint.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/username.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/vk_osint.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/wayback.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/wifi_geolocation.py +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/SOURCES.txt +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/dependency_links.txt +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/entry_points.txt +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/requires.txt +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/top_level.txt +0 -0
- {milenium-0.5.2 → milenium-0.5.3}/setup.cfg +0 -0
|
@@ -14,56 +14,45 @@ from rich.prompt import Prompt
|
|
|
14
14
|
|
|
15
15
|
console = Console()
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚══════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝
|
|
25
|
-
[/bold red]
|
|
17
|
+
LOGO = r"""
|
|
18
|
+
███╗ ███╗██╗██╗ ███████╗███╗ ██╗██╗██╗ ██╗███╗ ███╗
|
|
19
|
+
████╗ ████║██║██║ ██╔════╝████╗ ██║██║██║ ██║████╗ ████║
|
|
20
|
+
██╔████╔██║██║██║ █████╗ ██╔██╗ ██║██║██║ ██║██╔████╔██║
|
|
21
|
+
██║╚██╔╝██║██║██║ ██╔══╝ ██║╚██╗██║██║██║ ██║██║╚██╔╝██║
|
|
22
|
+
██║ ╚═╝ ██║██║███████╗███████╗██║ ╚████║██║╚██████╔╝██║ ╚═╝ ██║
|
|
23
|
+
╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═══╝╚═╝ ╚═════╝ ╚═╝ ╚═╝
|
|
26
24
|
"""
|
|
27
25
|
|
|
28
|
-
BANNER = """
|
|
29
|
-
[bold red]╔══════════════════════════════════════════════════════════════════════════╗
|
|
30
|
-
║ [bold white]MILENIUM[/bold white] [red]|[/red] [bold white]DESIGNED BY[/bold white] [red]@VexxDev200[/red] ║
|
|
31
|
-
║ [red]|[/red] [bold white]TG:[/bold white] [red]@milenium[/red] [red]|[/red] [bold white]DC:[/bold white] [red]milenium[/red] [red]|[/red] [bold white]STATUS:[/bold white] [green]● ONLINE[/green] ║
|
|
32
|
-
╚══════════════════════════════════════════════════════════════════════════╝[/bold red]
|
|
33
|
-
"""
|
|
34
|
-
|
|
35
|
-
# Все команды с категориями
|
|
36
26
|
COMMANDS = {
|
|
37
27
|
"ПОИСК ЛЮДЕЙ": [
|
|
38
|
-
("user <ник>
|
|
28
|
+
("user <ник>", "Поиск по соцсетям + вариации + Dorks"),
|
|
39
29
|
("social_cmd <ник>", "Поиск соцсетей по нику"),
|
|
40
|
-
("email_check <email>", "SMTP + Gravatar + PGP + GitHub
|
|
30
|
+
("email_check <email>", "SMTP + Gravatar + PGP + GitHub"),
|
|
41
31
|
("mail <email>", "MX, HIBP, Gravatar"),
|
|
42
32
|
("phone_cmd <номер>", "Оператор, страна, часовой пояс"),
|
|
43
|
-
("telegram <канал>", "Парсинг публичного
|
|
33
|
+
("telegram <канал>", "Парсинг публичного TG-канала"),
|
|
44
34
|
],
|
|
45
35
|
"УТЕЧКИ И ПАРОЛИ": [
|
|
46
|
-
("pwned <пароль>", "Проверка пароля в утечках
|
|
36
|
+
("pwned <пароль>", "Проверка пароля в утечках"),
|
|
47
37
|
("leaks <email>", "HIBP утечки"),
|
|
48
|
-
("pwgen
|
|
49
|
-
("full
|
|
38
|
+
("pwgen --name N --year Y", "Генератор паролей"),
|
|
39
|
+
("full --email E --username U", "Агрегатор всех модулей"),
|
|
50
40
|
],
|
|
51
41
|
"СЕТЬ И ДОМЕНЫ": [
|
|
52
|
-
("ip_cmd <IP>", "Гео, ASN,
|
|
53
|
-
("dom <домен>", "WHOIS, DNS,
|
|
42
|
+
("ip_cmd <IP>", "Гео, ASN, Shodan, репутация"),
|
|
43
|
+
("dom <домен>", "WHOIS, DNS, crt.sh"),
|
|
54
44
|
("whois_rev <домен>", "Reverse WHOIS"),
|
|
55
|
-
("ssl_info <host>", "SSL
|
|
45
|
+
("ssl_info <host>", "SSL-сертификат"),
|
|
56
46
|
("robots <домен>", "robots.txt + sitemap"),
|
|
57
|
-
("subdomains <домен>", "Перебор поддоменов"),
|
|
58
47
|
],
|
|
59
|
-
"ФАЙЛЫ
|
|
48
|
+
"ФАЙЛЫ": [
|
|
60
49
|
("exif <path>", "EXIF/GPS из фото"),
|
|
61
|
-
("
|
|
62
|
-
("eml <path>", "Анализ заголовков письма"),
|
|
50
|
+
("eml <path>", "Заголовки письма"),
|
|
63
51
|
("wayback <url>", "Wayback Machine"),
|
|
64
52
|
],
|
|
65
53
|
"ИНТЕРФЕЙС": [
|
|
66
|
-
("
|
|
54
|
+
("help", "Показать все команды"),
|
|
55
|
+
("clear", "Очистить вывод"),
|
|
67
56
|
("exit / q", "Выход"),
|
|
68
57
|
],
|
|
69
58
|
}
|
|
@@ -73,7 +62,6 @@ SESSION = {
|
|
|
73
62
|
"queries": 0,
|
|
74
63
|
"results": 0,
|
|
75
64
|
"last": [],
|
|
76
|
-
"db_path": None,
|
|
77
65
|
"db_loaded": False,
|
|
78
66
|
}
|
|
79
67
|
|
|
@@ -90,7 +78,7 @@ def push_output(text):
|
|
|
90
78
|
def log_result(text):
|
|
91
79
|
ts = datetime.now().strftime("%H:%M:%S")
|
|
92
80
|
SESSION["last"].append(f"[red]{ts}[/red] {text}")
|
|
93
|
-
if len(SESSION["last"]) >
|
|
81
|
+
if len(SESSION["last"]) > 10:
|
|
94
82
|
SESSION["last"].pop(0)
|
|
95
83
|
|
|
96
84
|
|
|
@@ -98,13 +86,13 @@ def build_layout():
|
|
|
98
86
|
layout = Layout()
|
|
99
87
|
layout.split_column(
|
|
100
88
|
Layout(name="header", size=9),
|
|
101
|
-
Layout(name="body", ratio=
|
|
89
|
+
Layout(name="body", ratio=2),
|
|
102
90
|
Layout(name="output", size=12),
|
|
103
91
|
Layout(name="input", size=3),
|
|
104
92
|
Layout(name="footer", size=3),
|
|
105
93
|
)
|
|
106
94
|
layout["body"].split_row(
|
|
107
|
-
Layout(name="left", ratio=
|
|
95
|
+
Layout(name="left", ratio=3),
|
|
108
96
|
Layout(name="center", ratio=2),
|
|
109
97
|
Layout(name="right", ratio=1),
|
|
110
98
|
)
|
|
@@ -112,19 +100,28 @@ def build_layout():
|
|
|
112
100
|
|
|
113
101
|
|
|
114
102
|
def render_header():
|
|
115
|
-
|
|
116
|
-
banner = Text.from_markup(
|
|
117
|
-
|
|
103
|
+
logo_text = Text(LOGO, style="bold red")
|
|
104
|
+
banner = Text.from_markup(
|
|
105
|
+
"[bold white]MILENIUM[/bold white] [red]|[/red] [bold white]@VexxDev200[/bold white] "
|
|
106
|
+
"[red]|[/red] [bold white]TG:[/bold white] [red]@milenium[/red] "
|
|
107
|
+
"[red]|[/red] [bold white]STATUS:[/bold white] [green]● ONLINE[/green]"
|
|
108
|
+
)
|
|
109
|
+
return Panel(
|
|
110
|
+
Align.center(logo_text + banner),
|
|
111
|
+
border_style="red",
|
|
112
|
+
title="[bold red]MILENIUM[/bold red]",
|
|
113
|
+
subtitle="[red]v0.5.3[/red]",
|
|
114
|
+
)
|
|
118
115
|
|
|
119
116
|
|
|
120
117
|
def render_commands():
|
|
121
|
-
table = Table(show_header=True, box=None, padding=(0, 1), header_style="bold red")
|
|
122
|
-
table.add_column("Команда", style="bold white")
|
|
123
|
-
table.add_column("Описание", style="red")
|
|
118
|
+
table = Table(show_header=True, box=None, padding=(0, 1), header_style="bold red", expand=True)
|
|
119
|
+
table.add_column("Команда", style="bold white", no_wrap=False)
|
|
120
|
+
table.add_column("Описание", style="red", no_wrap=False)
|
|
124
121
|
for category, cmds in COMMANDS.items():
|
|
125
122
|
table.add_row(f"[bold red]━━ {category} ━━[/bold red]", "")
|
|
126
123
|
for cmd, desc in cmds:
|
|
127
|
-
table.add_row(
|
|
124
|
+
table.add_row(cmd, desc)
|
|
128
125
|
return Panel(table, title="[bold red]ВСЕ КОМАНДЫ[/bold red]", border_style="red")
|
|
129
126
|
|
|
130
127
|
|
|
@@ -132,12 +129,12 @@ def render_session():
|
|
|
132
129
|
lines = []
|
|
133
130
|
uptime = datetime.now() - SESSION["start"]
|
|
134
131
|
mins, secs = divmod(int(uptime.total_seconds()), 60)
|
|
135
|
-
lines.append(f"[white]Uptime:[/white]
|
|
136
|
-
lines.append(f"[white]Запросов:[/white]
|
|
137
|
-
lines.append(f"[white]Найдено:[/white]
|
|
138
|
-
lines.append(f"[white]База:[/white]
|
|
132
|
+
lines.append(f"[white]Uptime:[/white] [red]{mins:02d}:{secs:02d}[/red]")
|
|
133
|
+
lines.append(f"[white]Запросов:[/white] [red]{SESSION['queries']}[/red]")
|
|
134
|
+
lines.append(f"[white]Найдено:[/white] [red]{SESSION['results']}[/red]")
|
|
135
|
+
lines.append(f"[white]База:[/white] [red]{'LOADED' if SESSION['db_loaded'] else 'NOT LOADED'}[/red]")
|
|
139
136
|
lines.append("")
|
|
140
|
-
lines.append("[bold red]
|
|
137
|
+
lines.append("[bold red]━━ ПОСЛЕДНИЕ ━━[/bold red]")
|
|
141
138
|
if SESSION["last"]:
|
|
142
139
|
lines.extend(SESSION["last"])
|
|
143
140
|
else:
|
|
@@ -147,21 +144,18 @@ def render_session():
|
|
|
147
144
|
|
|
148
145
|
def render_status():
|
|
149
146
|
lines = []
|
|
150
|
-
lines.append("[bold red]
|
|
151
|
-
for m in ["whois", "dns", "requests", "rich", "click"
|
|
152
|
-
lines.append(f"[white]{m}
|
|
147
|
+
lines.append("[bold red]━━ МОДУЛИ ━━[/bold red]")
|
|
148
|
+
for m in ["whois", "dns", "requests", "rich", "click"]:
|
|
149
|
+
lines.append(f"[white]{m}[/white] [green]OK[/green]")
|
|
153
150
|
lines.append("")
|
|
154
|
-
lines.append("[bold red]API
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
lines.append("[white]LeakCheck:[/white] [red]NOT SET[/red]")
|
|
158
|
-
lines.append("[white]Serper:[/white] [red]NOT SET[/red]")
|
|
159
|
-
lines.append("[white]Shodan:[/white] [red]NOT SET[/red]")
|
|
151
|
+
lines.append("[bold red]━━ API ━━[/bold red]")
|
|
152
|
+
for k in ["HIBP", "DeHashed", "LeakCheck", "Serper", "Shodan"]:
|
|
153
|
+
lines.append(f"[white]{k}[/white] [red]NO[/red]")
|
|
160
154
|
return Panel("\n".join(lines), title="[bold red]СТАТУС[/bold red]", border_style="red")
|
|
161
155
|
|
|
162
156
|
|
|
163
157
|
def render_output():
|
|
164
|
-
lines = ["[bold red]
|
|
158
|
+
lines = ["[bold red]━━ ПРОЦЕСС ━━[/bold red]"]
|
|
165
159
|
if OUTPUT_LOG:
|
|
166
160
|
lines.extend(OUTPUT_LOG[-10:])
|
|
167
161
|
else:
|
|
@@ -179,7 +173,11 @@ def render_input():
|
|
|
179
173
|
|
|
180
174
|
def render_footer():
|
|
181
175
|
return Panel(
|
|
182
|
-
Align.center(
|
|
176
|
+
Align.center(
|
|
177
|
+
"[bold red]milenium[/bold red] [white]@[/white] [red]VexxDev200[/red] "
|
|
178
|
+
"[white]|[/white] [green]SYSTEM READY[/green] "
|
|
179
|
+
"[white]|[/white] [red]Ctrl+C для выхода[/red]"
|
|
180
|
+
),
|
|
183
181
|
border_style="red",
|
|
184
182
|
)
|
|
185
183
|
|
|
@@ -196,10 +194,22 @@ def draw():
|
|
|
196
194
|
return layout
|
|
197
195
|
|
|
198
196
|
|
|
197
|
+
def _handle_builtin(cmd):
|
|
198
|
+
c = cmd.strip().lower()
|
|
199
|
+
if c == "help":
|
|
200
|
+
push_output("список команд — в левой панели")
|
|
201
|
+
return True
|
|
202
|
+
if c == "clear":
|
|
203
|
+
OUTPUT_LOG.clear()
|
|
204
|
+
push_output("вывод очищен")
|
|
205
|
+
return True
|
|
206
|
+
return False
|
|
207
|
+
|
|
208
|
+
|
|
199
209
|
def interactive():
|
|
200
210
|
console.clear()
|
|
201
211
|
push_output("сессия запущена")
|
|
202
|
-
push_output("введи 'help' для
|
|
212
|
+
push_output("введи 'help' для подсказки")
|
|
203
213
|
with Live(draw(), refresh_per_second=4) as live:
|
|
204
214
|
while True:
|
|
205
215
|
try:
|
|
@@ -216,6 +226,10 @@ def interactive():
|
|
|
216
226
|
SESSION["queries"] += 1
|
|
217
227
|
push_output(f"выполняю: {cmd}")
|
|
218
228
|
|
|
229
|
+
if _handle_builtin(cmd):
|
|
230
|
+
live.update(draw())
|
|
231
|
+
continue
|
|
232
|
+
|
|
219
233
|
from milenium.cli import main
|
|
220
234
|
args = shlex.split(cmd)
|
|
221
235
|
buf = io.StringIO()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|