PDA

View Full Version : سوال: اشکال در decode کردن کدها



anastazia1
یک شنبه 26 تیر 1390, 22:36 عصر
سلام دوستان من یه برنامه رو ریسورس کردم و یه قسمت دیکد داشت الان کارم گیر اینه
کسی میتونه با این کدها یه برنامه بنویسه که یه متن کد شده بگیره و دیکد شده اونو بهمون بده
decrypt:
public string Decrypt(string str_Renamed, string key, string base64value)
{
this.base64 = base64value;
if (key == "PafcoIdGenerator")
{
string inp = this.base64_decode(ref str_Renamed);
string str = this.RC4(ref inp, ref key);
string str5 = Strings.Mid(str, 1, 0x10);
return this.RC4(ref Strings.Mid(str, 0x11, Strings.Len(str)), ref str5);
}
return "";
}


2:base64 decrypt
private string base64_decode(ref string a)
{
string str2 = "";
short num6 = (short) Strings.Len((string) a);
for (short i = 1; i <= num6; i = (short) (i + 4))
{
short num2 = this.mimedecode(ref Strings.Mid(a, i, 1));
short num3 = this.mimedecode(ref Strings.Mid(a, i + 1, 1));
short num4 = this.mimedecode(ref Strings.Mid(a, i + 2, 1));
short num5 = this.mimedecode(ref Strings.Mid(a, i + 3, 1));
if (num3 >= 0)
{
str2 = str2 + Conversions.ToString(Strings.ChrW((int) (((long) Math.Round((double) ((num2 * 4) + Conversion.Int((double) (((double) num3) / 16.0))))) & 0xffL)));
}
if (num4 >= 0)
{
str2 = str2 + Conversions.ToString(Strings.ChrW((int) (((long) Math.Round((double) ((num3 * 0x10) + Conversion.Int((double) (((double) num4) / 4.0))))) & 0xffL)));
}
if (num5 >= 0)
{
str2 = str2 + Conversions.ToString(Strings.ChrW(((num4 * 0x40) + num5) & 0xff));
}
}
return str2;
}

3:rc4
private string RC4(ref string inp, ref string key)
{
string str;
byte num4;
int num8;
byte[] buffer2 = new byte[0x100];
byte[] buffer = new byte[0x100];
int index = 0;
do
{
buffer2[index] = (byte) index;
index++;
num8 = 0xff;
}
while (index <= num8);
int start = 1;
index = 0;
do
{
if (start > Strings.Len((string) key))
{
start = 1;
}
buffer[index] = (byte) Strings.AscW(Strings.Mid(key, start, 1));
start++;
index++;
num8 = 0xff;
}
while (index <= num8);
start = 0;
index = 0;
do
{
start = ((start + buffer2[index]) + buffer[index]) % 0x100;
num4 = buffer2[index];
buffer2[index] = buffer2[start];
buffer2[start] = num4;
index++;
num8 = 0xff;
}
while (index <= num8);
index = 0;
start = 0;
int num7 = Strings.Len((string) inp);
for (int i = 1; i <= num7; i++)
{
index = (index + 1) % 0x100;
start = (start + buffer2[index]) % 0x100;
num4 = buffer2[index];
buffer2[index] = buffer2[start];
buffer2[start] = num4;
int num3 = (buffer2[index] + (buffer2[start] % 0x100)) % 0x100;
byte num6 = buffer2[num3];
str = str + Conversions.ToString(Strings.ChrW(Strings.AscW(Str ings.Mid(inp, i, 1)) ^ num6));
}
return str;
}






4: mimedecode
private short mimedecode(ref string a)
{
if (Strings.Len((string) a) == 0)
{
return -1;
}
return (short) (Strings.InStr(this.base64, a, CompareMethod.Binary) - 1);
}

با تشکر