Abgleich mit dem Vault-Stand 5c997a2
4 Datei(en) geändert. Erzeugt von .vault-tools/auto-push/werkzeuge_spiegel.py.
This commit is contained in:
1 parent
dd5e612452
commit
e4963eebe2
4 files changed
+159
-2
No files matched your search
@@ -0,0 +1,43 @@
|
||||
"""Zählt in einer Textdatei Muster für Zugangsdaten, Firmennamen, Adressen und Mailadressen.
|
||||
|
||||
Ersteller: Claude (Opus 5.5) · Erstellt: 2026-10-15 · Doku: LIESMICH.md
|
||||
|
||||
Gibt je Muster die Zahl der Treffer und die verschiedenen Treffer aus; Werte, die
|
||||
wie Geheimnisse aussehen, nur als Länge. Aufruf: python -I -X utf8 datei_scan.py <datei>
|
||||
"""
|
||||
import re
|
||||
import sys
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
|
||||
text = Path(sys.argv[1]).read_text(encoding="utf-8", errors="replace")
|
||||
|
||||
# Muster, deren Treffer nur gezählt und als Länge gezeigt werden
|
||||
GEHEIM = {
|
||||
"schluesselwort_mit_wert": r"(?i)\b(pass(?:wor[dt])?|kennwort|pwd|token|secret|api[_-]?key|client[_-]?secret|bearer)\b\s*[:=]\s*['\"]?([^\s'\",;]{6,})",
|
||||
"private_key_block": r"-----BEGIN [A-Z ]*PRIVATE KEY-----",
|
||||
"lange_hex_oder_base64": r"\b[A-Za-z0-9+/]{40,}={0,2}\b",
|
||||
}
|
||||
# Muster, deren Treffer im Klartext gezeigt werden (Analyse, nicht für Ablage)
|
||||
OFFEN = {
|
||||
"firma": r"\b[A-ZÄÖÜ][\w&.-]*(?:\s+[A-ZÄÖÜ][\w&.-]*){0,3}\s+(?:GmbH|AG|KG|SE|e\.V\.|UG|Inc\.?|Ltd\.?)\b",
|
||||
"mail": r"\b[\w.+-]+@[\w-]+(?:\.[\w-]+)+\b",
|
||||
"ipv4": r"\b(?:\d{1,3}\.){3}\d{1,3}\b",
|
||||
"guid": r"\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\b",
|
||||
"domain": r"\bhttps?://([\w.-]+)",
|
||||
"unc_pfad": r"\\\\[\w.-]+\\[\w$.-]+",
|
||||
}
|
||||
|
||||
print(f"Datei: {len(text)} Zeichen, {text.count(chr(10))} Zeilen")
|
||||
for name, muster in GEHEIM.items():
|
||||
treffer = re.findall(muster, text)
|
||||
werte = [t[-1] if isinstance(t, tuple) else t for t in treffer]
|
||||
print(f"[geheim] {name}: {len(werte)} Treffer, Längen {sorted(Counter(len(w) for w in werte).items())[:15]}")
|
||||
if name == "schluesselwort_mit_wert":
|
||||
for schluessel, n in Counter(t[0].lower() for t in treffer).most_common():
|
||||
print(f" Schlüssel {schluessel!r}: {n}")
|
||||
for name, muster in OFFEN.items():
|
||||
zaehl = Counter(re.findall(muster, text))
|
||||
print(f"[offen] {name}: {sum(zaehl.values())} Treffer, {len(zaehl)} verschieden")
|
||||
for wert, n in zaehl.most_common(40):
|
||||
print(f" {n:4d} {wert}")
|
||||
Reference in new issue
Block a user