用vc++穷举windows应用程序密码(上)
2009-04-09 20:04:20 来源:WEB开发网lParam
指定一个在EnumChildWindows 给定的应用程序定义的参数值。
返回值:
持续枚举子窗口,程序必须返回true.返回false 停止枚举。
注释:
回调函数可以执行任何渴望的任务。应用程序必须通过传递函数地址给EnumChildWindows来注册回调函数。
·密码枚举
我们知道组成密码的字符由许多种,有人喜欢单用数字,有人喜欢单用字母(包括大小写),也有的是用一些诸如!。#“等符号,我们可以分情况区别对待。密码的长短也是一个制约穷举的一个重要因素,密码长度越长,密码的排列组合种类越多,穷举时间越长。
我们把所有的密码字符都看成字符串,把字符组成集合视为密码字符集。如{0,1,2,3,4,5,6,7,8,9}、{A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z}等都称之为密码字符集。每一个密码每一位都由这些字符集的任意一个字符组成。若字符集中有N个元素,则长度为M的密码根据排列组合共有N的M次方种排法。我们只要将密码字符集的各个要素逐次地放入密码的各个位置,就能穷举长度为M的密码。而长度M可以从1开始自动增长。就像密码开始从 0穷举到9,长度变化为 2,密码在从00穷举到99一样,我们只需变换密码字符集即可变换密码的组成元素。给出密码的算法都一样。每得出一个密码,我们都可以将其存入文件,下次枚举时可以通过这个密码推算下一个密码,如上一个密码为ZZ,则下一个密码应为AAA,再下一个为AAB … AAZ…ABA……ABZ…AZZ…BAA…依次类推。一直推算到ZZZ,接着又是AAAA.有点类似于十进制、二十六进制、五十二进制,只不过这里是各位数不是数字而是字符,字符来自我们自己定义的密码字符集。组成的密码不是数字,而是字符串。
更多精彩
赞助商链接