Ein Wiki privater Natur

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