
Une bibliothèque Ruby et un CLI pour générer et travailler avec des listes de mots.
Wordlist est une bibliothèque Ruby et un CLI pour lire, combiner, muter et construire des listes de mots (wordlists), efficacement.
.txt, ainsi que des listes de
mots compressées .gz, .bz2, .xz, .zip et .7z..gz, .bz2, .xz, .zip et .7z.wordlist.Ouvrir une liste de mots en lecture :
wordlist = Wordlist.open("passwords.txt")
Ouvrir une liste de mots compressée en lecture :
wordlist = Wordlist.open("rockyou.txt.gz")
Énumérer les éléments d'une liste de mots :
wordlist.each do |word|
puts word
end
Créer une liste en mémoire de mots littéraux :
words = Wordlist::Words["foo", "bar", "baz"]
Concaténer deux listes de mots :
(wordlist1 + wordlist2).each do |word|
puts word
end
Faire l'union de deux listes de mots :
(wordlist1 | wordlist2).each do |word|
puts word
end
Soustraire une liste de mots d'une autre :
(wordlist1 - wordlist2).each do |word|
puts word
end
Combiner chaque mot de wordlist1 avec les mots de wordlist2 :
(wordlist1 * wordlist2).each do |word|
puts word
end
Combiner la liste de mots avec elle-même plusieurs fois :
(wordslist ** 3).each do |word|
puts word
end
Filtrer les doublons de plusieurs listes de mots :
(wordlist1 + wordlist2 + wordlist3).uniq.each do |word|
puts word
end
Convertir chaque mot d'une liste de mots en minuscules :
wordlist.downcase.each do |word|
puts word
end
Convertir chaque mot d'une liste de mots en MAJUSCULES :
wordlist.upcase.each do |word|
puts word
end
Capitaliser chaque mot d'une liste de mots :
wordlist.capitalize.each do |word|
puts word
end
Exécuter String#tr sur chaque mot d'une liste de mots :
wordlist.tr('_','-').each do |word|
puts word
end
Exécuter String#sub sur chaque mot d'une liste de mots :
wordlist.sub("fish","phish").each do |word|
puts word
end
Exécuter String#gsub sur chaque mot d'une liste de mots :
wordlist.gsub(/\d+/,"").each do |word|
puts word
end
Effectue toutes les mutations possibles de chaque mot d'une liste de mots :
wordlist.mutate(/[oae]/, {'o' => '0', 'a' => '@', 'e' => '3'}).each do |word|
puts word
end
# dog
# d0g
# firefox
# fir3fox
# firef0x
# fir3f0x
# ...
Énumère toutes les variations de casse possibles de chaque mot d'une liste de mots :
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
Ajouter des mots individuels :
builder.add(word)
Ajouter un tableau de mots :
builder.append(words)
Analyser du texte :
builder.parse(text)
Analyser le contenu d'un fichier :
builder.parse_file(path)
zcat/gzip (pour lire/écrire des listes de mots .gz)bzcat/bzip2 (pour lire/écrire des listes de mots .bz2)xzcat/xz (pour lire/écrire des listes de mots .xz)unzip/zip (pour lire/écrire des listes de mots .zip)7za (pour lire/écrire des listes de mots .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
Lire une liste de mots :
$ wordlist rockyou.txt.gz
Lire plusieurs listes de mots :
$ wordlist sport_teams.txt beers.txt
Combiner chaque mot d'une liste de mots avec ceux d'une autre :
$ wordlist sport_teams.txt -p beers.txt -p all_four_digits.txt
coors0000
coors0001
coors0002
coors0003
...
Combiner chaque mot d'une liste de mots avec elle-même, N fois :
$ wordlist words.txt -P 3
Muter chaque mot d'une liste de mots :
$ wordlist passwords.txt -m o:0 -m e:3 -m a:@
dog
d0g
firefox
fir3fox
firef0x
fir3f0x
...
Exécuter une commande sur chaque mot de la liste de mots :
$ wordlist directories.txt --exec "curl -X POST -F 'user=joe&password={}' -o /dev/null -w '%{http_code} {}' https://$TARGET/login"
Construire une liste de mots à partir d'un répertoire de fichiers .txt :
$ wordlist --build wordlist.txt dir/*.txt
Construire une liste de mots à partir de 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
Voir {file:LICENSE.txt} pour plus de détails.