I. Förstå källan och effekterna av duplicerad data
Först måste vi förstå varför det finns så mycket duplicerad data. Under byggandet av ordboken samlas data in från flera källor, och dessa källor har delvis överlappande information. Till exempel kan grundläggande ord eller enkla lösenordskombinationer finnas i flera källor när data samlas in från olika ordlistor, vanliga lösenordsamlingar och olika listor med teckenkombinationer.
Denna duplicerade data har många negativa effekter. Ur lagringssynpunkt är 2 TB redan en enorm mängd, och om det finns mycket duplicerat innehåll slösas dyrbar lagring utan anledning. Vid användning av ordboken för lösenordsbrott eller andra operationer leder den duplicerade informationen till onödiga sök- och jämförelseoperationer. Till exempel, om algoritmen under lösenordsbrott måste jämföra varje rad i ordboken med mållösenordet, ökar antalet jämförelser på grund av den duplicerade informationen, vilket saktar ner hela processen.
II. Filtreringsmetoder med textbearbetningsverktyg
Med verktyg i Windows
- Använd PowerShell
- I Windows erbjuder PowerShell omfattande textbearbetningsfunktioner. Vi kan använda följande PowerShell-skript för att ta bort duplicerade rader:
```powershell
$lines = Get - Content " dictionary.txt"
$uniqueLines = @()
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Det här skriptet läser först alla rader i "dictionary.txt" till en arraynamed "lines". Sedan går man igenom varje rad i en loop och om en rad inte finns i den nya arrayen "uniqueLines" läggs den till i den nya arrayen. Slutligen sparas innehållet i den nya arrayen till "unique_dictionary.txt".
Divisionsalgoritmen
- Eftersom vår ordlistefil är så stor (2T) kan det finnas problem som minnesbrist när man hanterar den direkt. Divisionsalgoritmen kan vara en bra lösning på det här problemet. Vi kan dela upp den stora filen i flera mindre delar. Till exempel kan vi dela upp den efter ett visst antal rader eller filstorlek.
- Sedan filtreras varje del för att ta bort duplikater. De bearbetade delarna sammanfogas sedan till en fil. Under sammanfogningen måste man också kontrollera om det finns duplikater, eftersom det kan finnas samma innehåll i olika delar.
IV. Verifiera filtreringsresultatet
Efter att duplikaterna filtrerats bort måste vi verifiera att resultatet är korrekt. Man kan använda enkla metoder, till exempel att slumpmässigt välja några rader och kontrollera hur många gånger de förekommer i den ursprungliga och den filtrerade filen. Om de förekommer flera gånger i den ursprungliga filen men bara en gång i den filtrerade filen, betyder det att filtreringen har fungerat.
Man kan också jämföra storleken på den ursprungliga och den filtrerade filen. Om den filtrerade filen är betydligt mindre än den ursprungliga och fungerar normalt i efterföljande tester (till exempel genom att använda den här ordlistan för att söka efter lösenord och se om alla lösenord som borde finnas där också finns), betyder det att filtreringen har varit effektiv.
Att filtrera bort duplikater i en 2T textbaserad ordlista är en utmanande men nödvändig uppgift. Genom att välja verktyg och algoritmer på rätt sätt kan vi effektivt ta bort duplikater och förbättra kvaliteten och användbarheten hos ordlistan, vilket är av stor betydelse både för lösenordsbrott och andra applikationer som använder den här ordlistan.