Skip to content

intaro/maskdump

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

33 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‡¬πŸ‡§ MaskDump - Database Anonymization Tool

Description

MaskDump is a powerful tool for database anonymization and data masking designed to protect Personally Identifiable Information (PII) in database dumps. It provides secure PII obfuscation while maintaining data structure and format integrity.

Key features:

  • Email and phone number masking with configurable algorithms
  • White-list support for preserving specific values
  • Caching system for consistent masking across multiple runs
  • Regular expression customization for different data formats
  • Pipeline-friendly design for integration with existing workflows

Use cases:

  • Creating safe development/test environments from production data
  • GDPR/CCPA compliance for data sharing
  • Database sanitization before analytics processing
  • Data masking for non-production environments

Features

1. Two Operation Modes:

  • Full File Processing - works with any text files (SQL dumps, CSV, logs, etc.)
  • Selective Processing - masks only specified tables and fields (configured in processing_tables)

2. Table Exclusion The skip_insert_into_table_list parameter skips inserts into specified tables (e.g., logs or system data).

3. Email & Phone Whitelist Settings email_white_list and phone_white_list preserve specific emails and numbers from masking.

4. Flexible Masking Rules

  • Partial email masking (e.g., [email protected] β†’ us****@domain.com)
  • Phone number obfuscation (e.g., +7 (123) 456-78-90 β†’ +7 (***) ***-**-90)

Installation

Ready-to-run binary

You can download a ready-to-use maskdump binary from the Releases page

Build from source

  1. Ensure you have Go installed (version 1.16+ recommended)
  2. Clone the repository:
    git clone https://github.com/yourusername/maskdump.git
    cd maskdump
  3. Build the binary:
    go build -o maskdump .

Usage

Basic pipeline usage

mysqldump dbname | ./maskdump --mask-email=light-hash --mask-phone=light-mask > anonymized_dump.sql

Command-line options

Option Description Default
--mask-email Email masking algorithm (light-hash) (disabled)
--mask-phone Phone masking algorithm (light-mask) (disabled)
--no-cache Disable caching of masked values false
--config Path to configuration file (autodetect)

Configuration file

Create maskdump.conf in the same directory as the binary or specify path with --config:

{
  "cache_path": "/path/to/cache.json",
  "email_regex": "\\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b",
  "phone_regex": "(?:\\+7|7|8)?(?:[\\s\\-\\(\\)]*\\d){10}",
  "email_white_list": "/path/to/white_list_email.txt",
  "phone_white_list": "/path/to/white_list_phone.txt",
  "memory_limit_mb": 1024,
  "cache_flush_count": 1000,
  "skip_insert_into_table_list": "/path/to/skip_table_list.txt",
  "masking": {
    "email": {
      "target": "username:2-",
      "value": "hash:6"
    },
    "phone": {
      "target": "2,3,5,6,8,10",
      "value": "hash"
    }
  },
  "processing_tables": {
    "b_user": {
      "email": ["LOGIN", "EMAIL"],
      "phone": ["PERSONAL_PHONE", "PERSONAL_MOBILE", "WORK_PHONE"]
    },
    "b_socialservices_user": {
      "email": ["EMAIL"]
    }
  }
}

White lists

Create text files with one value per line to exclude from masking:

white_list_email.txt example:

white_list_phone.txt example:

+79001234567
88005553535

Masking Algorithms

Email (light-hash)

  • The characters to be replaced depend on the settings. By default, the configuration preserves only the first character and the domain, while all other characters in the email username are replaced with the first 6 characters of the MD5 hash of the entire original email string.
  • Possible email masking configuration options:
    • target="2-5" and value="hash" - Numbers separated by a hyphen indicate character positions to replace; "hash" means replacement with characters from the MD5 hash of the original email. The range can be open-ended: "2-" replaces the second and all subsequent characters; "-5" replaces only the first five characters in the email.
    • target="1~1" and value="hash" - Numbers separated by a tilde indicate how many characters to keep unchanged at the start and end of the string (all others are replaced); "hash" means replacement with characters from the MD5 hash of the original email. The range can be open-ended: "2~" keeps the first and second characters unchanged, replacing all subsequent characters; "~1" replaces all characters except the last one.
    • target="1,3,5,7" and value="hash" - Comma-separated numbers indicate specific character positions to change; "hash" means replacement with characters from the MD5 hash of the original email.
    • Target can include modifiers: "username:" - modify only the left part of the email (before @) and "domain:" - modify only the right part of the email (after @). For example, target="username:2-" means replacing the second and all subsequent characters in the left part of the email, while everything else (first character, @ symbol, and right part of the email) remains unchanged.
    • value="*" - means replacement with asterisk characters

Phone Numbers (light-mask)

  • Preserves the original phone number format
  • Replaces specific digits with digits from the SHA256 hash. Which digits get replaced is determined by settings. By default, digits at these positions are replaced: 2, 3, 5, 6, 8, and 10.

A quick example of the work

Data Pipeline Integration

The input is a typical database dump string. The output is the same dump, but with changed email and phone numbers:

echo "INSERT INTO users (id, email, phone) VALUES (123, '[email protected]', '+7 (904) 111-22-33'), (124, '[email protected]', '8-900-000-00-00');" | ./maskdump  --mask-email=light-hash --mask-phone=light-mask --no-cache

Result:

INSERT INTO users (id, email, phone) VALUES (123, '[email protected]', '+7 (354) 101-72-53'), (124, '[email protected]', '8-700-160-90-20');

Example of working together with the mysqldump utility:

mysqldump --user=admin -p --host=localhost db_name | ./maskdump --mask-email=light-hash --mask-phone=light-mask >/tmp/maskdata_db_name.sql

File-Based Processing

./maskdump --mask-email=light-hash --mask-phone=light-mask <~/tmp/dump_db_name.sql >/tmp/maskdata_db_data.sql

πŸ‡·πŸ‡Ί MaskDump - Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π°Π½ΠΎΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…

ОписаниС

MaskDump - ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Π°Π½ΠΎΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ маскировки ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (PII) Π² Π΄Π°ΠΌΠΏΠ°Ρ… Π‘Π”. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ бСзопасноС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… с сохранСниСм структуры ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности:

  • ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° email ΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² с настраиваСмыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π±Π΅Π»Ρ‹Ρ… списков для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
  • БистСма ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ для согласованного прСобразования
  • Настройка рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅:

  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ бСзопасных срСд Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ/тСстирования
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠ΅ соотвСтствия GDPR/CCPA
  • ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠΉ
  • ΠœΠ°ΡΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… для Π½Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… срСд

ВозмоТности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1. Π”Π²Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹:

  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° всСго Ρ„Π°ΠΉΠ»Π° - ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π»ΡŽΠ±Ρ‹Ρ… тСкстовых Ρ„Π°ΠΉΠ»ΠΎΠ² (SQL-Π΄Π°ΠΌΠΏΡ‹, CSV, Π»ΠΎΠ³ΠΈ ΠΈ Π΄Ρ€.)
  • Выборочная ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° - маскировка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ ΠΏΠΎΠ»Π΅ΠΉ (настраиваСтся Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ processing_tables ΠΊΠΎΠ½Ρ„ΠΈΠ³Π°)

2. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈΠ· ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ skip_insert_into_table_list позволяСт ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ вставки Π² Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π»ΠΎΠ³ΠΈ ΠΈΠ»ΠΈ слуТСбныС Π΄Π°Π½Π½Ρ‹Π΅).

3. Π‘Π΅Π»Ρ‹ΠΉ список email ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² Настройки email_white_list ΠΈ phone_white_list ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ адрСса ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°.

4. Π“ΠΈΠ±ΠΊΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° маскировки

  • Π—Π°ΠΌΠ΅Π½Π° части email (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, [email protected] β†’ us****@domain.com)
  • ЧастичноС скрытиС Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, +7 (123) 456-78-90 β†’ +7 (***) ***-**-90)

Установка

Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ

МоТно ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ maskdump со страницы Ρ€Π΅Π»ΠΈΠ·ΠΎΠ²

Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈΠ· исходников

  1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ установлСн Go (вСрсия 1.16+)
  2. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:
    git clone https://github.com/yourusername/maskdump.git
    cd maskdump
  3. Π‘ΠΎΠ±Π΅Ρ€ΠΈΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ:
    go build -o maskdump .

ИспользованиС

ИспользованиС в пайплайнС

mysqldump dbname | ./maskdump --mask-email=light-hash --mask-phone=light-mask > anonymized_dump.sql

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запуска

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ОписаниС По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
--mask-email Алгоритм маскировки email (light-hash) (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ)
--mask-phone Алгоритм маскировки Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½ΠΎΠ² (light-mask) (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ)
--no-cache ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ false
--config ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌΡƒ Ρ„Π°ΠΉΠ»Ρƒ (автопоиск)

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ maskdump.conf Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ»ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· --config:

{
  "cache_path": "/path/to/cache.json",
  "email_regex": "\\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}\\b",
  "phone_regex": "(?:\\+7|7|8)?(?:[\\s\\-\\(\\)]*\\d){10}",
  "email_white_list": "/path/to/white_list_email.txt",
  "phone_white_list": "/path/to/white_list_phone.txt",
  "memory_limit_mb": 1024,
  "cache_flush_count": 1000,
  "skip_insert_into_table_list": "/path/to/skip_table_list.txt",
  "masking": {
    "email": {
      "target": "username:2-",
      "value": "hash:6"
    },
    "phone": {
      "target": "2,3,5,6,8,10",
      "value": "hash"
    }
  },
  "processing_tables": {
    "b_user": {
      "email": ["LOGIN", "EMAIL"],
      "phone": ["PERSONAL_PHONE", "PERSONAL_MOBILE", "WORK_PHONE"]
    },
    "b_socialservices_user": {
      "email": ["EMAIL"]
    }
  }
}

Π‘Π΅Π»Ρ‹Π΅ списки

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ со значСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ°ΡΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ white_list_email.txt:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ white_list_phone.txt:

+79001234567
88005553535

Алгоритмы маскировки

Email (light-hash)

  • ЗамСняСмыС символы зависят ΠΎΡ‚ настроСк. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°Π΄Π°Π½Ρ‹ настройки, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сохраняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΈ Π΄ΠΎΠΌΠ΅Π½, Π° всС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ символы ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· email Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 6 символов MD5 Ρ…ΡΡˆΠ° ΠΎΡ‚ всСй исходной строки email
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ настроСк ΠΌΠ°ΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ email:
    • target="2-5" ΠΈ value="hash" β€” числа Ρ‡Π΅Ρ€Π΅Π· дСфис β€” это Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ замСняСм; "hash" β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ замСняСм символами ΠΈΠ· MD5 Ρ…ΡΡˆΠ° ΠΎΡ‚ исходного email. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ замСняСмых ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ символов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ: "2-" β€” Π·Π°ΠΌΠ΅Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… симолов; "-5" β€” Π·Π°ΠΌΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… пяти символов Π² email.
    • target="1~1" ΠΈ value="hash" β€” числа Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΈΠ»ΡŒΠ΄Ρƒ β€” это количСство символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оставляСм Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ с Π½Π°Ρ‡Π°Π»Π° ΠΈ с ΠΊΠΎΠ½Ρ†Π° строки (Π° всС ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ); "hash" β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ замСняСм символами ΠΈΠ· MD5 Ρ…ΡΡˆΠ° ΠΎΡ‚ исходного email. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ: "2~" β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ символ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ, Π² всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ символы Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ; "~1" β€” Π·Π°ΠΌΠ΅Π½Π° всСх символов, ΠΊΡ€ΠΎΠΌΠ΅ послСднСго.
    • target="1,3,5,7" ΠΈ value="hash" β€” числа Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ β€” это Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΠΎΠΈΡ†ΠΈΠΉ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСням; "hash" β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ замСняСм символами ΠΈΠ· MD5 Ρ…ΡΡˆΠ° ΠΎΡ‚ исходного email.
    • для target ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹: "username:" β€” ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Π΅Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ email ΠΈ "domain:" β€” ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ email. НапримСр, target="username:2-" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… символов Π»Π΅Π²ΠΎΠΉ части email, Π° всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ, Π·Π½Π°ΠΊ "@" ΠΈ правая Ρ‡Π°ΡΡ‚ΡŒ email) остаётся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ
    • value="*" β€” ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρƒ Π½Π° символ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ

Π’Π΅Π»Π΅Ρ„ΠΎΠ½Ρ‹ (light-mask)

  • БохраняСт исходный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π°
  • ЗамСняСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ Π½Π° Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈΠ· SHA256 Ρ…ΡΡˆΠ°. Π§Ρ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ΄ Π·Π°ΠΌΠ΅Π½Ρƒ β€” опрСдСляСтся настройками. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ†ΠΈΡ„Ρ€Ρ‹ Π½Π° этих Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ: 2, 3, 5, 6, 8 ΠΈ 10.

Быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…

На Π²Ρ…ΠΎΠ΄ ΠΏΠΎΠ΄Π°Ρ‘ΠΌ строку Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ этот ΠΆΠ΅ Π΄Π°ΠΌΠΏ, Π½ΠΎ с ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½Π½Ρ‹ΠΌΠΈ email ΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌΠΈ:

echo "INSERT INTO users (id, email, phone) VALUES (123, '[email protected]', '+7 (904) 111-22-33'), (124, '[email protected]', '8-900-000-00-00');" | ./maskdump  --mask-email=light-hash --mask-phone=light-mask --no-cache

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

INSERT INTO users (id, email, phone) VALUES (123, '[email protected]', '+7 (354) 101-72-53'), (124, '[email protected]', '8-700-160-90-20');

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ mysqldump:

mysqldump --user=admin -p --host=localhost db_name | ./maskdump --mask-email=light-hash --mask-phone=light-mask >/tmp/maskdata_db_name.sql

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°

./maskdump --mask-email=light-hash --mask-phone=light-mask <~/tmp/dump_db_name.sql >/tmp/maskdata_db_data.sql

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%