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.
Files changed (49) hide show
  1. {milenium-0.5.2 → milenium-0.5.3}/PKG-INFO +1 -1
  2. {milenium-0.5.2 → milenium-0.5.3}/milenium/tui.py +73 -59
  3. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/PKG-INFO +1 -1
  4. {milenium-0.5.2 → milenium-0.5.3}/pyproject.toml +1 -1
  5. {milenium-0.5.2 → milenium-0.5.3}/README.md +0 -0
  6. {milenium-0.5.2 → milenium-0.5.3}/milenium/__init__.py +0 -0
  7. {milenium-0.5.2 → milenium-0.5.3}/milenium/cli.py +0 -0
  8. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/__init__.py +0 -0
  9. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/aggregator.py +0 -0
  10. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/breach.py +0 -0
  11. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/breach_local.py +0 -0
  12. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dehashed.py +0 -0
  13. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dns_history.py +0 -0
  14. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/domain.py +0 -0
  15. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/dorker.py +0 -0
  16. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/email.py +0 -0
  17. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/email_validator.py +0 -0
  18. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/exif_extractor.py +0 -0
  19. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/github_search.py +0 -0
  20. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/gravatar.py +0 -0
  21. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/hibp.py +0 -0
  22. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/instagram_osint.py +0 -0
  23. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip.py +0 -0
  24. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip_geo_advanced.py +0 -0
  25. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/ip_reputation.py +0 -0
  26. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/leakcheck.py +0 -0
  27. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/logger.py +0 -0
  28. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/password_pattern.py +0 -0
  29. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/permutator.py +0 -0
  30. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/pgp_lookup.py +0 -0
  31. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/phone.py +0 -0
  32. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/pwned_passwords.py +0 -0
  33. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/report.py +0 -0
  34. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/reverse_whois.py +0 -0
  35. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/shodan_lite.py +0 -0
  36. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/social.py +0 -0
  37. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/telegram_osint.py +0 -0
  38. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/tg_parser.py +0 -0
  39. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/twitter_osint.py +0 -0
  40. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/username.py +0 -0
  41. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/vk_osint.py +0 -0
  42. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/wayback.py +0 -0
  43. {milenium-0.5.2 → milenium-0.5.3}/milenium/modules/wifi_geolocation.py +0 -0
  44. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/SOURCES.txt +0 -0
  45. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/dependency_links.txt +0 -0
  46. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/entry_points.txt +0 -0
  47. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/requires.txt +0 -0
  48. {milenium-0.5.2 → milenium-0.5.3}/milenium.egg-info/top_level.txt +0 -0
  49. {milenium-0.5.2 → milenium-0.5.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: milenium
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: OSINT / dox / deanon toolkit
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown
@@ -14,56 +14,45 @@ from rich.prompt import Prompt
14
14
 
15
15
  console = Console()
16
16
 
17
- ASCII_LOGO = r"""
18
- [bold red]
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 <ник> [--permutations N] [--dorks]", "Глубокий поиск по нику + вариации + Google Dorks"),
28
+ ("user <ник>", "Поиск по соцсетям + вариации + Dorks"),
39
29
  ("social_cmd <ник>", "Поиск соцсетей по нику"),
40
- ("email_check <email>", "SMTP + Gravatar + PGP + GitHub по email"),
30
+ ("email_check <email>", "SMTP + Gravatar + PGP + GitHub"),
41
31
  ("mail <email>", "MX, HIBP, Gravatar"),
42
32
  ("phone_cmd <номер>", "Оператор, страна, часовой пояс"),
43
- ("telegram <канал>", "Парсинг публичного Telegram-канала"),
33
+ ("telegram <канал>", "Парсинг публичного TG-канала"),
44
34
  ],
45
35
  "УТЕЧКИ И ПАРОЛИ": [
46
- ("pwned <пароль>", "Проверка пароля в утечках (бесплатно)"),
36
+ ("pwned <пароль>", "Проверка пароля в утечках"),
47
37
  ("leaks <email>", "HIBP утечки"),
48
- ("pwgen [--name N] [--surname S] [--year Y] [--nick N]", "Генератор вероятных паролей"),
49
- ("full [--email E] [--username U] [--phone P] [--password PW]", "Агрегатор всех модулей"),
38
+ ("pwgen --name N --year Y", "Генератор паролей"),
39
+ ("full --email E --username U", "Агрегатор всех модулей"),
50
40
  ],
51
41
  "СЕТЬ И ДОМЕНЫ": [
52
- ("ip_cmd <IP>", "Гео, ASN, reverse DNS, Shodan, репутация"),
53
- ("dom <домен>", "WHOIS, DNS, subdomains, crt.sh"),
42
+ ("ip_cmd <IP>", "Гео, ASN, Shodan, репутация"),
43
+ ("dom <домен>", "WHOIS, DNS, crt.sh"),
54
44
  ("whois_rev <домен>", "Reverse WHOIS"),
55
- ("ssl_info <host>", "SSL-сертификат: издатель, даты, SAN"),
45
+ ("ssl_info <host>", "SSL-сертификат"),
56
46
  ("robots <домен>", "robots.txt + sitemap"),
57
- ("subdomains <домен>", "Перебор поддоменов"),
58
47
  ],
59
- "ФАЙЛЫ И МЕТАДАННЫЕ": [
48
+ "ФАЙЛЫ": [
60
49
  ("exif <path>", "EXIF/GPS из фото"),
61
- ("pdf_meta <path>", "Метаданные PDF"),
62
- ("eml <path>", "Анализ заголовков письма"),
50
+ ("eml <path>", "Заголовки письма"),
63
51
  ("wayback <url>", "Wayback Machine"),
64
52
  ],
65
53
  "ИНТЕРФЕЙС": [
66
- ("tui", "Этот интерфейс"),
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"]) > 15:
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=3),
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=2),
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
- logo = Text.from_markup(ASCII_LOGO)
116
- banner = Text.from_markup(BANNER)
117
- return Panel(Align.center(logo + banner), border_style="red", title="[bold red]MILENIUM[/bold red]", subtitle="[red]v0.5.2[/red]")
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(f"[white]{cmd}[/white]", f"[red]{desc}[/red]")
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] [red]{mins:02d}:{secs:02d}[/red]")
136
- lines.append(f"[white]Запросов:[/white] [red]{SESSION['queries']}[/red]")
137
- lines.append(f"[white]Найдено:[/white] [red]{SESSION['results']}[/red]")
138
- lines.append(f"[white]База:[/white] [red]{'LOADED' if SESSION['db_loaded'] else 'NOT LOADED'}[/red]")
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]=== ПОСЛЕДНИЕ РЕЗУЛЬТАТЫ ===[/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]МОДУЛИ:[/bold red]")
151
- for m in ["whois", "dns", "requests", "rich", "click", "phonenumbers", "bs4"]:
152
- lines.append(f"[white]{m}:[/white] [green]OK[/green]")
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-КЛЮЧИ:[/bold red]")
155
- lines.append("[white]HIBP:[/white] [red]NOT SET[/red]")
156
- lines.append("[white]DeHashed:[/white] [red]NOT SET[/red]")
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]=== ПРОЦЕСС ===[/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("[bold red]milenium[/bold red] [white]@[/white] [red]VexxDev200[/red] [white]|[/white] [green]SYSTEM READY[/green] [white]|[/white] [red]ESC/Ctrl+C для выхода[/red]"),
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()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: milenium
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: OSINT / dox / deanon toolkit
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "milenium"
3
- version = "0.5.2"
3
+ version = "0.5.3"
4
4
  description = "OSINT / dox / deanon toolkit"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.9"
File without changes
File without changes
File without changes
File without changes