I. Comprendre la source et l'impact des données en double
Tout d'abord, nous devons comprendre pourquoi il y a tant de données en double. Lors de la construction du fichier de dictionnaire, les données peuvent être collectées auprès de plusieurs sources qui se chevauchent partiellement. Par exemple, lors de la collecte de données auprès de différents dictionnaires de mots, de collections de mots de passe courants et de listes de combinaisons de caractères, certains mots de base ou combinaisons de mots de passe simples peuvent être présents dans plusieurs sources.
Ces données en double ont de nombreuses conséquences négatives. Du point de vue du stockage, un espace de 2 To est déjà très important. Si celui-ci contient de nombreuses données en double, cela revient à gaspiller un espace de stockage précieux. Lors de l'utilisation de ce fichier de dictionnaire pour le piratage de mots de passe ou d'autres opérations, les données en double entraînent des recherches et des comparaisons inutiles. Par exemple, si, lors du piratage de mots de passe, l'algorithme doit comparer chaque ligne du dictionnaire avec le mot de passe cible, les données en double augmenteront le nombre de comparaisons, ralentissant ainsi le processus de piratage.
II. Méthodes de filtrage basées sur des outils de traitement de texte
À l'aide d'outils sous Windows
- Utiliser PowerShell
- Sous Windows, PowerShell offre de nombreuses fonctionnalités de traitement de texte. Nous pouvons utiliser le script PowerShell suivant pour supprimer les lignes en double :
```powershell
$lines = Get - Content "dictionary.txt"
$uniqueLines = @()
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Ce script lit d’abord toutes les lignes du fichier « dictionary.txt » dans un tableau « $lines ». Ensuite, il parcourt chaque ligne à l’aide d’une boucle et, si une ligne n’est pas déjà présente dans le nouveau tableau « $uniqueLines », il l’ajoute à ce dernier. Enfin, il enregistre le contenu du nouveau tableau dans le fichier « unique_dictionary.txt ».
Algorithme de division et de conquête
- Étant donné que notre fichier de dictionnaire est très volumineux (2 To), sa gestion directe pourrait entraîner des problèmes de mémoire insuffisante, etc. L'algorithme de division et de conquête peut très bien résoudre ce problème. Nous pouvons diviser ce grand fichier en plusieurs sous-fichiers plus petits. Par exemple, nous pouvons le diviser en fonction d'un certain nombre de lignes ou de la taille du fichier.
- Ensuite, nous filtrons les doublons de chaque sous-fichier. Nous réassemblons ensuite les sous-fichiers traités en un seul fichier. Pendant le réassemblage, il est également nécessaire de vérifier à nouveau s'il y a des doublons, car il peut y avoir des doublons entre les différents sous-fichiers.
IV. Vérification des résultats du filtrage
Après le filtrage des doublons, nous devons vérifier si les résultats sont corrects. Nous pouvons utiliser des méthodes simples, telles que l’extraction aléatoire de quelques lignes, pour vérifier le nombre de fois où ces lignes apparaissent dans le fichier original et dans le fichier filtré. Si elles apparaissent plusieurs fois dans le fichier original, mais une seule fois dans le fichier filtré, cela signifie que le filtrage est efficace.
De plus, nous pouvons comparer la taille du fichier original et celle du fichier filtré. Si la taille du fichier filtré est nettement inférieure à celle du fichier original et qu’il fonctionne normalement dans les tests ultérieurs (comme l’utilisation de ce fichier de dictionnaire pour un test de recherche de mot de passe simple afin de vérifier s’il fonctionne correctement et ne manque aucun mot de passe qui devrait être présent), cela peut également indiquer que le filtrage des doublons a été effectué avec succès.
Notre serveur est équipé d’une mémoire de 512 Go et de serveurs de disques durs NVMe à haute vitesse. Après une semaine et demie, nous avons réussi à le traiter et à mettre au point un script de traitement efficace. Pour toute demande de type, veuillez contacter le service client du site pour en discuter. Nous avons également rencontré des difficultés lors du filtrage des doublons et de la rédaction du script de traitement automatique !
Filtrer les doublons dans un fichier de dictionnaire de texte de 2 To est une tâche difficile mais très nécessaire. En choisissant judicieusement les outils et les algorithmes, nous pouvons supprimer efficacement les doublons et améliorer la qualité et l’efficacité de l’utilisation du fichier de dictionnaire, que ce soit pour le cassage de mot de passe ou dans d’autres scénarios d’application basés sur ce fichier de dictionnaire.