I. Begrijpen van de oorsprong en impact van dubbele gegevens
Allereerst moeten we begrijpen waarom er zoveel dubbele gegevens ontstaan. Tijdens het samenstellen van het woordenboekbestand worden gegevens mogelijk verzameld uit meerdere bronnen die zelf deels overlappen. Wanneer gegevens bijvoorbeeld uit verschillende woordenlijsten, veelvoorkomende wachtwoordverzamelingen of lijsten met willekeurige tekencombinaties worden verzameld, kunnen bepaalde basiswoorden of eenvoudige wachtwoordcombinaties in meerdere bronnen voorkomen.
Deze dubbele gegevens hebben verschillende nadelige gevolgen. Vanuit het oogpunt van opslag is 2 TB al enorm veel ruimte en als er veel dubbele gegevens zijn, wordt kostbare opslagruimte verspild. Bij het gebruik van het woordenboekbestand voor wachtwoordkraken of andere bewerkingen leiden dubbele gegevens tot onnodige zoek- en vergelijkingsacties. Als bijvoorbeeld bij wachtwoordkraken het algoritme elke regel in het woordenboek met het doelwachtwoord moet vergelijken, zorgen dubbele gegevens voor extra vergelijkingen, waardoor het hele krackingsproces vertraagd wordt.
II. Filtermethoden met tekstverwerkingshulpmiddelen
Gereedschappen onder Windows
- PowerShell
- In Windows biedt PowerShell uitgebreide mogelijkheden voor tekstverwerking. We kunnen de volgende PowerShell-script gebruiken om dubbele regels te verwijderen:
```powershell
$lines = Get - Content "dictionary.txt"
$uniqueLines = @()
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Dit script leest eerst alle regels uit 'dictionary.txt' in een array '$lines'. Vervolgens worden alle regels in een lus verwerkt. Als een regel niet in de nieuwe array '$uniqueLines' staat, wordt deze toegevoegd. Tenslotte wordt de inhoud van de nieuwe array opgeslagen in 'unique_dictionary.txt'.
Divisie-algoritme
- Omdat onze woordenlijst erg groot is (2T), kunnen we bij directe verwerking te maken krijgen met problemen zoals onvoldoende geheugen. Het divisie-algoritme is hier een goede oplossing voor. We kunnen het grote bestand opdelen in meerdere kleinere bestanden. Bijvoorbeeld, op basis van een bepaald aantal regels of de grootte van het bestand.
- Vervolgens wordt elk subbestand afzonderlijk gecontroleerd op dubbele inhoud. De verwerkte subbestanden worden opnieuw samengevoegd tot één bestand. Tijdens het samenvoegen moet er opnieuw worden gecontroleerd op dubbele inhoud, omdat er tussen de verschillende subbestanden dezelfde inhoud kan voorkomen.
IV. Verificatie van het filterresultaat
Na het filteren van de dubbele inhoud moeten we het resultaat verifiëren. Dit kan op eenvoudige wijze door willekeurig enkele regels te selecteren en te controleren hoe vaak deze regels in het originele en gefilterde bestand voorkomen. Als een regel meerdere keren in het originele bestand voorkomt, maar slechts één keer in het gefilterde bestand, is het filteren effectief.
Daarnaast kunnen we de grootte van het originele en gefilterde bestand vergelijken. Als de grootte van het gefilterde bestand duidelijk kleiner is dan die van het originele bestand en het bestand bij verdere tests (zoals het gebruiken van deze woordenlijst voor eenvoudige wachtwoordzoekopdrachten om te controleren of de wachtwoorden correct en niet vergeten worden) normaal werkt, is het filteren effectief geweest.
Onze server beschikt over 512 GB geheugen en SSD-schijven en het duurde ons twee weken om dit te verwerken en we hebben een efficiënte verwerkingsscript ontwikkeld. Als u hierin geïnteresseerd bent, kunt u contact opnemen met de klantenservice van onze website. We delen graag onze ervaringen met het filteren van dubbele inhoud en het schrijven van automatische verwerkingsscripts!
Het filteren van dubbele inhoud in een tekstwoordenlijst van 2 TB is een uitdagende maar noodzakelijke taak. Door het juiste gereedschap en algoritmen te kiezen, kunnen we dubbele inhoud effectief verwijderen en de kwaliteit en gebruiksefficiëntie van de woordenlijst verbeteren, wat belangrijk is voor zowel wachtwoordkraking als andere toepassingen op basis van deze woordenlijst.