Ubuntu 22.04下crunch工具结合模式与字符集文件时模式规则不生效的问题咨询及需求实现
Ubuntu 22.04下crunch工具结合模式与字符集文件时模式规则不生效的问题咨询及需求实现
我明白你遇到的问题了——当你在Ubuntu 22.04里用crunch工具结合charset.lst和-t模式参数时,模式规则没按预期生效,生成的结果里混进了不符合「大写-小写-小写-小写」格式的内容,比如DUXA这种后面出现大写的情况,对吧?我来帮你拆解问题原因,再一步步给出解决方案:
问题根源分析
你之前用的命令里,指定了-f /usr/share/crunch/charset.lst mixalpha,而mixalpha这个内置字符集是大小写字母混合的。crunch里-t的符号(比如, 代表大写、@代表小写)是和你指定的字符集绑定的:当你只指定一个混合字符集时,@会匹配整个集合里的所有字符(包括大写),这就导致后面的位置出现了大写字母,直接破坏了你想要的格式。
解决当前4位字符的需求
你需要把「首字母大写」和「后续小写」的字符集分开指定,让-t的每个符号对应单独的字符集:
ualpha是charset.lst里内置的大写字母集合(A-Z)lalpha是内置的小写字母集合(a-z)
用这个命令就能生成完全符合要求的结果:
crunch 4 4 -f /usr/share/crunch/charset.lst ualpha,lalpha -t ,@@@ -d 2@ -o /mnt/hgfs/ZZZ/LIST/out.txt
这个命令的关键细节:
-f ualpha,lalpha:指定两个独立字符集,分别对应-t里的,(第一个位置,仅大写)和@(后三个位置,仅小写)-d 2@:严格限制后三个小写位置最多连续出现2个相同字符,完全满足你的要求
实现后续扩展需求(可变长度+末尾限定符号)
如果你想要调整单词长度,再加上两个限定符号(比如!和?),可以按以下两种方式操作:
方式一:修改charset.lst添加自定义符号集
如果你希望后续能重复使用这个符号集,可以修改系统的charset.lst文件(需要sudo权限):
- 打开文件:
sudo nano /usr/share/crunch/charset.lst - 在文件末尾添加一行自定义符号集:
custom_symbols = !? - 保存退出(Ctrl+O,回车,Ctrl+X)
然后就可以用这个自定义集合生成目标内容了。比如你想要生成「3-4位字母+2位符号」的组合(总长度5-6位),可以分两次生成:
# 生成5位(3字母+2符号) crunch 5 5 -f /usr/share/crunch/charset.lst ualpha,lalpha,custom_symbols -t ,@@^^ -d 2@ -o /mnt/hgfs/ZZZ/LIST/out_5.txt # 生成6位(4字母+2符号) crunch 6 6 -f /usr/share/crunch/charset.lst ualpha,lalpha,custom_symbols -t ,@@@^^ -d 2@ -o /mnt/hgfs/ZZZ/LIST/out_6.txt
方式二:不修改系统文件,直接指定符号
如果你不想改动系统文件,也可以直接在命令里指定符号集合,用-p参数传入对应字符集:
# 生成6位(4字母+2符号) crunch 6 6 -t ,@@@^^ -d 2@ -o /mnt/hgfs/ZZZ/LIST/out_symbols.txt -p ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz !?
这里-p后面的三个集合分别对应, 、@、^的字符来源,同样能实现限制符号为!和?的效果。
备注:内容来源于stack exchange,提问作者AndreBela
相关产品推荐
相关产品推荐

