I. Pochopení zdroje a dopadu duplicitních dat
Nejprve musíme pochopit, proč vzniká tolik duplicitních dat. Při vytváření slovníkového souboru může docházet ke shromažďování dat z více zdrojů, mezi nimiž existuje částečné překrytí. Například při shromažďování dat z různých seznamů slov, souborů běžných hesel, seznamů kombinací znaků atd. mohou některá základní slova nebo jednoduché kombinace hesel existovat ve více zdrojích.
Tato duplicitní data mohou mít mnoho negativních důsledků. Z hlediska úložiště je 2 TB již velmi velké množství, a pokud obsahuje mnoho duplicitních dat, znamená to plýtvání cenným úložným prostorem. Při praktickém používání tohoto slovníkového souboru k prolomení hesel nebo jiným operacím mohou duplicitní obsahy vést ke zbytečným vyhledávacím a porovnávacím operacím. Například při prolomení hesla musí algoritmus porovnat obsah slovníku s cílovým heslem, a duplicitní obsahy zvýší počet porovnání a zpomalí celý proces prolomení hesla.
II. Metody filtrování pomocí nástrojů pro zpracování textu
Pomocí nástrojů v systému Windows
- Pomocí PowerShellu
- V systému Windows poskytuje PowerShell bohaté funkce pro zpracování textu. Můžeme použít následující PowerShell skript k odstranění duplicitních řádků:
```powershell
""
foreach ($line in $lines) {
if ($uniqueLines -notcontains $line) {
$uniqueLines += $line
}
}
$uniqueLines | Set - Content "unique_dictionary.txt"
```
Tento skript nejprve načte všechny řádky z „dictionary.txt“ do pole „$lines“. Poté pomocí smyčky projde každý řádek a pokud se nějaký řádek nenachází v novém poli „$uniqueLines“, přidá jej do tohoto nového pole. Nakonec uloží obsah nového pole do „unique_dictionary.txt“.
Rozdělení pomocí algoritmu
- Vzhledem k tomu, že náš slovníkový soubor je velmi velký (2 TB), mohou při jeho přímém zpracování nastat problémy, jako je nedostatek paměti. Algoritmus rozdělení může tento problém dobře vyřešit. Můžeme tento velký soubor rozdělit na několik menších podsouborů. Například jej můžeme rozdělit podle určitého počtu řádků nebo velikosti souboru.
- Poté každý podsoubor zpracujeme samostatně pomocí filtrování duplicit. Zpracované podsoubory opět spojíme do jednoho souboru. Během spojování je také nutné znovu zkontrolovat, zda neexistují duplicity, protože mezi různými podsoubory mohou být stejné řádky.
IV. Ověření výsledků filtrování
Po dokončení filtrování duplicit je nutné výsledky ověřit. Lze k tomu použít některé jednoduché metody, například náhodné vybrání některých řádků a zkontrolovat, kolikrát se tyto řádky objevily v původním a ve zfiltrovaném souboru. Pokud se v původním souboru vyskytly několikrát, ale ve zfiltrovaném souboru jen jednou, znamená to, že filtrování bylo úspěšné.
Kromě toho lze porovnat velikost původního a zfiltrovaného souboru. Pokud je velikost zfiltrovaného souboru výrazně menší než velikost původního souboru a při následném testování (například pomocí tohoto slovníkového souboru pro jednoduché vyhledávání hesel a kontrola, zda funguje správně a nebyla ztracena žádná hesla, která by měla být obsažena) se chová normálně, lze konstatovat, že filtrování duplicit proběhlo úspěšně a efektivně.
Filtrace duplicit ve 2T souboru typového slovníku je náročný, ale velmi potřebný úkol. Pomocí vhodného výběru nástrojů a algoritmů můžeme duplicity efektivně odstranit a zvýšit kvalitu a využitelnost slovníkového souboru, což má význam jak pro crackování hesel, tak pro další aplikace využívající tento slovníkový soubor.