危险漫步博客
新鲜的“黑客思维”就是从全新的角度看待黑客技术,从更高的层面去思考;专注于黑客精神及技术交流分享的独立博客。
文章2289 浏览18788018

打造自己的字典生成器

本篇文章中危险漫步将同大家一起打造一款属于自己的字典生成器,采用的编程平台为vc++6.O。由于本文涉及到的属于编程类的东西,没有什么技巧可以寻,大家只能加强编程功底。

在正式编码之前,我们先来分析一下我们的程序应该具有的功能。既然是字典生成器,那就必定涉及到字典数据的类型问题,一般情况下我们的字典数据包含一下几种类型的数据:大小写字母、数字、特殊符号。那么我们在编写程序的时候就需要按照情况来设定我们生成字典的类型。

我们开始按照上面的分析编写代码,创建MFC应用程序,我们在界面先放置4个复选按钮,分别用来指定字典的类型为大写字母、小写字母、数字、特殊符号。其ID分别对应I-DC CHECK BIG、IDC_ CHECK_SMALL、IDC_CHEC_NUM、IDC_CI-IECK—ESP;对应的对象分别是m_ch_big、m_ch sm all、Ⅱ1.ch num、m_clie8p,对象类型为BOOL;

然后再放置一个编辑框,用来设定密码的上限长度。编辑框IDIDC_EDIT_LENGB,对应的对象为medit_ len,类型为控件。再放置两个按钮,分别作为“开始”与“停止”,ID分别为IDC_BUTTONSTART、IDC__ BUTTON EIVD,对应的对象分别为m_btn_ start、m—btn_ end,类型为按钮。

由于我们运行程序的时候程序并没有开始工作,所以开始时“停止”按钮应为不可用状态。我们在OnInitDfa'fog()函数中添加m btn end.EnableWindow(FALSE);这句代码,这样“停止”按钮就是灰色的了。当程序开始工作时,这两个按钮对应进行灰白变化转换。

我们来测试一下代码,进行按钮点击切换。我们在点击开始按钮的时候需要获取用户选择的字典数据类型,这里需要用到一个函数UDdateData(TRUE1。

这里我们设定的控件关联变量类型为BOOL类型,所以在我们点击开始按钮的时候需要从控件获取数据,需要使用UpdateData(TRUE)。然后我们就需要获取编辑框中用户输入的密码长度。这里我们限定密码的长度不能为O,同时长度不能大于20。

基本的条件处理完毕之后,我们就需要开始字典的生成了,鉴于篇幅的原因,这里危险漫步就以纯数字、字母、特殊符号的字典为例子,其他的模式请用户自己完成。我们在生成字典的时候也能感到了一个新的线程以及一个结构体,线程以及结构体声明如下:

其中结构体中的length表示字典最大长度i type用来表示字典的类型,总共15类。

1纯数字

2数字+小写字母

3数字+大写字母

4大写字母、小写字母

5大写字母+小写字母+数字

6大写字母+小写字母+数字+特殊符号

7大写字母+小写字母+特殊符号

8数字+特殊符号

9小写字母+数字+特殊符号

10大写字母+数字+特殊符号

11特殊符号

12小写字母+特殊符号

13大写字母十特殊符号

14小写字母

15大写字母

这里危险漫步已经将字典生成的核心代码封装成了dll库,用户只需要调用里面的接口即可,接为makedic(int length,int type),第一个参数表示字典数据长度上限,第二参数表示字典类型,类型如上。

本文中可以生成字典类别为单纯的四类字典数据,其他的混合字典数据用户可以根据笔者给出的接口进行自己搭配。注意不要生成长度太大的字典,否则文件会非常大,在后面笔者会加上文件分割以及字典体积计算的功能。dll动态库以及mfc源程序已经为大家打包了,感兴趣的读者可以自己修改。字典会在程序所在的目录下生成,名字为“chfp.dic”,dll库名为dic.dll,使用时注意激昂改dll库放置在应用程序同目录,文章到这里就结束了