码迷,mamicode.com
首页 > Web开发 > 详细

CTF-reverse-daily(3)-DotNetCrackMe1

时间:2016-09-13 11:22:20      阅读:278      评论:0      收藏:0      [点我收藏+]

标签:

链接:http://pan.baidu.com/s/1cuYQhK    密码:zjx6

这是一个用c#编写的程序

用dotpeek或者ILSPY反编译可以看到程序结构,主体比较简单,是一个des加密算法

技术分享

 

这是一个带向量的DES加密程序,key是wctf{wol,iv向量是dy_crack},密文是fOCPTVF0diO+B0IMXntkPoRJDUj5CCsT

 

现在要做的就是对他进行反向解密拿到明文,坑爹的网上现成的des解密工具都是不带向量的,带向量的只有代码

好吧,现在就只有对源程序进行修改了,由于之前没怎么用过vs2015,所以花了我很长时间

1.首先保存原项目,这里最好用ILSPY,我用dotpeek保存项目好像不行,需要如图选中顶层项目进行保存

技术分享

2.接着打开vs,打开项目,文件后缀名为csproj,可以在vs右边开到项目已打开,接着打开代码

技术分享

 

 

 

3.下一步就要修改原程序了,我那个是那个随便搜一搜c#des解密代码,在对源程序进行修改,修改代码如下:

private void button1_Click(object sender, EventArgs e)
        {

            MessageBox.Show(DESDecrypt(flag, KEY_64, IV_64));
        }

        public static string DESDecrypt(string data, string key, string iv)
        {
            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

            byte[] byEnc;
            try
            {
                byEnc = Convert.FromBase64String(data);
            }
            catch
            {
                return null;
            }

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
            MemoryStream ms = new MemoryStream(byEnc);
            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
            StreamReader sr = new StreamReader(cst);
            return sr.ReadToEnd();
        }

4.接着按vs的启动按钮,可以发现程序能够正确运行出flag

技术分享

5.这时不用发布程序之类的,可以直接在项目的\bin\debug目录下找到生成的程序

 

CTF-reverse-daily(3)-DotNetCrackMe1

标签:

原文地址:http://www.cnblogs.com/lomooo/p/5867568.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!