milenium 1.0.2__tar.gz → 1.0.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-1.0.2 → milenium-1.0.3}/PKG-INFO +1 -1
- milenium-1.0.3/milenium/modules/config.py +84 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/PKG-INFO +1 -1
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/SOURCES.txt +1 -0
- {milenium-1.0.2 → milenium-1.0.3}/pyproject.toml +1 -1
- {milenium-1.0.2 → milenium-1.0.3}/README.md +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/__init__.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/cli.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/__init__.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/abuseipdb_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/aggregator.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/breach.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/breach_local.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/censys_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/dehashed.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/dns_history.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/domain.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/dorker.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/email.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/email_validator.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/exif_extractor.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/github_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/gravatar.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/hibp.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/holehe_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/image_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/instagram_osint.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/ip.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/ip_geo_advanced.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/ip_reputation.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/ipinfo_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/leakcheck.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/logger.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/maigret_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/neon_db.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/password_pattern.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/permutator.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/pgp_lookup.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/phone.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/pwned_passwords.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/report.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/reverse_whois.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/sherlock_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/shodan_lite.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/shodan_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/social.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/telegram_analysis.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/telegram_osint.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/tg_parser.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/twitter_osint.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/urlscan_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/username.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/virustotal_search.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/vk_osint.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/wayback.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/modules/wifi_geolocation.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium/tui.py +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/dependency_links.txt +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/entry_points.txt +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/requires.txt +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/milenium.egg-info/top_level.txt +0 -0
- {milenium-1.0.2 → milenium-1.0.3}/setup.cfg +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import json
|
|
3
|
+
import base64
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
CONFIG_DIR = Path.home() / ".milenium"
|
|
7
|
+
CONFIG_FILE = CONFIG_DIR / "config.json"
|
|
8
|
+
|
|
9
|
+
# Твои дефолтные значения — вшиты в код.
|
|
10
|
+
# Чтобы не палить в открытом виде, они закодированы base64.
|
|
11
|
+
# Раскодируй свои и замени строки ниже.
|
|
12
|
+
DEFAULT_DATABASE_URL = base64.b64decode(
|
|
13
|
+
"cG9zdGdyZXNxbDovL25lb25kYl9vd25lcjpucGdfSk5Bam5UYXowVUs1QGVwLXR3aWxpZ2h0LWJhci1iMW9mZHlvdC1wb29sZXIuYy01LmV1LWNlbnRyYWwtMS5hd3MubmVvbi50ZWNoL25lb25kYj9zc2xtb2RlPXJlcXVpcmUmY2hhbm5lbF9iaW5kaW5nPXJlcXVpcmU="
|
|
14
|
+
).decode()
|
|
15
|
+
|
|
16
|
+
DEFAULTS = {
|
|
17
|
+
"DATABASE_URL": DEFAULT_DATABASE_URL,
|
|
18
|
+
"SHODAN_API_KEY": "",
|
|
19
|
+
"CENSYS_TOKEN": "",
|
|
20
|
+
"VIRUSTOTAL_API_KEY": "",
|
|
21
|
+
"ABUSEIPDB_KEY": "",
|
|
22
|
+
"IPINFO_TOKEN": "",
|
|
23
|
+
"URLSCAN_API_KEY": "",
|
|
24
|
+
"TG_API_ID": "",
|
|
25
|
+
"TG_API_HASH": "",
|
|
26
|
+
"SERPER_API_KEY": "",
|
|
27
|
+
"HIBP_KEY": "",
|
|
28
|
+
"DEHASHED_EMAIL": "",
|
|
29
|
+
"DEHASHED_KEY": "",
|
|
30
|
+
"LEAKCHECK_KEY": "",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def ensure_config():
|
|
35
|
+
"""Создаёт конфиг, если его нет. Возвращает словарь."""
|
|
36
|
+
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
|
37
|
+
if not CONFIG_FILE.exists():
|
|
38
|
+
CONFIG_FILE.write_text(json.dumps(DEFAULTS, indent=2, ensure_ascii=False), encoding="utf-8")
|
|
39
|
+
return dict(DEFAULTS)
|
|
40
|
+
try:
|
|
41
|
+
data = json.loads(CONFIG_FILE.read_text(encoding="utf-8"))
|
|
42
|
+
except Exception:
|
|
43
|
+
data = {}
|
|
44
|
+
# Дополняем недостающие ключи
|
|
45
|
+
for k, v in DEFAULTS.items():
|
|
46
|
+
data.setdefault(k, v)
|
|
47
|
+
return data
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def get(key, default=""):
|
|
51
|
+
cfg = ensure_config()
|
|
52
|
+
return cfg.get(key, default) or os.environ.get(key, default)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def set_key(key, value):
|
|
56
|
+
cfg = ensure_config()
|
|
57
|
+
cfg[key] = value
|
|
58
|
+
CONFIG_FILE.write_text(json.dumps(cfg, indent=2, ensure_ascii=False), encoding="utf-8")
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def set_many(pairs: dict):
|
|
62
|
+
cfg = ensure_config()
|
|
63
|
+
cfg.update(pairs)
|
|
64
|
+
CONFIG_FILE.write_text(json.dumps(cfg, indent=2, ensure_ascii=False), encoding="utf-8")
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def all_keys():
|
|
68
|
+
return ensure_config()
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def config_path():
|
|
72
|
+
return str(CONFIG_FILE)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def apply_to_env():
|
|
76
|
+
"""Прокидывает конфиг в os.environ, чтобы модули через os.environ.get() его видели."""
|
|
77
|
+
cfg = ensure_config()
|
|
78
|
+
for k, v in cfg.items():
|
|
79
|
+
if v and not os.environ.get(k):
|
|
80
|
+
os.environ[k] = str(v)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def is_first_run():
|
|
84
|
+
return not CONFIG_FILE.exists()
|
|
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
|
|
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
|