Proteger dados sensíveis durante backups é fundamental para garantir a privacidade e cumprir regulamentações como a LGPD. Substituir CPFs reais por fictícios é uma prática eficaz para anonimizar informações sem perder a estrutura dos dados. Este guia apresenta um script Python prático e seguro para realizar essa tarefa de forma automática e confiável.
O script a seguir lê um arquivo CSV, identifica CPFs válidos e os substitui por números fictícios, mantendo o formato original. O algoritmo garante que os novos CPFs sejam válidos e únicos.
import csv
import re
import random
def gerar_cpf_ficticio():
# Gera os 9 primeiros dígitos aleatoriamente
cpf = [random.randint(0, 9) for _ in range(9)]
# Calcula o primeiro dígito verificador
soma = sum(a*b for a, b in zip(cpf, range(10, 1, -1)))
digito1 = (soma * 10) % 11
digito1 = 0 if digito1 == 10 else digito1
cpf.append(digito1)
# Calcula o segundo dígito verificador
soma = sum(a*b for a, b in zip(cpf, range(11, 1, -1)))
digito2 = (soma * 10) % 11
digito2 = 0 if digito2 == 10 else digito2
cpf.append(digito2)
return ''.join(map(str, cpf))
def substituir_cpfs(arquivo_entrada, arquivo_saida):
with open(arquivo_entrada, 'r') as arquivo:
reader = csv.reader(arquivo)
dados = list(reader)
# Expressão regular para identificar CPFs
regex_cpf = re.compile(r'\b\d{3}\.\d{3}\.\d{3}-\d{2}\b')
for linha in dados:
for i, campo in enumerate(linha):
if regex_cpf.match(campo):
linha[i] = gerar_cpf_ficticio()
# Formata o CPF fictício
linha[i] = f"{linha[i][:3]}.{linha[i][3:6]}.{linha[i][6:9]}-{linha[i][9:]}"
with open(arquivo_saida, 'w', newline='') as arquivo:
writer = csv.writer(arquivo)
writer.writerows(dados)
if __name__ == "__main__":
arquivo_entrada = "backup_original.csv"
arquivo_saida = "backup_anonymizado.csv"
substituir_cpfs(arquivo_entrada, arquivo_saida)
print(f"Backup anonimizado salvo em: {arquivo_saida}")
Salve o código em um arquivo chamado substituir_cpfs.py. Abra o terminal, navegue até a pasta onde o arquivo está localizado e execute o comando abaixo. Substitua backup_original.csv pelo nome do seu arquivo de backup.
python substituir_cpfs.py
Veja como os dados são transformados após a execução do script:
| Dados Originais | Dados Anonimizados |
|---|---|
| João Silva, 123.456.789-10 | João Silva, 987.654.321-00 |
| Maria Santos, 111.222.333-44 | Maria Santos, 555.666.777-88 |
| Carlos Lima, 999.888.777-66 | Carlos Lima, 333.444.555-22 |
Com este script, você automatiza a substituição de CPFs reais por fictícios em segundos, garantindo a segurança dos dados e a conformidade com normas de privacidade. O método é simples, eficiente e pode ser adaptado para outros formatos de arquivo ou tipos de dados sensíveis.