1. 중복 데이터의 출처와 영향 이해
먼저, 왜 이렇게 많은 중복 데이터가 생성되는지 이해해야 합니다. 사전 파일을 구축하는 동안 여러 데이터 소스에서 데이터를 수집할 수 있으며 이러한 데이터 소스 사이에 부분적으로 중첩이 있을 수 있습니다. 예를 들어, 서로 다른 단어 리스트, 일반적인 암호 세트, 다양한 문자 조합 리스트 등에서 데이터를 수집할 때, 일부 기본 단어 또는 간단한 암호 조합이 여러 소스에 존재할 수 있습니다.
이러한 중복 데이터는 많은 부정적인 영향을 미칠 수 있습니다. 스토리지 측면에서 볼 때, 2T의 공간은 이미 매우 방대합니다. 만약 중복되는 콘텐츠가 많이 들어 있다면 귀중한 스토리지 공간을 낭비하는 것과 같습니다. 실제로 이 사전 파일을 사용하여 비밀번호 해독이나 기타 작업을 수행할 때 내용이 중복되면 불필요한 검색 및 비교 작업이 발생할 수 있습니다. 예를 들어, 암호 해독에서 알고리즘이 사전의 내용과 대상 암호를 하나씩 비교해야 한다면, 반복되는 내용은 비교 횟수를 증가시켜 전체 해독 과정의 속도를 늦추게 된다.
Ⅱ. 텍스트 처리 도구 기반 필터링 방법
윈도우 시스템 하의 도구 사용
- PowerShell 사용
- 윈도우 시스템에서 PowerShell은 풍부한 텍스트 처리 기능을 제공합니다. 다음 PowerShell 스크립트를 사용하여 중복 행을 제거할 수 있습니다.
```powershell
$lines = Get - Content "dictionary.txt"
$uniqueLines = @()
foreach ($line in $line) {
if ($uniqueLines - $line이 포함되지 않음) {
```
이 스크립트는 먼저 "dictionary.txt"의 모든 행을 하나의 배열 "$lines"로 읽습니다. 그런 다음 루프를 통해 각 행을 순회하고 행이 새 배열 "$uniqueLines"에 없으면 이 새 배열에 추가합니다. 마지막으로 새 배열의 내용을 "unique_dictionary.txt"에 저장합니다.
분할정복 알고리즘
- 우리의 사전 파일은 매우 크기(2T) 때문에 직접 처리 시 메모리 부족 등의 문제가 발생할 수 있습니다. 분할 정복 알고리즘은 이 문제를 잘 해결할 수 있습니다 우리는 이 큰 파일을 여러 개의 작은 하위 파일로 나눌 수 있다. 예를 들어, 특정 행 수나 파일 크기에 따라 분할할 수 있습니다.
- 그런 다음, 각 서브 파일별로 반복 필터링을 수행한다. 처리된 하위 파일을 하나의 파일로 다시 병합합니다. 병합 과정에서 서로 다른 하위 파일 간에 동일한 내용이 있을 수 있으므로 중복된 내용이 있는지 다시 확인해야 합니다.
4. 필터링 결과 확인
반복 필터링을 완료한 후 결과가 올바른지 확인해야 합니다. 무작위로 줄을 추출하고 원본 파일과 필터링된 파일에서 해당 줄이 얼마나 나타나는지 확인하는 것과 같은 간단한 방법을 사용할 수 있습니다. 원본 파일에서 여러 번 나타나고 필터링된 파일에서는 한 번만 나타나면 필터링이 유효합니다.
또한 원본 파일과 필터링된 파일의 크기를 비교할 수 있습니다. 필터링된 파일 크기가 원본 파일보다 상당히 작고 후속 테스트(예: 이 사전 파일을 사용하여 간단한 비밀번호 검색 테스트를 수행하여 제대로 작동하는지 확인하고 존재해야 할 비밀번호가 누락되지 않는지 확인)에서 정상적으로 작동하는 경우 필터링을 반복하면 좋은 결과를 얻을 수 있음을 나타낼 수도 있습니다.
저희 서버는 512G 메모리, 고속 NVMe 프로토콜 하드 드라이브 서버를 사용합니다. 성공적으로 처리하는 데 보름이 걸렸고, 효율적인 처리 스크립트 세트를 모색했습니다. 유형의 수요가 있으면 웹사이트 고객 서비스에 연락하여 교류하고, 반복 과정에서 밟은 함정을 필터링하고, 자동 처리 스크립트를 작성할 수 있습니다!
2T의 텍스트 유형 사전 파일에서 중복된 내용을 필터링하는 것은 어렵지만 매우 필요한 작업입니다. 도구와 알고리즘을 합리적으로 선택함으로써 중복된 콘텐츠를 효과적으로 제거하고 사전 파일의 품질과 사용 효율성을 향상시킬 수 있습니다. 이는 이 사전 파일을 기반으로 한 비밀번호 해독이나 기타 응용 시나리오에서 매우 중요합니다.