
패턴 논리와 표현식을 사용하여 워드리스트를 생성합니다.
[!NOTE] 이 프로젝트는 버전 7.0.2부터
fuse/fuse-generator에서mapchar로 이름이 변경되었습니다. PyPI 패키지, CLI 명령어, Python 패키지 이름 모두 그에 맞게 변경되었습니다. 이전 이름을 사용 중이셨다면 설치와 임포트를 업데이트해 주세요.
[!NOTE] PyPI 버전의 경우
pipx또는pip를 사용하여 설치하는 것을 권장합니다.
| 방법 | 참고 |
|---|---|
pipx install mapchar | pip를 pipx 대신 사용할 수 있습니다 |
git clone https://github.com/pwnfo/mapchar.git && cd mapchar && pip install . | GitHub에서 직접 클론하여 설치 |
전체 가이드, 기능 설명 및 고급 예제는 문서를 방문해 주세요.
간단한 표현식에서 워드리스트를 생성하려면:
mapchar '/l{2,4}'
파일과 생성기를 결합하려면:
mapchar '^:^' names.txt pass.txt
출력물을 조작, 필터링 및 저장할 수 있습니다.
일반 옵션:
-h, --help 도움말 메시지를 표시하고 종료
-v, --version 버전 정보를 표시하고 종료
-S, --stats 패턴 통계를 표시하고 종료
-q, --quiet 필수 출력 외에는 표시하지 않음
-n, --non-interactive
실행 전 확인 프롬프트 건너뛰기
생성 옵션:
-d, --delimiter <string>
생성된 항목 사이에 삽입할 문자열
-b, --write-buffer <size>
출력 버퍼 크기
-w, --workers <1-64> 워커 프로세스 수 (기본값: 1)
-k, --flush-threshold <size>
이 바이트 임계값에 도달하면 출력 플러시 (기본값: 512KB)
입력 옵션:
-f, --file <path> 파일에서 패턴 불러오기
-s, --start <word> <word>부터 출력 쓰기 시작
-e, --end <word> <word>에서 출력 쓰기 중단
출력 옵션:
-o, --output <path> 파일로 출력 쓰기
-z, --compress <format>
출력 압축 (지원: gzip, bzip2, lzma)
-l, --compresslevel <level>
선택한 형식의 압축 수준
[...]는 각 위치에 대해 하나의 항목을 생성합니다.예시:
$ mapchar '/l{2,3}'
# 출력: aa, ab, ac, ..., ZY, ZZ
예시: /l/l은 모든 두 글자 조합(대소문자 포함)을 생성합니다.
[abc]는 a, b, c 중 하나의 문자를 선택합니다.|를 사용하여 전체 단어 대안을 구분합니다:
[admin|root|123]는 해당 위치에 admin 또는 root 또는 123을 삽입합니다.||를 사용하여 최상위 표현식을 구분합니다:
mapchar 'admin/d||guest/d'는 두 개의 독립적인 패턴을 연결합니다.-S/--stats 플래그를 사용하여 생성 전에 패턴을 분석할 수 있습니다. 토큰 수, 예상 크기, 범위 필터링 세부 정보를 표시합니다.
mapchar -S '/l{3}||/d{3}'
{N} — 정확히 N회 반복{min,max} — 최소 min회에서 최대 max회까지 반복 (포함)? — 선택 사항 (0회 또는 1회)예시:
$ mapchar '[XYZ]{3}' # XXX, XXY, ..., ZZZ
$ mapchar '[XYZ]{2,5}' # XY, XZ, ..., XYZXY
$ mapchar 'Ryan?/d' # Rya0, Rya1, ..., Ryan9
$ mapchar '[XYZ]?Ryan' # Ryan, XRyan, YRyan, ZRyan
#[1-10] → 1,2,3,4,5,6,7,8,9,10 생성#[1-10:2] → 1,3,5,7,9 생성#[2-10:2] → 2,4,6,8,10 생성이러한 숫자 범위는 표현식의 모든 위치에서 사용할 수 있습니다.
표현식에서 ^를 다음 파일 인수의 플레이스홀더로 사용합니다. 각 ^는 하나의 파일을 소비하고 해당 파일의 줄을 반복합니다.
$ mapchar '^/d' names.txt
# 출력: Bob0, Bob1, ..., Ana0, Ana1, ...
$ mapchar '^-^' names.txt years.txt
# 출력: Bob-1990, Ana-1991, Ryan-1992, ...
파일 이름 앞에 //를 붙이면 파일 경로 대신 인라인 표현식으로 처리합니다.
<@name=expr>을 사용하여 표현식을 출력 라인당 한 번 평가하고 저장한 후 <@name>으로 재사용합니다.
연결과 달리 이는 종속성을 생성하므로 정의와 그 참조 사이에 데카르트 곱이 생성되지 않습니다.
$ mapchar '<@d=/d>-<@d>'
# 출력: 0-0, 1-1, ..., 9-9
$ mapchar '<@x=^>:<@x>' words.txt
# 출력: foo:foo, bar:bar, ...
$ mapchar '<@n=/d{2}>_<@n>'
# 출력: 00_00, 01_01, ..., 99_99
Mapchar는 출력 파일을 쓸 때 실시간 압축을 지원합니다.
# gzip (빠르고 균형 잡힘)
mapchar '/l{5}' -z gzip -o wordlist.txt.gz
# lzma (최고 압축)
mapchar '/l{5}' -z lzma -o wordlist.txt.xz
# bzip2 (중간 수준)
mapchar '/l{5}' -z bzip2 -o wordlist.txt.bz2
\를 사용하여 특수 문자를 이스케이프합니다.
$ mapchar '\/d/d'
# 출력: /d/0, /d/1, ..., /d/9
Mapchar에 기여해 주시길 환영합니다! 새로운 기능 추가, 문서 개선, 버그 수정 등 모든 도움을 소중히 여깁니다.
GitHub 저장소 pwnfo/mapchar에서 이슈를 열거나 풀 리퀘스트를 제출해 주세요.
MIT © Ryan R. <[email protected]>
| 기호 | 의미 |
|---|
/l | 문자 (a–z, A–Z) |
/a | 소문자 (a–z) |
/A | 대문자 (A–Z) |
/d | 숫자 (0–9) |
/D | 0이 아닌 숫자 (1–9) |
/h | 소문자 16진수 (0–9, a–f) |
/H | 대문자 16진수 (0–9, A–F) |
/s | 공백 |
/o | 8진수 (0–7) |
/p | 특수 문자 |
/b | 줄바꿈 (\n) |