Anonymisierungstool für SVWS Datenbanken (Anonymization tool for SVWS databases)
SVWS-Anonym ist ein Tool zur Anonymisierung personenbezogener Daten in SVWS-Datenbankexporten. Es ersetzt echte Namen durch zufällig generierte deutsche Namen aus dem JSON-Namen Repository.
SVWS-Anonym is a tool for anonymizing personal data in SVWS database exports. It replaces real names with randomly generated German names from the JSON-Namen repository.
Version mit erweiterten Anonymisierungsfunktionen:
- ✅ Benutzergruppen-Anonymisierung mit geschützten Werten (Administrator, Schulleitung, Lehrer, Sekretariat)
- ✅ Telefonabschnitt-Anonymisierung in Schueler-Tabelle (Telefon und Fax Felder)
- ✅ SchuelerEinzelleistungen-Bemerkung-Anonymisierung
- ✅ Schueler_AllgAdr Ausbilder-Anonymisierung
- ✅ SchuelerBKAbschluss ThemaAbschlussarbeit-Anonymisierung
- ✅ SchuelerListe Erzeuger-Aktualisierung (auf ID=1 für Admin-Benutzer)
Extended anonymization functions including Benutzergruppen with protected values, phone number anonymization in Schueler table, SchuelerEinzelleistungen remarks anonymization, and SchuelerListe creator field update.
- Anonymisierung von Vornamen (First name anonymization)
- Anonymisierung von Nachnamen (Last name anonymization)
- Geschlechtsspezifische Vornamen (Gender-specific first names)
- Konsistente Zuordnung (Consistent mapping across multiple occurrences)
- Verwendung authentischer deutscher Namen (Uses authentic German names)
- Randomisierung von Geburtsdaten (Tag bleibt im gleichen Monat/Jahr)
- Generierung von IdentNr1 aus Geburtsdatum und Geschlecht
- E-Mail- und Telefonnummer-Generierung
- Adressdaten-Integration aus CSV-Dateien
- Schulinformations-Anonymisierung mit spezifischen Werten
- Teilstandort-Anonymisierung (setzt einen Hauptstandort-Eintrag)
- Abteilungs-Anonymisierung (EigeneSchule_Abteilungen Email/Durchwahl/Raum)
- SMTP-Konfigurations-Anonymisierung
- Logo-Ersetzung aus PNG-Datei mit Base64-Kodierung
- EigeneSchule_Texte-Löschung (vollständige Bereinigung)
- Benutzergruppen-Anonymisierung (Bezeichnung zu "Bezeichnung " + ID, schützt Standard-Werte)
- K_TelefonArt-Anonymisierung (Bezeichnung zu "Telefonart " + ID, schützt Standard-Werte)
- K_Kindergarten-Anonymisierung (Bezeichnung, PLZ/Ort aus K_Ort, Straßennamen, Kontaktfelder)
- K_Datenschutz-Anonymisierung (Bezeichnung zu "Bezeichnung " + ID, schützt "Verwendung Foto")
- K_ErzieherArt-Anonymisierung (Bezeichnung zu "Erzieherart " + ID, schützt Standard-Werte)
- K_EntlassGrund-Anonymisierung (Bezeichnung zu "Entlassgrund " + ID, schützt Standard-Werte)
- K_FahrschuelerArt-Anonymisierung (Bezeichnung zu "Fahrschülerart " + ID)
- K_Haltestelle-Anonymisierung (Bezeichnung zu "Haltestelle " + ID)
- K_Vermerkart-Anonymisierung (Bezeichnung zu "Vermerk " + ID)
- K_Schulfunktionen-Anonymisierung (Bezeichnung zu "Schulfunktion " + ID, schützt "Schulleitung")
- Personengruppen-Anonymisierung (Gruppenname, Zusatzinfo, SammelEmail)
- SchuleCredentials-Reset (generiert neue RSA 2048-bit Schlüsselpaare und AES 256-bit Schlüssel)
- Lernplattformen-Anonymisierung (Bezeichnung und Konfiguration)
- Lernplattform-Anmeldedaten-Anonymisierung (Lehrer und Schüler mit Initialkennwort und Sicherheitsfeld-Bereinigung)
- Lehrerabschnittsdaten-Anonymisierung
- Schülervermerke-Löschung (vollständige Bereinigung)
- SchuelerErzAdr-Anonymisierung (Eltern-/Erzieherdaten)
- SchuelerTelefone-Anonymisierung (Schülertelefonummern)
- SchuelerLD_PSFachBem-Anonymisierung (Fachbereichsbemerkungen clearing)
- SchuelerLeistungsdaten-Anonymisierung (Lernentwicklung clearing)
- Schueler-Transportfelder-Bereinigung (setzt Idext/Fahrschueler_ID/Haltestelle_ID auf NULL)
- Schueler-Änderungsmarker (setzt ModifiziertVon auf "Admin")
- SchuelerGSDaten-Bereinigung (setzt Anrede_Klassenlehrer, Nachname_Klassenlehrer, GS_Klasse auf NULL)
- Schueler LSSchulNr-Aktualisierung (Bereich 100000-199999 mit SchulformKrz-Matching)
- Schueler LSSchulNr-Aktualisierung (Bereich 200000-299999 mit Bereichsfilterung)
- Schueler SchulwechselNr-Aktualisierung (random K_Schule.SchulNr Ersetzung)
- Schueler LSBemerkung-Bereinigung (setzt auf NULL)
- SchuelerAbgaenge-Löschung (vollständige Bereinigung)
- Personengruppen_Personen-Löschung (vollständige Bereinigung)
- K_AllgAdresse-Anonymisierung (allgemeine Adressen mit Namen, Adressen, Kontaktdaten)
- Schueler_AllgAdr Ausbilder-Anonymisierung (Ausbildername mit zufälligen Nachnamen ersetzen)
- SchuelerBKAbschluss ThemaAbschlussarbeit-Anonymisierung (Thema mit standardisiertem Text ersetzen)
- SchuelerEinzelleistungen Bemerkung-Anonymisierung (Bemerkung mit standardisiertem Text ersetzen)
- SchuelerFotos-Löschung (vollständige Bereinigung)
- SchuelerFoerderempfehlungen-Löschung (vollständige Bereinigung)
- LehrerFotos-Löschung (vollständige Bereinigung)
- K_Lehrer-SerNr-Anonymisierung (setzt "SerNr" auf ddddX)
- K_Lehrer-PANr-Anonymisierung (setzt "PANr" auf PA + 7 Ziffern)
- K_Lehrer-LBVNr-Anonymisierung (setzt "LBVNr" auf LB + 7 Ziffern)
- K_Lehrer-Titel-Bereinigung (setzt "Titel" auf NULL)
- Allgemeine Verwaltungs-Bereinigung (löscht Einträge aus: Schild_Verwaltung, Client_Konfiguration_Global, Client_Konfiguration_Benutzer, Wiedervorlage, ZuordnungReportvorlagen, BenutzerEmail, ImpExp_EigeneImporte, ImpExp_EigeneImporte_Felder, ImpExp_EigeneImporte_Tabellen, SchuleOAuthSecrets, Logins, TextExportVorlagen; setzt Admin-Benutzer in Benutzer, BenutzerAllgemein, Credentials zurück)
Features include: name anonymization, gender-specific first names, consistent mapping, authentic German names, birthdate randomization, IdentNr1 generation, email/phone generation, CSV address integration, school information anonymization, SMTP configuration, logo replacement from PNG files, K_TelefonArt anonymization with protected standard values, K_Kindergarten anonymization with designation formatting and random addresses, learning platform credentials for teachers and students, teacher section data anonymization, teacher SerNr anonymization (sets to ddddX), teacher PANr anonymization (sets to PA + 7 digits), teacher LBVNr anonymization (sets to LB + 7 digits), complete deletion of student notes, parent/guardian data anonymization, SchuelerGSDaten field clearing (Anrede_Klassenlehrer, Nachname_Klassenlehrer, GS_Klasse), SchuelerFoerderempfehlungen deletion, general address anonymization with names, addresses, and contact information, and general administrative tables cleanup (deletes entries from Schil_Verwaltung, Client_Konfiguration_Global, Client_Konfiguration_Benutzer, Wiedervorlage, ZuordnungenReportvorlagen, BenutzerEmail, ImpExp_EigeneImporte tables, SchuleOAuthSecrets, Logins, and TextExportVorlagen).
- Python 3.6 oder höher
- MariaDB Server (für Datenbankverbindung)
mysql-connector-python(für Datenbankoperationen):pip install mysql-connector-pythoncryptography(für RSA/AES Schlüsselgenerierung):pip install cryptography
Python 3.6 or higher required. MariaDB server (for database connection). mysql-connector-python for database operations: pip install mysql-connector-python. cryptography for RSA/AES key generation: pip install cryptography
- Repository klonen:
git clone https://github.com/FPfotenhauer/SVWS-Anonym.git
cd SVWS-Anonym- Python-Abhängigkeiten installieren:
pip install mysql-connector-python cryptography
``` install mysql-connector-python- Konfigurationsdatei erstellen:
cp config.example.json config.jsonconfig.jsonbearbeiten und die Datenbankverbindungsparameter anpassen:
{
"database": {
"host": "localhost",
"port": 3306,
"database": null,
"username": null,
"password": null,
"charset": "utf8mb4",
"collation": "utf8mb4_unicode_ci"
}
}Hinweis: Wenn database, username und password auf null gesetzt sind (oder fehlen), werden diese Werte beim Programmstart interaktiv abgefragt. Sie können diese Werte auch direkt in der Konfigurationsdatei setzen für automatisierte Ausführung ohne Eingabeaufforderungen.
Note: If database, username and password are set to null (or omitted), these values are prompted interactively at program startup. You can also set these values directly in the configuration file for automated execution without prompts.
- Das Skript ausführbar machen (optional):
chmod +x svws_anonym.pypython svws_anonym.py --helppython svws_anonym.py --dry-runZeigt Beispiel-Anonymisierungen an, ohne die Datenbank zu ändern.
Shows example anonymizations without modifying the database.
python svws_anonym.py --anonymizeVerbindet sich mit der Datenbank und anonymisiert folgende Tabellen:
EigeneSchule Tabelle:
SchulNrwird auf "123456" gesetztBezeichnung1wird auf "Städtische Schule" gesetztBezeichnung2wird auf "am Stadtgarten" gesetztBezeichnung3wird auf "Ganztagsschule des Landes NRW" gesetzt- Adresse: Hauptstrasse 56, 42107 Wuppertal
- Kontaktdaten: Telefon, Fax, E-Mail, Webseite werden anonymisiert
EigeneSchule_Email Tabelle:
- SMTP-Konfiguration wird standardisiert (Port 25, StartTLS aktiviert, TLS deaktiviert)
DomainundSMTPServerwerden auf NULL/leer gesetzt
EigeneSchule_Teilstandorte Tabelle:
- Alle vorhandenen Einträge werden gelöscht und ein Eintrag wird gesetzt mit:
AdrMerkmal=A,PLZ=42103,Ort=Wuppertal,Strassenname=Hauptstrasse,HausNr=56,HausNrZusatz=NULL,Bemerkung=Hauptstandort,Kuerzel=WtalA
EigeneSchule_Abteilungen Tabelle:
Emailwird auf "abteilung@schule.example.com" gesetztDurchwahlwird auf NULL gesetztRaumwird auf NULL gesetzt
EigeneSchule_Logo Tabelle:
- Logo wird durch ein standardisiertes Base64-kodiertes Bild ersetzt
EigeneSchule_Texte Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
Benutzergruppen Tabelle:
Bezeichnungwird auf "Bezeichnung " + ID gesetzt (z.B. "Bezeichnung 1", "Bezeichnung 5")- Geschützte Werte werden NICHT geändert: Administrator, Schulleitung, Lehrer, Sekretariat
K_TelefonArt Tabelle:
Bezeichnungwird auf "Telefonart " + ID gesetzt (z.B. "Telefonart 5", "Telefonart 22")- Geschützte Werte werden NICHT geändert: Eltern, Mutter, Vater, Notfallnummer, Festnetz, Handynummer, Mobilnummer, Großeltern
K_Kindergarten Tabelle:
Bezeichnungwird auf "Kindergarten " + ID gesetzt (z.B. "Kindergarten 1", "Kindergarten 2")PLZwird durch eine zufällige PLZ aus K_Ort ersetztOrtwird durch eine zufällige Ortsbezeichnung (K_Ort.Bezeichnung) ersetztStrassennamewird durch einen zufälligen Straßennamen aus Strassen.csv ersetzt- Bereinigung:
HausNrZusatz,Tel,Email,Bemerkung← NULL
K_Datenschutz Tabelle:
Bezeichnungwird auf "Bezeichnung " + ID gesetzt (z.B. "Bezeichnung 1", "Bezeichnung 3")- Geschützte Werte werden NICHT geändert: "Verwendung Foto"
K_ErzieherArt Tabelle:
Bezeichnungwird auf "Erzieherart " + ID gesetzt (z.B. "Erzieherart 1", "Erzieherart 5")- Geschützte Werte werden NICHT geändert: Vater, Mutter, Schüler ist volljährig, Schülerin ist volljährig, Eltern, Sonstige
K_EntlassGrund Tabelle:
Bezeichnungwird auf "Entlassgrund " + ID gesetzt (z.B. "Entlassgrund 1", "Entlassgrund 5")- Geschützte Werte werden NICHT geändert: Schulpflicht endet, Normaler Abschluss, Ohne Angabe, Wechsel zu anderer Schule
K_FahrschuelerArt Tabelle:
Bezeichnungwird auf "Fahrschülerart " + ID gesetzt (z.B. "Fahrschülerart 1", "Fahrschülerart 2")
K_Haltestelle Tabelle:
Bezeichnungwird auf "Haltestelle " + ID gesetzt (z.B. "Haltestelle 1", "Haltestelle 5")
K_Vermerkart Tabelle:
Bezeichnungwird auf "Vermerk " + ID gesetzt (z.B. "Vermerk 1", "Vermerk 3")
K_Schulfunktionen Tabelle:
Bezeichnungwird auf "Schulfunktion " + ID gesetzt (z.B. "Schulfunktion 1", "Schulfunktion 5")- Geschützte Werte werden NICHT geändert: Schulleitung
Personengruppen Tabelle:
Gruppennamewird auf "Gruppe " + ID gesetzt (z.B. "Gruppe 1", "Gruppe 2")Zusatzinfowird auf "Info" gesetztSammelEmailwird auf "gruppe" + ID + "@gruppe.example.com" gesetzt (z.B. "gruppe1@gruppe.example.com")
SchuleCredentials Tabelle:
- Alle Einträge werden gelöscht
- Neuer Eintrag wird erstellt mit
SchulnummerausEigeneSchule.SchulNr RSAPublicKey: Neu generierter RSA 2048-bit öffentlicher Schlüssel (PEM-Format)RSAPrivateKey: Neu generierter RSA 2048-bit privater Schlüssel (PEM-Format)AES: Neu generierter AES 256-bit Schlüssel (Base64-kodiert)
K_Lehrer Tabelle:
Vornamewird durch einen zufälligen Vornamen ersetzt (geschlechtsspezifisch basierend auf demGeschlechtFeld)Nachnamewird durch einen zufälligen Nachnamen ersetztTitelwird auf NULL gesetztKuerzelwird aus den ersten Buchstaben von Vorname und Nachname generiertEmailundEmailDienstlichwerden mit neuen Namen generiert (@schule.nrw.de)TelundHandywerden mit zufälligen Telefonnummern ersetztGeburtsdatumwird randomisiert (Tag wird zufällig geändert, Monat und Jahr bleiben erhalten)IdentNr1wird aus Geburtsdatum (TTMMJJ) und Geschlecht generiert (z.B. "1008703")SerNrwird auf eine zufällige vierstellige Zahl gefolgt von 'X' gesetzt (z. B. 0123X)PANrwird auf "PA" gefolgt von einer zufälligen siebenstelligen Zahl gesetzt (z. B. PA0123456)LBVNrwird auf "LB" gefolgt von einer zufälligen siebenstelligen Zahl gesetzt (z. B. LB0123456)LIDKrzwird als eindeutiges, maximal 4-stelliges Kürzel generiert (Duplikate werden vermieden)- Adressdaten (
Ort_ID,Strassenname,HausNr,HausNrZusatz) werden aus CSV-Daten zugewiesen
CredentialsLernplattformen Tabelle (Lehrer):
Benutzernamewird auf Format "Vorname.Nachname" gesetzt (basierend auf K_Lehrer Namen via LehrerLernplattform)- Duplikate werden mit numerischen Suffixen behandelt (Name, Name1, Name2, etc.)
Initialkennwortwird auf eine zufällige 8-stellige Ziffernfolge gesetztPashwordHashwird auf NULL gesetztRSAPublicKeywird auf NULL gesetztRSAPrivateKeywird auf NULL gesetztAESwird auf NULL gesetzt
CredentialsLernplattformen Tabelle (Schüler):
Benutzernamewird auf Format "Vorname.Name" gesetzt (basierend auf Schueler Namen via SchuelerLernplattform)- Duplikate werden mit numerischen Suffixen behandelt (Name, Name1, Name2, etc.)
Initialkennwortwird auf eine zufällige 8-stellige Ziffernfolge gesetztPashwordHashwird auf NULL gesetztRSAPublicKeywird auf NULL gesetztRSAPrivateKeywird auf NULL gesetztAESwird auf NULL gesetzt
LehrerAbschnittsdaten Tabelle:
StammschulNrwird auf "123456" gesetzt
LehrerFotos Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
Lernplattformen Tabelle:
Bezeichnungwird auf "Lernplattform" + ID gesetzt (z.B. "Lernplattform1")Konfigurationwird auf NULL gesetzt (wenn nicht bereits NULL)
SchuelerVermerke Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
SchuelerErzAdr Tabelle:
Name1undName2werden – sofern nicht NULL – auf den Wert ausSchueler.NamegesetztVorname1undVorname2werden geschlechtsabhängig aus den Namenslisten gesetzt (Herr→ männlich,Frau→ weiblich); beiErzieherArt_ID∈ {3, 4} wirdSchueler.Vornameübernommen- Adressen:
ErzOrt_ID←Schueler.Ort_ID,ErzOrtsteil_ID← NULL,ErzStrassenname← "Teststrasse" (wenn vorher nicht NULL),ErzHausNr← Zufallszahl 1–100 (wenn vorher nicht NULL) ErzEmail←Name1@e.example.com(wennName1nicht NULL, sonst NULL)- Bereinigung:
ErzEmail2,Erz1StaatKrz,Erz2StaatKrz,ErzAdrZusatz← NULL Bemerkungen← NULL
Schueler Tabelle:
Vornamewird durch einen zufälligen Vornamen ersetzt (geschlechtsspezifisch)Namewird durch einen zufälligen Nachnamen ersetztGeburtsdatumwird randomisiert (Tag wird zufällig geändert, Monat und Jahr bleiben erhalten)Geburtsortwird auf "Testort" gesetzt (wenn nicht NULL, sonst NULL)Telefonwird auf "012345-" + 6 zufällige Ziffern gesetzt (wenn nicht NULL, z.B. "012345-123456")Faxwird auf "012345-" + 6 zufällige Ziffern gesetzt (wenn nicht NULL, z.B. "012345-654321")- Adressdaten (
Ort_ID,Strassenname,HausNr) werden aus CSV-Daten zugewiesen - Transportfelder:
Idext← NULL,Fahrschueler_ID← NULL,Haltestelle_ID← NULL - Änderungsmarker:
ModifiziertVon← "Admin"
K_AllgAdresse Tabelle:
AllgAdrName1wird auf zwei zufällige Nachnamen kombiniert wie "Name1 und Name2" gesetztAllgAdrName2,AllgAdrHausNrZusatz,AllgOrtsteil_ID← NULLAllgAdrStrassennamewird auf einen zufälligen Straßennamen aus CSV-Daten gesetztAllgAdrHausNrwird auf eine Zufallszahl zwischen 1 und 100 gesetztAllgAdrOrt_IDwird auf eine zufällig existierende Ort-ID aus K_Ort gesetztAllgAdrTelefon1wird auf "01234-" + 6 zufällige Ziffern gesetzt (z.B. "01234-567890")AllgAdrTelefon2,AllgAdrFax← NULLAllgAdrEmailwird aufAllgAdrName1ohne Leerzeichen + "@betrieb.example.com" gesetzt (z.B. "MuellerundSchmidt@betrieb.example.com")AllgAdrBemerkungen,AllgAdrZusatz1,AllgAdrZusatz2← NULL
AllgAdrAnsprechpartner Tabelle:
Namewird durch einen zufälligen Nachnamen ersetztVornamewird durch einen zufälligen Vornamen ersetztEmailwird aufName@betrieb.example.comgesetzt (z.B. "Mueller@betrieb.example.com")Titel← NULLTelefonwird auf "01234-" + 6 zufällige Ziffern gesetzt (z.B. "01234-123456")
SchuelerTelefone Tabelle:
Telefonnummerwird auf "012345-" + 6 zufällige Ziffern gesetzt (z.B. "012345-123456")Bemerkung← NULL
SchuelerLD_PSFachBem Tabelle:
ASV← NULLLELS← NULLAUE← NULLESF← NULLBemerkungFSP← NULLBemerkungVersetzung← NULL
SchuelerLeistungsdaten Tabelle:
Lernentw← NULL
SchuelerFotos Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
SchuelerFoerderempfehlungen Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
Schueler LSSchulNr Tabelle (Bereich 100000-199999):
LSSchulNrwird durch eine zufällige SchulNr aus K_Schule ersetzt, die den gleichenSchulformKrzhat wieLSSchulformSIM- Schüler ohne passendes SchulformKrz werden übersprungen
Schueler LSSchulNr Tabelle (Bereich 200000-299999):
LSSchulNrwird durch eine zufällige SchulNr aus K_Schule ersetzt, die auch im Bereich 200000-299999 liegt
Schueler SchulwechselNr Tabelle:
SchulwechselNrwird durch eine zufällige SchulNr aus K_Schule ersetzt (für alle nicht-NULL Einträge)
Schueler LSBemerkung Tabelle:
LSBemerkung← NULL (für alle Einträge mit non-NULL Werten)
Schueler_AllgAdr Tabelle:
Ausbilderwird durch einen zufälligen Nachnamen ausnachnamen.jsonersetzt (nur für Einträge mit non-NULL Werten)
SchuelerBKAbschluss Tabelle:
ThemaAbschlussarbeitwird auf "Thema der Arbeit" gesetzt (nur für Einträge mit non-NULL Werten)
SchuelerEinzelleistungen Tabelle:
Bemerkungwird auf "Bemerkung" gesetzt (nur für Einträge mit non-NULL Werten)
SchuelerAbgaenge Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
SchuelerGSDaten Tabelle:
Anrede_Klassenlehrer← NULLNachname_Klassenlehrer← NULLGS_Klasse← NULL
Personengruppen_Personen Tabelle:
- Alle Einträge werden gelöscht (vollständige Bereinigung)
SchuelerListe Tabelle:
Erzeugerwird auf ID=1 (Admin-Benutzer) gesetzt (nur für Einträge mit non-NULL Werten)
Allgemeine Verwaltungs-Tabellen:
Schil_Verwaltung: Alle Einträge werden gelöschtClient_Konfiguration_Global: Alle Einträge werden gelöschtClient_Konfiguration_Benutzer: Alle Einträge werden gelöschtWiedervorlage: Alle Einträge werden gelöschtZuordnungenReportvorlagen: Alle Einträge werden gelöschtBenutzerEmail: Alle Einträge werden gelöschtImpExp_EigeneImporte: Alle Einträge werden gelöschtImpExp_EigeneImporte_Felder: Alle Einträge werden gelöschtImpExp_EigeneImporte_Tabellen: Alle Einträge werden gelöschtSchuleOAuthSecrets: Alle Einträge werden gelöschtLogins: Alle Einträge werden gelöschtTextExportVorlagen: Alle Einträge werden gelöschtBenutzer: Alle Einträge werden gelöscht, Admin-Benutzer wird neu angelegt (ID=1, Typ=0, Allgemein_ID=1, IstAdmin=1)BenutzerAllgemein: Alle Einträge werden gelöscht, Administrator wird neu angelegt (ID=1, Anzeigename=Administrator, CredentialID=1)Credentials: Alle Einträge werden gelöscht, Admin-Credential wird neu angelegt (ID=1, Benutzername=Admin)
python svws_anonym.py --dry-runZeigt an, welche Änderungen vorgenommen würden, ohne die Datenbank tatsächlich zu ändern.
Shows what changes would be made without actually modifying the database.
python svws_anonym.py --config /path/to/config.json --anonymizeDie config.json enthält die Datenbankverbindungsparameter für den MariaDB-Server:
host: Hostname oder IP-Adresse des Datenbankservers (Standard: localhost)port: Port des Datenbankservers (Standard: 3306)database: Datenbankname (optional, wird bei NULL abgefragt)username: Benutzername (optional, wird bei NULL abgefragt)password: Passwort (optional, wird bei NULL abgefragt)charset: Zeichensatz (Standard: utf8mb4)collation: Kollation (Standard: utf8mb4_unicode_ci)
Flexible Authentifizierung: Wenn database, username und password auf null gesetzt sind (oder fehlen), werden diese Werte beim Programmstart interaktiv abgefragt. Dies erhöht die Sicherheit, da keine Zugangsdaten im Klartext gespeichert werden müssen. Alternativ können diese Werte auch direkt in der Konfigurationsdatei gesetzt werden für automatisierte Ausführung ohne Eingabeaufforderungen.
Wichtig: Die config.json wird nicht ins Git-Repository eingecheckt. Verwenden Sie config.example.json als Vorlage.
The config.json file contains database connection parameters for the MariaDB server. Flexible authentication: If database, username and password are set to null (or omitted), these values are prompted interactively at program startup. This improves security by not requiring credentials to be stored in plain text. Alternatively, these values can also be set directly in the configuration file for automated execution without prompts. Important: config.json is not checked into the git repository. Use config.example.json as a template.
Das Tool verwendet die folgenden JSON-Dateien aus dem JSON-Namen Repository:
nachnamen.json: 2000 deutsche Nachnamenvornamen_m.json: 500 männliche Vornamenvornamen_w.json: 500 weibliche Vornamen
Zusätzlich wird eine CSV-Datei für Adressdaten verwendet:
strassen.csv: Straßendaten mit Ort_ID, PLZ, Ort und Straßenname für realistische Adresszuordnung
The tool uses the following JSON files from the JSON-Namen repository: nachnamen.json (2000 German last names), vornamen_m.json (500 male first names), vornamen_w.json (500 female first names). Additionally, a CSV file is used for address data: strassen.csv with location IDs, postal codes, cities and street names for realistic address assignment.
Siehe LICENSE Datei für Details.
Beiträge sind willkommen! Bitte öffnen Sie ein Issue oder einen Pull Request.
Contributions are welcome! Please open an issue or pull request.
Namenslisten von / Name lists from: JSON-Namen Repository