您的位置:首页 > 其它

用MFC打造你的的移位密码解密器

2016-04-14 10:13 218 查看
这是上年写的,直接开给大家了,大家一起学习分享吧~~~~~~

先看看效果





这个在简单的ctf中还是很有用的,/article/9449658.html,我在这里用了好几次了

一切都是从简单做起的吧,不写简单的工具怎么写高大上的工具呢。

工具下载:https://raw.githubusercontent.com/giantbranch/MyLearningCode/master/VC%2B%2B6.0/MySoftware/moveDecrypt/Release/moveDecrypt.exe

工程及源码:https://github.com/giantbranch/MyLearningCode/tree/master/VC%2B%2B6.0/MySoftware/moveDecrypt

1.需要的基础

C++基础,MFC的基本编程

2.开发环境

vc++6.0,当然vs的各大版本和最新版也是没问题的

3.新建个工程



选择基本对话框就可以了



4.设计界面

新建个对话框



最重要的id一定要命名好,最后就只是后面不同,就1-26啦



跟着给解密按钮添加响应函数就可以啦

5.解密代码编写

下面的是解密按钮的响应函数
void CMoveDecryptDlg::OnButtonDecrypt()
{
// TODO: Add your control notification handler code here
char szWord[100];
GetDlgItem(IDC_EDIT_WORD)->GetWindowText(szWord, 100);	//获取输入框的字符串
Decrypt(szWord);//调用解密函数
}


真正的解密代码
VOID CMoveDecryptDlg::Decrypt(char *szWord)
{
CString str;
int id;
for (int j = 1; j <= 25; j++)//1-25次移位
{
id = GetId(j-1);
for (int i = 0; i < strlen(szWord); i++)//根据字符串长度,依次移位,只处理大小写字母
{
if (szWord[i]>='a'&&szWord[i]<='z')//如果是小写字母
{
szWord[i] = (szWord[i] - 'a' + 1) % 26 +'a'; //szWord[i] - 'a'就是距离a的距离,+1就是每次循环移动一位,当然还要在26的范围内,最后还要加上a的ASCII码97,因为与a的距离再加97才能获得其最终的ASCII码
}else if (szWord[i]>='A'&&szWord[i]<='Z')//如果是大写字母
{
szWord[i] = (szWord[i] - 'A' + 1) % 26 +'A';//道理跟上面一样
}
}
str.Format("%s",szWord);		//获取字符串并转化成Cstring
GetDlgItem(id)->SetWindowText(str);	//放到对应的ID的框里
}
}


GetId代码(就是获取下面25个框的id)
int CMoveDecryptDlg::GetId(int num)
{
const DWORD MyIdcGroup[] = {
IDC_EDIT_DECRYPT1,
IDC_EDIT_DECRYPT2,
IDC_EDIT_DECRYPT3,
IDC_EDIT_DECRYPT4,
IDC_EDIT_DECRYPT5,
IDC_EDIT_DECRYPT6,
IDC_EDIT_DECRYPT7,
IDC_EDIT_DECRYPT8,
IDC_EDIT_DECRYPT9,
IDC_EDIT_DECRYPT10,
IDC_EDIT_DECRYPT11,
IDC_EDIT_DECRYPT12,
IDC_EDIT_DECRYPT13,
IDC_EDIT_DECRYPT14,
IDC_EDIT_DECRYPT15,
IDC_EDIT_DECRYPT16,
IDC_EDIT_DECRYPT17,
IDC_EDIT_DECRYPT18,
IDC_EDIT_DECRYPT19,
IDC_EDIT_DECRYPT20,
IDC_EDIT_DECRYPT21,
IDC_EDIT_DECRYPT22,
IDC_EDIT_DECRYPT23,
IDC_EDIT_DECRYPT24,
IDC_EDIT_DECRYPT25,
};
return MyIdcGroup[num];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: