I. Entender as fontes e o impacto da duplicação de dados Primeiro, precisamos entender por que tantas duplicações de dados são geradas.
Durante a construção de um arquivo de dicionário, os dados podem ser coletados de várias fontes de dados que, por sua própria natureza, se sobrepõem parcialmente. Por exemplo, ao coletar dados de diferentes listas de palavras, conjuntos de senhas comuns, listas de várias combinações de caracteres, etc., algumas palavras básicas ou combinações simples de senhas podem estar presentes em várias fontes.
Esses dados duplicados podem trazer uma série de efeitos adversos. Do ponto de vista do armazenamento, o espaço de 2T já é muito grande, e se houver um grande número de conteúdo duplicado nele, isso equivale a um desperdício de espaço de armazenamento valioso. O conteúdo duplicado pode resultar em operações de pesquisa e comparação desnecessárias quando o arquivo de dicionário é realmente usado para quebra de senha ou outras operações. Por exemplo, se o algoritmo precisa comparar o conteúdo do dicionário com a senha de destino um por um na quebra de senha, o conteúdo duplicado aumentará o número de comparações, retardando assim todo o processo de quebra de senhas.
Método de filtragem baseado em ferramentas de processamento de texto Usando ferramentas sob o sistema Windows - usando o PowerShell - no sistema Windows, o PowerShell fornece recursos ricos de processamento de texto.
Podemos usar o seguinte script PowerShell para remover linhas duplicadas: ``powershell $lines = Get - Content dictionary.txt $uniqueLines = @ () foreach ($line in $lines) {if ($uniqueLines - notcontains $line) {$uniqueLines + = $line}
""
$uniqueLines Set - Content unique_dictionary.txt `` Este script começa lendo todas as linhas de "dicionário.txt" em uma matriz "$lines".
|""
Em seguida, através de um loop por cada linha, se uma linha não estiver na nova matriz "$uniqueLines", ela será adicionada a essa nova matriz. Finalmente, salve o conteúdo da nova matriz em "unique_dictionary.txt".
Algoritmo de partilha - devido ao grande tamanho do nosso arquivo de dicionário (2T), o processamento direto pode encontrar problemas como falta de memória.
O algoritmo de divisão e conquista pode resolver este problema bem. Podemos dividir esse arquivo grande em vários subarquivos menores. Por exemplo, podemos dividir o arquivo de acordo com um determinado número de linhas ou tamanho do documento.
- Em seguida, cada subarquivo é filtrado repetidamente separadamente. Reunifica os subarquivos processados em um único arquivo. Durante o processo de combinação, também é necessário verificar novamente se há conteúdo duplicado, pois pode haver o mesmo conteúdo entre diferentes subarquivos.
Depois de completar a filtragem repetida, precisamos verificar se o resultado está correto.
Você pode usar métodos simples, como extrair algumas linhas aleatoriamente e verificar quantas vezes elas ocorrem no arquivo original e no arquivo filtrado. A filtragem é válida se ocorrer mais de uma vez no arquivo original e apenas uma vez no arquivo filtrado
Além disso, você pode comparar o tamanho do arquivo original com o arquivo filtrado. Se o tamanho do arquivo filtrado for significativamente menor do que o arquivo original e se comportar normalmente em testes subsequentes (como usar este arquivo de dicionário para realizar um teste simples de busca de senha para ver se ele funciona corretamente sem perder a senha que deveria estar presente), também pode indicar que o trabalho de filtragem repetido está funcionando bem.
Nosso servidor adota 512G de memória, servidor de disco rígido de protocolo NVMe de alta velocidade, leva meio mês, processamento bem-sucedido, e tentou descobrir um conjunto de script de processamento eficiente, como o tipo de demanda pode entrar em contato com o serviço ao cliente do site para comunicação, filtragem e repetição do processo pisado no poço, mas também processamento automático de script de escrita!
Filtrar conteúdo duplicado em arquivos de dicionário de tipo de texto do 2T é um trabalho desafiador, mas muito necessário. Ao escolher ferramentas e algoritmos razoavelmente, podemos efetivamente remover conteúdo duplicado e melhorar a qualidade e a eficiência de uso do arquivo de dicionário, o que é de grande importância no quebra de senha e em outros cenários de aplicação baseados no arquivo de dicionário.