anonymy – Textdateien anonymisieren und deanonymisieren
Kleines Python-Tool zum Anonymisieren von Textdateien – nützlich bevor man Scripts, Configs oder Logs in Foren postet, in ein öffentliches Repo eincheckt oder an den Support schickt.
Konzept
Eine Mapping-Datei definiert Paare aus echtem Wert und Platzhalter:
REAL=PSEUDO
anonymy ersetzt alle Vorkommen des echten Werts im Text durch den Platzhalter – und kann die Ersetzung auch rückgängig machen. Ersetzt wird nur an Wortgrenzen (keine versehentlichen Teilstring-Treffer).
Installation
Script nach ~/bin/ oder /usr/local/bin/ kopieren und ausführbar machen:
cp anonymy ~/bin/
chmod +x ~/bin/anonymy
Mapping-Dateien
Liegen unter ~/.config/anonymy/<salt>.map. Format: eine Zeile pro Paar, # für Kommentare.
Beispiel ~/.config/anonymy/backup.map:
backup.example.com=BACKUP_SERVER
u999999=STORAGE_USER
u999999.your-storagebox.de=STORAGE_HOST
admin@example.com=ADMIN_MAIL
meingeheimespasswort=RESTIC_PASS
192.168.10.42=NAS_IP
Kandidaten automatisch erkennen: scan
Bevor man die Map-Datei von Hand schreibt, kann anonymy scan die typischen Kandidaten selbst suchen – UPPERCASE-Variablen mit Werten, IP-Adressen und E-Mail-Adressen:
anonymy scan myscript.sh
Ausgabe:
4 Kandidat(en) gefunden → /home/user/.config/anonymy/myscript.sh.map
ADMIN_MAIL ← admin@example.com
BACKUP_SERVER ← backup.example.com
EMAIL ← monitoring@example.com
STORAGE_USER ← u999999
Die erzeugte .map-Datei dient als Rohfassung – prüfen, ggf. ergänzen, fertig.
Beispiel-Workflow
Ausgangssituation: dieses Script soll öffentlich geteilt werden:
#!/bin/bash
# Backup-Script
BACKUP_SERVER="backup.example.com"
STORAGE_USER="u999999"
STORAGE_HOST="u999999.your-storagebox.de"
ADMIN_MAIL="admin@example.com"
NAS_IP="192.168.10.42"
REPO="sftp:${STORAGE_USER}@${STORAGE_HOST}:backups/main"
restic -r "$REPO" backup /etc /home
echo "Backup abgeschlossen" | mail -s "Backup OK" "$ADMIN_MAIL"
Schritt 1: Kandidaten scannen
anonymy scan backup.sh
Schritt 2: Erzeugte Map-Datei prüfen und bei Bedarf ergänzen
nano ~/.config/anonymy/backup.sh.map
Schritt 3: Anonymisieren
anonymy backup.sh backup.sh -o backup.sh.anon
Ergebnis backup.sh.anon:
#!/bin/bash
# Backup-Script
BACKUP_SERVER="BACKUP_SERVER"
STORAGE_USER="STORAGE_USER"
STORAGE_HOST="STORAGE_HOST"
ADMIN_MAIL="ADMIN_MAIL"
NAS_IP="NAS_IP"
REPO="sftp:${STORAGE_USER}@${STORAGE_HOST}:backups/main"
restic -r "$REPO" backup /etc /home
echo "Backup abgeschlossen" | mail -s "Backup OK" "$ADMIN_MAIL"
Schritt 4: Deanonymisieren (z.B. nach Feedback aus dem Forum)
anonymy -r backup.sh backup.sh.anon -o backup.sh.restored
Optionen
| Option | Bedeutung |
|---|---|
scan <datei> |
Kandidaten suchen, Map-Rohfassung erzeugen |
<salt> <datei> |
Anonymisieren → stdout |
-o <ausgabe> |
Ergebnis in Datei schreiben |
-i |
In-place (Originaldatei überschreiben) |
-r |
Reverse: Deanonymisieren |
Hinweise
- Mapping-Dateien selbst nicht einchecken oder teilen – sie enthalten die echten Werte
- Bei Werten die Sonderzeichen enthalten (Leerzeichen, Schrägstriche) greift die Wortgrenze nicht immer zuverlässig – Ergebnis prüfen
- Der
scan-Modus erkennt keine Werte ohne Anführungszeichen außer bei bekannten Variablennamen (HOST,SERVER,DOMAINusw.) sowie IPs und E-Mails