
빠른 비밀번호 워드리스트 생성기, Smartlist 생성 및 비밀번호 하이브리드 마스크 분석 도구로, 순수하고 안전한 Rust로 작성되었습니다.
Cracken은 안전한 순수 Rust로 작성된 빠른 비밀번호 단어 목록 생성기, Smartlist 생성 및 비밀번호 하이브리드-마스크 분석 도구입니다([talk/][talk]에서 더 자세히). [maskprocessor][mp], [hashcat][hashcat], [Crunch][crunch] 및 🤗 HuggingFace의 [tokenizers][tokenizers]와 같은 훌륭한 도구에서 영감을 받았습니다.
[DeepSec2021][talk-abstract]에서 우리는 NLP tokenizers를 활용하여 비밀번호에서 공통 하위 문자열을 이용한 Hybrid-Masks로 비밀번호를 분석하는 새로운 방법을 발표했습니다([talk/][talk]에서 더 자세히).
우리의 방법은 단순한 문자 마스크 대신 비밀번호를 하위 단어(subwords)로 분할합니다. HelloWorld123!는 ['Hello', 'World', '123!']로 분할되는데, 이 세 하위 단어는 다른 비밀번호에서 매우 일반적입니다.
?w1?w2?l?d)
전체 테이블 여기
Hybrid-Masks 생성 - 매우 매우 빠름 🦸⚡💨 (성능 섹션 참조)Smartlists 구축 - 주어진 비밀번호 파일에서 간결하고 대표적인 하위 단어 목록 (🤗 HuggingFace의 [tokenizers][tokenizers] 사용)Hybrid-Masks 분석 - 더 나은 비밀번호 후보를 위한 통계 구축 (역시 매우 빠름)cracken -w rockyou.txt -w 100-most-common.txt '?w1?w2?d?d?d?d?s'hashcat, john 또는 선호하는 비밀번호 크래커로 파이프할 수 있습니다.cracken createcracken entropyHybrid-Masks를 사용하여 비밀번호 후보 빠르게 생성 - cracken generate -i hybrid-masks.txt자세한 내용은 사용법 섹션 참조
다운로드 (현재 리눅스만 지원): [최신 릴리스 🔗][releases]
더 많은 설치 옵션은 설치 섹션 참조
Cracken 실행:
대문자로 시작하고 6개의 소문자와 숫자로 끝나는 길이 8의 모든 단어 생성:
$ cracken -o pwdz.lst '?u?l?l?l?l?l?l?d'
두 개의 단어 목록에서 연도 접미사(1000-2999)를 포함한 단어 생성 <firstname><lastname><year>
$ cracken --wordlist firstnames.txt --wordlist lastnames.lst --charset '12' '?w1?w2?1?d?d?d'
rockyou.txt에서 추출한 하위 단어로 크기 50k의 Smartlist 생성
$ cracken create -f rockyou.txt -m 50000 --smartlist smart.lst
Smartlist를 사용하여 비밀번호 HelloWorld123!의 하이브리드 마스크 엔트로피 추정
$ cracken entropy -f smart.lst 'HelloWorld123!'
hybrid-min-split: ["hello", "world1", "2", "3", "!"]
hybrid-mask: ?w1?w1?d?d?s
hybrid-min-entropy: 42.73
--
charset-mask: ?l?l?l?l?l?l?l?l?l?l?d?d?d?s
charset-mask-entropy: 61.97
이 글을 작성하는 시점에서 Cracken은 아마도 세계에서 가장 빠른 단어 목록 생성기일 것입니다:
Cracken은 C로 작성된 hashcat의 빠른 [maskprocessor][mp]보다 약 25% 향상된 성능을 제공합니다.
Cracken은 코어당 약 2 GB/s를 생성할 수 있습니다.
자세한 내용은 benchmarks/ 🔗 참조
속도가 중요한 이유는 무엇일까요? 일반 GPU는 비밀번호 해시 함수에 따라 초당 수십억 개의 비밀번호를 테스트할 수 있습니다. 단어 목록 생성기가 크래킹 도구가 처리할 수 있는 것보다 초당 더 적은 단어를 생성하면 크래킹 속도가 저하됩니다.
Cracken은 A* 알고리즘을 사용하여 비밀번호를 매우 빠르게 분석합니다. 약 100k 비밀번호/초 속도로 비밀번호 파일의 최소 하이브리드-마스크를 찾을 수 있습니다. (cracken entropy -f words1.txt -f words2.txt ... -p pwds.txt)
Cracken 설치 또는 소스에서 컴파일
최신 릴리스 다운로드: [releases 🔗][releases]
Cracken은 Rust로 작성되었으며 컴파일하려면 rustc가 필요합니다. Cracken은 Rust가 지원하는 모든 플랫폼을 지원해야 합니다.
[cargo 설치 지침 🔗][rustc-installation]
소스에서 빌드하는 두 가지 옵션이 있습니다 - crates.io에서 cargo로 설치 (권장) 또는 소스에서 수동 컴파일.
cargo로 설치:
$ cargo install cracken
Cracken 클론:
$ git clone https://github.com/shmuelamar/cracken
Cracken 빌드:
$ cd cracken
$ cargo build --release
실행:
$ ./target/release/cracken --help
$ cracken --help
Cracken v1.0.0 - a fast password wordlist generator
USAGE:
cracken [SUBCOMMAND]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
generate (default) - Generates newline separated words according to given mask and wordlist files
create Create a new smartlist from input file(s)
entropy
Computes the estimated entropy of password or password file.
The entropy of a password is the log2(len(keyspace)) of the password.
There are two types of keyspace size estimations:
* mask - keyspace of each char (digit=10, lowercase=26...).
* hybrid - finding minimal split into subwords and charsets.
For specific subcommand help run: cracken <subcommand> --help
Example Usage:
## Generate Subcommand Examples:
# all digits from 00000000 to 99999999
cracken ?d?d?d?d?d?d?d?d
# all digits from 0 to 99999999
cracken -m 1 ?d?d?d?d?d?d?d?d
# words with pwd prefix - pwd0000 to pwd9999
cracken pwd?d?d?d?d
# all passwords of length 8 starting with upper then 6 lowers then digit
cracken ?u?l?l?l?l?l?l?d
# same as above, write output to pwds.txt instead of stdout
cracken -o pwds.txt ?u?l?l?l?l?l?l?d
# custom charset - all hex values
cracken -c 0123456789abcdef '?1?1?1?1'
# 4 custom charsets - the order determines the id of the charset
cracken -c 01 -c ab -c de -c ef '?1?2?3?4'
# 4 lowercase chars with years 2000-2019 suffix
cracken -c 01 '?l?l?l?l20?1?d'
# starts with firstname from wordlist followed by 4 digits
cracken -w firstnames.txt '?w1?d?d?d?d'
# starts with firstname from wordlist with lastname from wordlist ending with symbol
cracken -w firstnames.txt -w lastnames.txt -c '!@#$' '?w1?w2?1'
# repeating wordlists multiple times and combining charsets
cracken -w verbs.txt -w nouns.txt '?w1?w2?w1?w2?w2?d?d?d'
## Create Smartlists Subcommand Examples:
# create smartlist from single file into smart.txt
cracken create -f rockyou.txt --smartlist smart.txt
# create smartlist from multiple files with multiple tokenization algorithms
cracken create -t bpe -t unigram -t wordpiece -f rockyou.txt -f passwords.txt -f wikipedia.txt --smartlist smart.txt
# create smartlist with minimum subword length of 3 and max numbers-only subwords of size 6
cracken create -f rockyou.txt --min-word-len 3 --numbers-max-size 6 --smartlist smart.txt
## Entropy Subcommand Examples:
# estimating entropy of a password
cracken entropy --smartlist vocab.txt 'helloworld123!'
# estimating entropy of a passwords file with a charset mask entropy (default is hybrid)
cracken entropy --smartlist vocab.txt -t charset -p passwords.txt
# estimating the entropy of a passwords file
cracken entropy --smartlist vocab.txt -p passwords.txt
cracken-v1.0.0 linux-x86_64 compiler: rustc 1.56.1 (59eed8a2a 2021-11-01)
more info at: https://github.com/shmuelamar/cracken
$ cracken generate --help
cracken-generate
(default) - Generates newline separated words according to given mask and wordlist files
USAGE:
cracken generate [FLAGS] [OPTIONS] <mask> --masks-file <masks-file>
FLAGS:
-h, --help
Prints help information
-s, --stats
prints the number of words this command will generate and exits
-V, --version
Prints version information
OPTIONS:
-c, --custom-charset <custom-charset>...
custom charset (string of chars). up to 9 custom charsets - ?1 to ?9. use ?1 on the mask for the first charset