I. Verstehen der Ursachen und Auswirkungen von Duplikaten
Zunächst müssen wir verstehen, warum so viele Duplikate entstehen. Beim Erstellen der Wörterbuchdatei werden Daten möglicherweise aus mehreren Datenquellen gesammelt, die teilweise überlappende Inhalte aufweisen. Beispielsweise können einige grundlegende Wörter oder einfache Passwortkombinationen in mehreren Quellen wie Wortlisten, häufig verwendeten Passwortsammlungen oder Listen verschiedener Zeichenkombinationen vorkommen.
Diese Duplikate haben mehrere negative Auswirkungen. Aus Sicht des Speichers ist eine 2-TB-Größe bereits sehr umfangreich, und wenn viele Duplikate vorhanden sind, wird wertvoller Speicherplatz verschwendet. Bei der Verwendung der Wörterbuchdatei zum Passwortknacken oder für andere Operationen führen Duplikate zu unnötigen Such- und Vergleichsvorgängen. Wenn beispielsweise beim Passwortknacken der Algorithmus jede Zeile im Wörterbuch mit dem Zielpasswort vergleichen muss, erhöhen Duplikate die Anzahl der Vergleiche und verlangsamen so den gesamten Prozess.
II. Filtermethoden mit Textverarbeitungstools
Mithilfe von Tools unter Windows
- PowerShell
- Unter Windows bietet PowerShell umfangreiche Textverarbeitungsfunktionen. Wir können den folgenden PowerShell-Skript zum Entfernen doppelter Zeilen verwenden:
```powershell
" "
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Dieses Skript liest zunächst alle Zeilen aus „dictionary.txt“ in ein Array „$lines“. Anschließend wird in einer Schleife jede Zeile durchlaufen, und wenn eine Zeile nicht in dem neuen Array „$uniqueLines“ enthalten ist, wird sie diesem neuen Array hinzugefügt. Zuletzt wird der Inhalt des neuen Arrays in „unique_dictionary.txt“ gespeichert.
Teilungsalgorithmus
- Da unsere Wörterbuchdatei sehr groß ist (2 TB), können bei der direkten Bearbeitung Probleme wie Speicherknappheit auftreten. Der Teilungsalgorithmus kann dieses Problem sehr gut lösen. Wir können diese große Datei in mehrere kleinere Teildateien aufteilen. Beispielsweise können wir sie nach einer bestimmten Anzahl von Zeilen oder Dateigröße aufteilen.
- Anschließend wird jeder Teildatei ein Duplikatfilter durchgeführt. Die verarbeiteten Teildateien werden dann wieder zu einer Datei zusammengeführt. Während des Zusammenführens muss noch einmal überprüft werden, ob es Duplikate gibt, da es zwischen den verschiedenen Teildateien identische Inhalte geben kann.
IV. Überprüfung der Filterergebnisse
Nach dem Duplikatfilter müssen wir die Ergebnisse überprüfen. Dazu können einfache Methoden wie das Zufällig-Auswählen von Zeilen und Überprüfen der Häufigkeit dieser Zeilen in der Originaldatei und in der gefilterten Datei verwendet werden. Wenn die Zeile in der Originaldatei mehrmals vorkommt, aber nur einmal in der gefilterten Datei, ist der Filter erfolgreich.
Außerdem können wir die Größe der Originaldatei und der gefilterten Datei vergleichen. Wenn die Größe der gefilterten Datei deutlich kleiner ist als die der Originaldatei und sie bei nachfolgenden Tests (z. B. einfache Passwortsuche mit dieser Wörterbuchdatei, um zu prüfen, ob alle erforderlichen Passwörter enthalten sind und keine ausgelassen wurden) normal funktioniert, zeigt dies, dass die Duplikatfilterung erfolgreich war.
Unser Server verfügt über 512 GB Arbeitsspeicher und Hochgeschwindigkeits-NVMe-Protokoll-Festplattenserver. Nach zwei Wochen Arbeit konnten wir erfolgreich verarbeiten und ein effizientes Skript für die Verarbeitung entwickeln. Wenn Sie Anforderungen dieser Art haben, können Sie sich an den Kundendienst der Website wenden, um darüber zu sprechen, welche Fallen wir bei der Duplikatfilterung überwunden haben, und um das automatische Skript zur Verarbeitung zu erhalten!
Die Filterung von Duplikaten in einer 2-TB-Text-Wörterbuchdatei ist eine herausfordernde, aber sehr notwendige Aufgabe. Durch die sinnvolle Auswahl von Tools und Algorithmen können wir Duplikate effektiv entfernen und die Qualität und Effizienz der Wörterbuchdatei verbessern, was sowohl für das Passwortknacken als auch für andere Anwendungsszenarien, die auf dieser Wörterbuchdatei basieren, von großer Bedeutung ist.