Um projeto para extrair rapidamente todos os endereços de e-mail de qualquer arquivo em um determinado caminho
Este projeto pretende ser uma nova versão de código aberto de uma base de código básica que usei durante quase uma década para extrair endereços de e-mail de violações de dados antes de carregá-los no HIBP. A maioria das violações está no formato .sql ou .csv, em um único arquivo ou em vários arquivos dentro de uma pasta, e a extração segue um processo simples:
A regex que usei é a seguinte: b[a-zA-Z0-9.-_+]+@[a-zA-Z0-9.-_]+.[a-zA-Z]+b
A validação de endereço de e-mail via regex é difícil, mas também não precisa ser perfeita para este caso de uso. Falsos positivos são extremamente raros e o impacto é insignificante, ou seja, uma string que não é um endereço genuíno é carregada no HIBP ou um endereço genuíno de formato incomum é carregado. Na maior parte, esse regex pode ser resumido como "colocar ambos os lados de um símbolo @ com um TLD de caracteres alfa".
Inevitavelmente, a discussão levou à conformidade com a RFC versus os usos práticos de certos caracteres ao considerar regras de análise. Existem duas considerações principais aqui:
Curiosamente, o ponto 1 raramente é verdadeiro em comparação com o ponto 2. O impacto da rejeição falsa de um endereço legítimo compatível com as especificações é que ele não termina no HIBP (ou seja, baixo impacto). O impacto de permitir endereços que na verdade não existem é que registros indesejados são introduzidos no HIBP (também de baixo impacto). Especialmente quando se considera a probabilidade de um endereço com caracteres obscuros ser praticamente utilizado (por exemplo, aceito em um formulário de registro e não rejeitado), no final das contas é preferível rejeitar caracteres que provavelmente sejam resultado de erros de análise.
Realisticamente, é improvável que padrões obscuros sejam usados em endereços de e-mail
Entrei em contato e pedi apoio e iniciarei as coisas por meio de uma ou duas pessoas importantes e, em seguida, buscarei informações mais amplas. Estou particularmente interessado em otimizar o serviço em conjuntos de dados maiores e arquivos não baseados em texto, especialmente com o aumento de documentos descartados por equipes de ransomware. Começarei a criar problemas para as partes que precisam ser construídas.
Usando o SQL Data Generator da Red Gate, um arquivo de amostra contendo 10 milhões de registros de dados típicos de violação está disponível para download no Mega. Este arquivo resulta na extração de exatamente 10 milhões de endereços de e-mail com a versão atual deste aplicativo. Observação: o arquivo de dados de teste está atualmente na V2, com a versão anterior resultando em pouco menos de 10 milhões de endereços exclusivos devido à presença de padrões de nomes de domínio inválidos.
Sintaxe: AddressExtractor.exe -?
Sintaxe: AddressExtractor.exe -v
Sintaxe: AddressExtractor.exe <input [[... input]]> [-o output] [-r report]
Opção | Descrição |
---|---|
-? , -h , --help | Imprime a sintaxe e as opções da linha de comando |
-v , --version | Imprime o número da versão do aplicativo |
entrada | Um ou mais nomes de arquivos ou diretórios de entrada |
-o , --output saída | Caminho e nome do arquivo de saída. O padrão é 'addresses_output.txt' |
-r , --report relatório | Caminho e nome do arquivo do relatório. O padrão é 'report.txt' |
--recursive | Habilite o modo recursivo para diretórios, que pesquisará diretórios filhos |
-y , --yes | Confirme automaticamente as solicitações para CONTINUAR sem perguntar |
-q , --quiet | Execute com menos detalhamento, as mensagens de progresso não são mostradas |
Opção | Descrição |
---|---|
--debug | Ative o modo de depuração para verificação de desempenho ajustada |
--threads num | Usa vários threads com canais para leitura de arquivos. O padrão é 4 |
--skip-exceptions | Solicita automaticamente CONTINUE quando ocorre uma exceção |