[!NOTE] 此项目从版本 7.0.2 开始由
fuse/fuse-generator重命名为mapchar。 PyPI 包、CLI 命令和 Python 包名称均已相应更改。 如果您正在使用旧名称,请更新您的安装和导入。
[!NOTE] 建议使用
pipx或pip安装 PyPI 版本。
| 方法 | 说明 |
|---|---|
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 <格式>
压缩输出(支持:gzip, bzip2, lzma)
-l, --compresslevel <级别>
所选格式的压缩级别
[...] 每个位置产生一个条目。示例:
$ mapchar '/l{2,3}'
# output: 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
# output: Bob0, Bob1, ..., Ana0, Ana1, ...
$ mapchar '^-^' names.txt years.txt
# output: Bob-1990, Ana-1991, Ryan-1992, ...
文件名前加 // 可将其视为内联表达式而不是文件路径。
使用 <@name=expr> 对每一行输出 计算一次 表达式并存储,然后使用 <@name> 重用。
与连接不同,这引入了依赖,因此在定义及其引用之间不会产生笛卡尔积。
$ mapchar '<@d=/d>-<@d>'
# output: 0-0, 1-1, ..., 9-9
$ mapchar '<@x=^>:<@x>' words.txt
# output: foo:foo, bar:bar, ...
$ mapchar '<@n=/d{2}>_<@n>'
# output: 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'
# output: /d/0, /d/1, ..., /d/9
欢迎为 Mapchar 做出贡献!无论是添加新功能、改进文档还是修复错误,我们都非常感谢您的帮助。
欢迎在我们的 GitHub 仓库 pwnfo/mapchar 上提交 issue 或 pull request。
MIT © Ryan R. <[email protected]>
| 符号 | 含义 |
|---|
/l | 字母 (a–z, A–Z) |
/a | 小写字母 (a–z) |
/A | 大写字母 (A–Z) |
/d | 数字 (0–9) |
/D | 非零数字 (1–9) |
/h | 小写十六进制 (0–9, a–f) |
/H | 大写十六进制 (0–9, A–F) |
/s | 空格 |
/o | 八进制数字 (0–7) |
/p | 特殊字符 |
/b | 换行符 (\n) |