En primer lugar, debemos entender por qué se genera tanta duplicación de datos.
En el proceso de construcción de un archivo de diccionario, es probable que se recopilen datos de múltiples fuentes de datos que se superponen parcialmente entre sí. Por ejemplo, cuando se recopilan datos de diferentes listas de palabras, conjuntos de contraseñas comunes, listas de varias combinaciones de caracteres, etc., algunas palabras básicas o combinaciones de contraseñas simples pueden estar presentes en múltiples fuentes.
Estos datos duplicados pueden tener muchos efectos adversos. Desde el punto de vista del almacenamiento, 2T de espacio ya es muy grande, si hay una gran cantidad de contenido duplicado en él, equivale a desperdiciar un valioso espacio de almacenamiento. El contenido duplicado puede conducir a operaciones de búsqueda y comparación innecesarias cuando realmente se utiliza este archivo de diccionario para descifrar contraseñas u otras operaciones. Por ejemplo, si en el descifrado de contraseñas, el algoritmo necesita comparar el contenido del diccionario con la contraseña de destino uno por uno, el contenido repetido aumentará el número de comparaciones, lo que ralentizará todo el proceso de descifrado.
Método de filtrado basado en herramientas de procesamiento de texto Utilice la herramienta en el sistema Windows - Utilice PowerShell - En el sistema Windows, PowerShell proporciona una amplia gama de funciones de procesamiento de texto.
Podemos usar el siguiente script de PowerShell para eliminar las líneas 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 primero lee todas las líneas de "dicionario.txt" en una matriz "$lines".
|""
Luego, a través de cada fila en un bucle, si una fila no está en la nueva matriz "$uniqueLines", se agrega a esta nueva matriz. Por último, guarde el contenido de la nueva matriz en "unique_dictionary.txt".
Algoritmo de partición - Debido a que nuestro archivo de diccionario es muy grande (2T), el procesamiento directo puede encontrar problemas como la falta de memoria.
El algoritmo de división puede resolver este problema bien. Podemos dividir el archivo grande en varios subarchivos más pequeños. Por ejemplo, podemos dividirlo de acuerdo con un cierto número de líneas o tamaño de archivo.
- A continuación, cada subarchivo se filtra por separado. Recombina los subarchivos procesados en un archivo. Durante el proceso de consolidación, también debe comprobar de nuevo si hay contenido duplicado, ya que puede haber el mismo contenido entre diferentes subarchivos.
Después de completar la filtración repetida, debemos verificar si los resultados son correctos.
Puede utilizar métodos simples, como extraer algunas líneas al azar y comprobar cuántas veces aparecen en el archivo original y en el archivo filtrado. Si aparece varias veces en el archivo original y solo una vez en el archivo filtrado, el filtrado es válido.
Además, puede comparar el tamaño del archivo original y el archivo filtrado. Si el tamaño del archivo filtrado es significativamente menor que el archivo original y se desempeña normalmente en las pruebas posteriores, como una prueba simple de búsqueda de contraseñas utilizando este archivo de diccionario para ver si funciona correctamente sin omitir la contraseña que debería existir, también puede indicar que el esfuerzo de filtración repetido ha logrado buenos resultados.
Nuestro servidor utiliza 512G de memoria, servidor de disco duro de protocolo NVMe de alta velocidad, pasar medio mes, procesamiento exitoso, y a tientas de un conjunto de script de procesamiento eficiente, como la necesidad de tipo puede ponerse en contacto con el servicio al cliente del sitio web, filtrar el proceso de repetición pisado pozo, y la escritura de script de procesamiento automático!
Filtrar los contenidos duplicados en los archivos de diccionario de tipo de texto de 2T es un trabajo desafiante, pero muy necesario. Mediante la selección razonable de herramientas y algoritmos, podemos eliminar el contenido duplicado de manera efectiva y mejorar la calidad y la eficiencia de uso del archivo de diccionario, lo que tiene un significado importante en el descifrado de contraseñas y otros escenarios de aplicación basados en este archivo de diccionario.