本帖最后由 holley 于 2022-9-20 17:25 编辑
这两天又开始复习正则入门基础知识,刚好遇到某论坛的一个压缩包解密问题
目前已知压缩包密码规则:1个大写字母、1个小写字母、1个空格、3个数字 共6位
解决思路:1、通过正则生成相应密码字典;2、通过解密工具字典破解;
遇到的问题:
1、现在初步写出的正则为:(?=.*?[A-Z])(?=(.*?[a-z]))(?=(.*?[\d]))(?=(.*?[\s]))[\da-zA-Z\s]{6}
但自己做样例密码的时候,发现这个表达式没有完全有效匹配
如:a A123
123a A
123A a
123 aA
123 Aa
1 23aA
12 a3A
1 23Aa
a1 32A
3333aA
43243a
43iid
4 2JaD
55aa c
DD43 d
444
ccd233
C7WkJv
yO4xF3
其中4 2JaD和DD43 d两个明显不合的密码也匹配上了。
想请教:有没有更适合的正则表达式?
刚发完帖子,发现表达式改成这样好像可以了:(?=(.*?[A-Z]){1})(?=(.*?[a-z]){1})(?=(.*?[\d]){3})(?=(.*? ){1})[\da-zA-Z\s]{6}
求更优解?
新加了2个样例密码,发现我的表达式还是会错误匹配
2、大家有没有比较适合此案例的字典生成工具?我试了下pydictor,发现没办法完全实现我的要求,也非常有可能是我还不会用。
|