首页
社区
课程
招聘
[求助]字符加解密工具(有偿:100Kx)
发表于: 2013-12-18 15:26 6867

[求助]字符加解密工具(有偿:100Kx)

2013-12-18 15:26
6867
最近在反编译一款.NET程序,其配置文件中的字符串为加密的.经反编译后,发现
1.字符串加密涵数EncryptDES如下:
public static string EncryptDES(string encryptString, string encryptKey)
{
    MemoryStream stream;
    CryptoStream stream2;
    byte[] bytes = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
    byte[] rgbIV = xbd492d4fc8202882;
    byte[] buffer = Encoding.UTF8.GetBytes(encryptString);
    do
    {
        DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
        stream = new MemoryStream();
        stream2 = new CryptoStream(stream, provider.CreateEncryptor(bytes, rgbIV), CryptoStreamMode.Write);
    }
    while (0x7fffffff == 0);
    stream2.Write(buffer, 0, buffer.Length);
    stream2.FlushFinalBlock();
    return Convert.ToBase64String(stream.ToArray());
}
2.字符串解密涵数DecryptDES如下:
public static string DecryptDES(string decryptString, string decryptKey)
{
    string str;
    try
    {
        byte[] buffer2;
        byte[] buffer3;
        DESCryptoServiceProvider provider;
        MemoryStream stream;
        byte[] bytes = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));
        if (-2 != 0)
        {
            goto Label_0067;
        }
    Label_001C:
        do
        {
            stream = new MemoryStream();
        }
        while (0 != 0);
        CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(bytes, buffer2), CryptoStreamMode.Write);
        stream2.Write(buffer3, 0, buffer3.Length);
        stream2.FlushFinalBlock();
        str = Encoding.UTF8.GetString(stream.ToArray());
        if (0xff != 0)
        {
            return str;
        }
    Label_0067:
        buffer2 = xbd492d4fc8202882;
        buffer3 = Convert.FromBase64String(decryptString);
        provider = new DESCryptoServiceProvider();
        goto Label_001C;
    }
    catch
    {
        str = decryptString;
    }
    return str;
}

3.读取配置文件中字符串的涵数如下:
public bool GetSoftConfig(ref string dwName, ref string dwCode, ref double minx, ref double maxx, ref double miny, ref double maxy)
{
    bool flag;
    try
    {
        XmlDocument document;
        string str;
        XmlElement element;
        bool flag2 = File.Exists(this.xbece5211ea7dc225);
        goto Label_0156;
    Label_0014:
        if (2 == 0)
        {
            goto Label_0040;
        }
        flag = true;
        if (1 == 0)
        {
            goto Label_00DF;
        }
        return flag;
    Label_002C:
        if ((((uint) flag) & 0) != 0)
        {
            goto Label_00BB;
        }
    Label_0040:
        element = (XmlElement) document.SelectSingleNode("RSC/YMin");
        miny = double.Parse(StringOperate.DecryptDES(element.InnerText, str));
        element = (XmlElement) document.SelectSingleNode("RSC/YMax");
        maxy = double.Parse(StringOperate.DecryptDES(element.InnerText, str));
        if (((uint) flag) >= 0)
        {
            goto Label_0014;
        }
    Label_009C:
        element = (XmlElement) document.SelectSingleNode("RSC/CODE");
        dwCode = StringOperate.DecryptDES(element.InnerText, str);
    Label_00BB:
        element = (XmlElement) document.SelectSingleNode("RSC/XMin");
        minx = double.Parse(StringOperate.DecryptDES(element.InnerText, str));
    Label_00DF:
        element = (XmlElement) document.SelectSingleNode("RSC/XMax");
        maxx = double.Parse(StringOperate.DecryptDES(element.InnerText, str));
        goto Label_002C;
    Label_0110:
        document = new XmlDocument();
        document.Load(this.xbece5211ea7dc225);
        str = "";
        str = "&_e@dD(7";
        element = (XmlElement) document.SelectSingleNode("RSC/NAME");
        dwName = StringOperate.DecryptDES(element.InnerText, str);
        goto Label_009C;
    Label_0156:
        if (!flag2)
        {
            return false;
        }
        goto Label_0110;
    }
    catch
    {
        flag = false;
    }
    return flag;
}
由于我对.NET和 C#一点不懂(好像是DES+Base64的字符加解密,向量IV = 0xbd492d4fc8202882,密钥=&_e@dD(7),求助各位高手大虾,能否根据上面提供的信息,提供一个针对该程序结构的字符串加解密的工具.谢谢!
另密文格式(>.......<之间的码):
<YMax>8mugAHINQHLROK+L9P3PNDjLd/lpg+c4</YMax>
<NAME>pfLibu2hWPmEZNtm6DfCig==</NAME>

能提供有效加解密工具的,奖100Kx

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 303
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么软件,有奖金,给个地址
2013-12-18 15:37
0
雪    币: 303
活跃值: (466)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
100Kx有何用?
2013-12-18 15:46
0
雪    币: 255
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
QQ:1197446392

100Kx可买2个邀请码
2013-12-18 16:27
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

public class Decrypt{

public static void Main(string[] args){

Test("8mugAHINQHLROK+L9P3PNDjLd/lpg+c4");
Console.WriteLine("===================================");
Test("pfLibu2hWPmEZNtm6DfCig==");
}

public static void Test(string a){
byte[] iv = new byte[]{0xbd,0x49,0x2d,0x4f,0xc8,0x20,0x28,0x82};
string key = "&_e@dD(7";

byte[] b = Decrypt.DESDecrypt(a, key, iv);//解密,返回byte数组

Console.WriteLine("原始内容: {0}", a);

Console.WriteLine("以UTF-8编码输出: {0}", Encoding.UTF8.GetString(b));
Console.WriteLine("以GBK编码输出: {0}", Encoding.GetEncoding("GBK").GetString(b));
Console.WriteLine("以系统默认编码输出: {0}", Encoding.Default.GetString(b));

string c = Decrypt.DESEncrypt(b, key, iv);//加密,得到Base64

Console.WriteLine("加密后的: {0}", c);
}

public static string DESEncrypt(byte[] buffer, string key, byte[] iv){
try{
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream stream = new MemoryStream();
CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(Encoding.UTF8.GetBytes(key), iv), CryptoStreamMode.Write);

stream2.Write(buffer, 0, buffer.Length);
stream2.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}catch{
return "";
}

}

public static byte[] DESDecrypt(string data, string key, byte[] iv){
try{
DESCryptoServiceProvider provider = new DESCryptoServiceProvider();
MemoryStream stream = new MemoryStream();
byte[] buffer3 = Convert.FromBase64String(data);

CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(Encoding.UTF8.GetBytes(key), iv), CryptoStreamMode.Write);
stream2.Write(buffer3, 0, buffer3.Length);
stream2.FlushFinalBlock();

return stream.ToArray();
}catch{
return null;
}
}
}


上面的代码保存成 xx.cs

然后打开cmd,

SET Path=C:\Windows\Microsoft.NET\Framework\v2.0.50727;%PATH%;
csc xx.cs
xx.exe


得到的结果有一些字符是乱码,估计内容还有加密的地方.
2013-12-18 20:20
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6

byte[] rgbIV = xbd492d4fc8202882;

这个  "xbd492d4fc8202882"  是个变量,解密的时候,要找到这个变量对应的 byte 数组才行,
上面的代码解的时候,用的不是真正的 iv 值,所以解出来的是乱码,如果换成正确的iv值,就能解出来正确的内容了.
2013-12-18 20:25
0
雪    币: 255
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
先谢谢了!8mugAHINQHLROK+L9P3PNDjLd/lpg+c4 和 pfLibu2hWPmEZNtm6DfCig== 是两个独立的字符串加密后生成密文,应分别解密. 还原成两独立的字符串. 另:"xbd492d4fc8202882"  是个变量?哪该DES是不是属于CBC模式呢?而不需要IV值?
2013-12-18 22:52
0
雪    币: 427
活跃值: (883)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
iv是常用iv:{0x12,0x34,0x56,0x78,0x90,0xab,0xcd,0xef},解密程序执行结果:
dec 8mugAHINQHLROK+L9P3PNDjLd/lpg+c4
30.0966598748571

dec pfLibu2hWPmEZNtm6DfCig==
铜梁县

dec /e 30.0966598748571
8mugAHINQHLROK+L9P3PNDjLd/lpg+c4

dec /e 铜梁县
pfLibu2hWPmEZNtm6DfCig==

程序见附件,内有源码:
dec.zip
上传的附件:
2013-12-18 23:26
0
雪    币: 255
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
首先表示感谢!由于我对.NET和 C#一点不懂,附件中的代码似懂非懂,看来知识学无止境啊!附件中编译好的程序一闪而过,看不见任何结果.另:既然解密过程都解决了,加密过程应当不难吧.我所求助的还有一个对应的字符串加密,能帮助一起搞一下吗?该程序配置文件中的参数较多,有些要解密后了解其含义,修改后再加密回去作为调整.需要一个工具能够在机器中输入明文可加密,输入密文可解密(我电脑上有安装.NET 2.0的Framework)
2013-12-19 09:41
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
btmanbtman  好强大, iv值也可以猜 出来.
2013-12-19 11:42
0
雪    币: 255
活跃值: (372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我的问题在雪友小秦和btmanbtman热心帮助下,已圆满解决.为了兑现100Kx.我不知道如何操作(两雪友各50Kx),请斑主或知道如何操作的雪友指点一下.
2013-12-19 13:17
0
雪    币: 427
活跃值: (883)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
附件是一个命令行程序,win+r打开运行窗口,cmd打开命令提示符,然后定位到dec.exe所在目录,输入:
dec 要解密的密文

就是解密结果
输入:
dec /e 要加密的明文

就是加密结果

写了个form版,上面的文本框是输入,下面的是输出。默认将上面文本框的内容全部加密,勾选多行模式会将上面文本框每行分别加密,结果在下面文本行,每行一个,与上面的对应。
decform.zip
上传的附件:
2013-12-19 13:29
0
雪    币: 19
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
没钱还谈什么师徒关系
2013-12-19 13:30
0
雪    币: 221
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
xenocode加的保护,好像是那样的x开头的变量名
2013-12-19 15:07
0
雪    币: 221
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
xenocode加的保护,好像是那样的x开头的变量名
2013-12-19 15:14
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
大家都是互相交流的,别太较真了
2013-12-21 21:00
0
游客
登录 | 注册 方可回帖
返回
//