
워드리스트를 생성하고 작업하기 위한 Ruby 라이브러리 및 CLI입니다.
Wordlist는 단어 목록(wordlist)을 효율적으로 읽고, 결합하고, 변형하고, 구축하기 위한 Ruby 라이브러리이자 CLI입니다.
.txt 단어 목록과 .gz, .bz2, .xz, .zip, .7z로 압축된 단어 목록 읽기를 지원합니다..gz, .bz2, .xz, .zip, .7z 압축을 지원합니다.wordlist 명령어도 제공합니다.읽기용 단어 목록 열기:
wordlist = Wordlist.open("passwords.txt")
읽기용 압축된 단어 목록 열기:
wordlist = Wordlist.open("rockyou.txt.gz")
단어 목록 순회하기:
wordlist.each do |word|
puts word
end
리터럴 단어들의 인메모리 목록 생성하기:
words = Wordlist::Words["foo", "bar", "baz"]
두 단어 목록을 서로 연결(concat)하기:
(wordlist1 + wordlist2).each do |word|
puts word
end
두 단어 목록의 합집합(union) 구하기:
(wordlist1 | wordlist2).each do |word|
puts word
end
한 단어 목록에서 다른 단어 목록을 차집합(subtract)하기:
(wordlist1 - wordlist2).each do |word|
puts word
end
wordlist1의 모든 단어를 wordlist2의 단어들과 결합하기:
(wordlist1 * wordlist2).each do |word|
puts word
end
단어 목록을 그 자체와 여러 번 결합하기:
(wordslist ** 3).each do |word|
puts word
end
여러 단어 목록에서 중복 제거하기:
(wordlist1 + wordlist2 + wordlist3).uniq.each do |word|
puts word
end
단어 목록의 모든 단어를 소문자로 변환하기:
wordlist.downcase.each do |word|
puts word
end
단어 목록의 모든 단어를 대문자로 변환하기:
wordlist.upcase.each do |word|
puts word
end
단어 목록의 모든 단어를 첫 글자만 대문자로 변환하기:
wordlist.capitalize.each do |word|
puts word
end
단어 목록의 모든 단어에 String#tr 실행하기:
wordlist.tr('_','-').each do |word|
puts word
end
단어 목록의 모든 단어에 String#sub 실행하기:
wordlist.sub("fish","phish").each do |word|
puts word
end
단어 목록의 모든 단어에 String#gsub 실행하기:
wordlist.gsub(/\d+/,"").each do |word|
puts word
end
단어 목록의 각 단어에 대해 가능한 모든 변형을 수행하기:
wordlist.mutate(/[oae]/, {'o' => '0', 'a' => '@', 'e' => '3'}).each do |word|
puts word
end
# dog
# d0g
# firefox
# fir3fox
# firef0x
# fir3f0x
# ...
단어 목록의 모든 단어에 대해 가능한 모든 대소문자 변형을 열거하기:
wordlist.mutate_case.each do |word|
puts word
end
# cat
# Cat
# cAt
# caT
# CAt
# CaT
# cAT
# CAT
# ...
Wordlist::Builder.open('path/to/file.txt.gz') do |builder|
# ...
end
개별 단어 추가하기:
builder.add(word)
단어 배열(Array) 추가하기:
builder.append(words)
텍스트 파싱하기:
builder.parse(text)
파일 내용 파싱하기:
builder.parse_file(path)
zcat/gzip (.gz 단어 목록 읽기/쓰기용)bzcat/bzip2 (.bz2 단어 목록 읽기/쓰기용)xzcat/xz (.xz 단어 목록 읽기/쓰기용)unzip/zip (.zip 단어 목록 읽기/쓰기용)7za (.7z 단어 목록 읽기/쓰기용)$ gem install wordlist
gem.add_dependency 'wordlist', '~> 1.0'
gem 'wordlist', '~> 1.0'
usage: wordlist { [options] WORDLIST ... | --build WORDLIST [FILE ...] }
Wordlist Reading Options:
-f {txt|gzip|bz2|xz|zip|7zip}, Sets the desired wordlist format
--format
--exec COMMAND Runs the command with each word from the wordlist.
The string "{}" will be replaced with each word.
Wordlist Operations:
-U, --union WORDLIST Unions the wordlist with the other WORDLIST
-I, --intersect WORDLIST Intersects the wordlist with the other WORDLIST
-S, --subtract WORDLIST Subtracts the words from the WORDLIST
-p, --product WORDLIST Combines every word with the other words from WORDLIST
-P, --power NUM Combines every word with the other words from WORDLIST
-u, --unique Filters out duplicate words
Wordlist Modifiers:
-C, --capitalize Capitalize each word
--uppercase, --upcase Converts each word to UPPERCASE
--lowercase, --downcase Converts each word to lowercase
-t, --tr CHARS:REPLACE Translates the characters of each word
-s, --sub PATTERN:SUB Replaces PATTERN with SUB in each word
-g, --gsub PATTERN:SUB Replaces all PATTERNs with SUB in each word
-m, --mutate PATTERN:SUB Performs every possible substitution on each word
-M, --mutate-case Switches the case of each letter in each word
Wordlist Building Options:
-b, --build WORDLIST Builds a wordlist
-a, --[no-]append Appends to the new wordlist instead of overwriting it
-L, --lang LANG The language to expect
--stop-words WORDS... Ignores the stop words
--ignore-words WORDS... Ignore the words
--[no-]digits Allow digits in the middle of words
--special-chars CHARS Allows the given special characters inside of words
--[no-]numbers Parses whole numbers in addition to words
--[no-]acronyms Parses acronyms in addition to words
--[no-]normalize-case Converts all words to lowercase
--[no-]normalize-apostrophes Removes "'s" from words
--[no-]normalize-acronyms Removes the dots from acronyms
General Options:
-V, --version Print the version
-h, --help Print the help output
Examples:
wordlist rockyou.txt.gz
wordlist passwords_short.txt passwords_long.txt
wordlist sport_teams.txt -p beers.txt -p digits.txt
cat *.txt | wordlist --build custom.txt
단어 목록 읽기:
$ wordlist rockyou.txt.gz
여러 단어 목록 읽기:
$ wordlist sport_teams.txt beers.txt
한 단어 목록의 모든 단어를 다른 단어 목록과 결합하기:
$ wordlist sport_teams.txt -p beers.txt -p all_four_digits.txt
coors0000
coors0001
coors0002
coors0003
...
한 단어 목록의 모든 단어를 그 자체와 N번 결합하기:
$ wordlist words.txt -P 3
단어 목록의 모든 단어 변형하기:
$ wordlist passwords.txt -m o:0 -m e:3 -m a:@
dog
d0g
firefox
fir3fox
firef0x
fir3f0x
...
단어 목록의 각 단어에 대해 명령어 실행하기:
$ wordlist directories.txt --exec "curl -X POST -F 'user=joe&password={}' -o /dev/null -w '%{http_code} {}' https://$TARGET/login"
.txt 파일 디렉토리에서 단어 목록 구축하기:
$ wordlist --build wordlist.txt dir/*.txt
STDIN에서 단어 목록 구축하기:
$ cat *.txt | wordlist --build wordlist.txt
user system total real
Wordlist::Builder#parse_text (size=5.4M) 1.943605 0.003809 1.947414 ( 1.955960)
Wordlist::File#each (N=1000) 0.000544 0.000000 0.000544 ( 0.000559)
Wordlist::File#concat (N=1000) 0.001143 0.000000 0.001143 ( 0.001153)
Wordlist::File#subtract (N=1000) 0.001360 0.000000 0.001360 ( 0.001375)
Wordlist::File#product (N=1000) 0.536518 0.005959 0.542477 ( 0.545536)
Wordlist::File#power (N=1000) 0.000015 0.000001 0.000016 ( 0.000014)
Wordlist::File#intersect (N=1000) 0.001389 0.000000 0.001389 ( 0.001407)
Wordlist::File#union (N=1000) 0.001310 0.000000 0.001310 ( 0.001317)
Wordlist::File#uniq (N=1000) 0.000941 0.000000 0.000941 ( 0.000948)
Wordlist::File#tr (N=1000) 0.000725 0.000000 0.000725 ( 0.000736)
Wordlist::File#sub (N=1000) 0.000863 0.000000 0.000863 ( 0.000870)
Wordlist::File#gsub (N=1000) 0.001240 0.000000 0.001240 ( 0.001249)
Wordlist::File#capittalize (N=1000) 0.000821 0.000000 0.000821 ( 0.000828)
Wordlist::File#upcase (N=1000) 0.000760 0.000000 0.000760 ( 0.000769)
Wordlist::File#downcase (N=1000) 0.000544 0.000001 0.000545 ( 0.000545)
Wordlist::File#mutate (N=1000) 0.004656 0.000000 0.004656 ( 0.004692)
Wordlist::File#mutate_case (N=1000) 24.178521 0.000000 24.178521 ( 24.294962)
Copyright (c) 2009-2023 Hal Brodigan
자세한 내용은 {file:LICENSE.txt}를 참조하십시오.