사용자 지정 단어 목록 생성 및 관리

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 표준 Linux 명령줄 유틸리티를 사용하여 사용자 지정 단어 목록 (wordlist) 을 생성하고 관리하는 기본적인 기술을 탐구합니다. 단어 목록은 암호 무차별 대입 (brute-forcing) 부터 애플리케이션 퍼징 (fuzzing), 텍스트 데이터 분석에 이르기까지 다양한 사이버 보안 및 데이터 처리 작업에서 매우 중요합니다. 간단한 단어 목록을 생성하고, 여러 목록을 결합하고, 중복 항목을 제거하고, 알파벳순으로 정렬하고, 길이에 따라 필터링하는 방법을 배우게 됩니다. 이 실습이 끝나면 특정 요구 사항에 맞는 사용자 지정 단어 목록을 만들기 위해 텍스트 파일을 효율적으로 조작하는 방법에 대한 탄탄한 이해를 갖게 될 것입니다.

간단한 사용자 지정 단어 목록 생성

이 단계에서는 echo 명령과 리디렉션 (redirection) 을 사용하여 기본적인 사용자 지정 단어 목록을 만드는 방법을 배웁니다. 이것은 각 단어가 새 줄에 포함된 파일을 생성하는 가장 간단한 방법입니다.

먼저, 프로젝트 디렉토리에 있지 않다면 해당 디렉토리로 이동합니다.

cd ~/project

이제 몇 개의 단어를 포함하는 my_wordlist.txt라는 간단한 단어 목록을 생성합니다.

echo -e "apple\nbanana\norange\ngrape" > my_wordlist.txt

-e 옵션은 백슬래시 이스케이프 (backslash escape) 의 해석을 활성화하며, \n은 새 줄을 생성합니다. >는 출력을 지정된 파일로 리디렉션하며, 파일이 존재하지 않으면 생성하고 존재하면 덮어씁니다.

새로 생성된 단어 목록의 내용을 확인하려면 cat 명령을 사용합니다.

cat my_wordlist.txt

다음과 같은 출력이 표시되어야 합니다.

apple
banana
orange
grape

다음으로, 기존 내용을 덮어쓰지 않고 동일한 단어 목록에 단어를 더 추가해 보겠습니다. 추가 (appending) 를 위해 >> 연산자를 사용합니다.

echo -e "kiwi\nstrawberry\nblueberry" >> my_wordlist.txt

업데이트된 내용을 확인합니다.

cat my_wordlist.txt

이제 출력에 새로 추가된 단어가 포함되어야 합니다.

apple
banana
orange
grape
kiwi
strawberry
blueberry

이 방법은 작고 사용자 지정된 단어 목록을 빠르게 생성하거나 기존 목록에 항목을 추가하는 데 유용합니다.

여러 단어 목록 결합

이 단계에서는 여러 단어 목록의 내용을 단일 통합 단어 목록으로 결합하는 방법을 배웁니다. 이는 병합하려는 다양한 단어 소스가 있을 때 흔히 수행하는 작업입니다.

먼저, additional_words.txt라는 또 다른 작은 단어 목록을 생성합니다.

echo -e "melon\npeach\nplum" > additional_words.txt

내용을 확인합니다.

cat additional_words.txt

다음과 같이 표시되어야 합니다.

melon
peach
plum

이제 my_wordlist.txtadditional_words.txtcombined_wordlist.txt라는 새 파일로 결합합니다. cat 명령을 사용하여 파일을 연결 (concatenate) 하고 출력을 리디렉션합니다.

cat my_wordlist.txt additional_words.txt > combined_wordlist.txt

combined_wordlist.txt의 내용을 검사합니다.

cat combined_wordlist.txt

출력은 두 파일의 모든 단어가 연결된 순서대로 표시됩니다.

apple
banana
orange
grape
kiwi
strawberry
blueberry
melon
peach
plum

이 기법은 매우 유연하며 어떤 수의 단어 목록이든 결합하는 데 사용할 수 있습니다.

단어 목록에서 중복 제거

단어 목록에는 종종 중복 항목이 포함되어 있으며, 특히 여러 소스를 결합한 후에 더욱 그렇습니다. 이 단계에서는 sortuniq 명령을 사용하여 이러한 중복을 제거하는 방법을 배웁니다. uniq 명령은 인접한 중복 줄만 감지하므로 파일을 먼저 정렬하는 것이 중요합니다.

이를 시연하기 위해 의도적으로 combined_wordlist.txt에 중복 항목을 추가해 보겠습니다.

echo -e "apple\nbanana\nmelon" >> combined_wordlist.txt

이제 combined_wordlist.txt의 내용을 보고 중복을 확인합니다.

cat combined_wordlist.txt

apple, banana, melon이 여러 번 나타나는 것을 알 수 있습니다.

중복을 제거하려면 먼저 파일을 정렬한 다음 출력을 uniq로 파이프합니다. 결과를 unique_wordlist.txt라는 새 파일에 저장합니다.

sort combined_wordlist.txt | uniq > unique_wordlist.txt

이제 unique_wordlist.txt를 검사합니다.

cat unique_wordlist.txt

출력에는 이제 알파벳순으로 정렬된 고유한 항목만 포함되어야 합니다.

apple
banana
blueberry
grape
kiwi
melon
orange
peach
plum
strawberry

이것은 단어 목록을 정리하는 강력한 명령 조합입니다.

단어 목록 알파벳순으로 정렬

단어 목록을 알파벳순으로 정렬하는 것은 구성, 가독성 향상 및 중복 제거와 같은 다른 작업의 전제 조건으로 자주 유용합니다 (이전 단계에서 보았듯이). 이 단계에서는 단어 목록을 명시적으로 정렬합니다.

unique_wordlist.txtsort 명령을 사용하고 정렬된 출력을 sorted_wordlist.txt에 저장합니다. unique_wordlist.txt는 이미 정렬되어 있지만, 이 단계는 sort 명령을 독립적으로 시연합니다.

sort unique_wordlist.txt > sorted_wordlist.txt

이제 sorted_wordlist.txt의 내용을 확인합니다.

cat sorted_wordlist.txt

출력은 알파벳순으로 정렬된 단어입니다.

apple
banana
blueberry
grape
kiwi
melon
orange
peach
plum
strawberry

sort 명령에는 역순 알파벳순 정렬을 위한 -r 또는 숫자 정렬을 위한 -n과 같은 많은 옵션이 있습니다. 예를 들어, 역순으로 정렬하려면 다음과 같이 합니다.

sort -r unique_wordlist.txt

다음과 같이 출력됩니다.

strawberry
plum
peach
orange
melon
kiwi
grape
blueberry
banana
apple

이 실습에서는 기본 알파벳순 정렬을 사용합니다.

길이별 단어 목록 필터링

때로는 단어 길이를 기준으로 단어 목록을 필터링해야 할 때가 있습니다. 예를 들어, 5 자에서 8 자 사이의 단어만 원할 수 있습니다. 이 단계에서는 awk 명령을 사용하여 단어 길이를 기준으로 필터링합니다.

sorted_wordlist.txt를 필터링하여 길이가 5 자에서 7 자 사이 (포함) 인 단어만 포함하도록 하겠습니다. awklength($0) 함수는 현재 줄 (단어) 의 길이를 반환합니다.

awk 'length($0) >= 5 && length($0) <= 7' sorted_wordlist.txt > filtered_wordlist.txt

이제 filtered_wordlist.txt의 내용을 확인합니다.

cat filtered_wordlist.txt

출력에는 길이 기준을 충족하는 단어만 포함되어야 합니다.

apple
banana
orange
grape
melon
peach

awk 명령을 자세히 살펴보겠습니다.

  • awk: 텍스트 처리를 위한 명령줄 유틸리티입니다.
  • 'length($0) >= 5 && length($0) <= 7': 이것은 awk 프로그램입니다.
    • length($0): 전체 줄의 길이를 반환합니다 ($0은 전체 줄을 참조합니다).
    • >= 5: 길이가 5 보다 크거나 같은지 확인합니다.
    • &&: 논리 AND 연산자입니다.
    • <= 7: 길이가 7 보다 작거나 같은지 확인합니다.
    • 조건이 참이면 awk는 기본적으로 해당 줄을 출력합니다.
  • sorted_wordlist.txt: 입력 파일입니다.
  • > filtered_wordlist.txt: 출력을 새 파일로 리디렉션합니다.

이러한 필터링 기능은 특정 목적을 위해 단어 목록을 다듬는 데 매우 강력합니다.

요약

이 실습에서는 다양한 필수 Linux 명령줄 도구를 사용하여 사용자 지정 단어 목록을 생성하고 관리하는 방법을 성공적으로 배웠습니다. echo와 리디렉션을 사용하여 간단한 단어 목록을 생성하는 것으로 시작하여 cat을 사용하여 여러 목록을 결합했습니다. sortuniq를 결합하여 중복 항목을 제거하는 중요한 기술을 익혔고, 알파벳순으로 단어 목록을 정렬하는 연습을 했습니다. 마지막으로 awk를 사용하여 특정 길이 기준에 따라 단어 목록을 필터링했습니다. 이러한 기술은 텍스트 데이터를 다루는 모든 사람에게 기본적이며, 특히 암호 크래킹, 퍼징 및 데이터 분석과 같은 사이버 보안 작업에 유용합니다. 이제 다양한 요구 사항에 맞게 단어 목록을 조작하고 개선할 수 있는 견고한 기반을 갖추었습니다.