Сейчас на форуме: vasilevradislav, Magister Yoda, site-pro (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Обратный алгоритм VB.NET
Посл.ответ Сообщение

Ранг: 7.7 (гость), 3thx
Активность: 0.010
Статус: Участник

Создано: 17 декабря 2012 00:59 · Поправил: URTeam
· Личное сообщение · #1

Здравствуйте, товарищи.

3 дня уже ломаю голову, видимо мозг заблуждал. Помогите обратить алгоритм, точнее восстановить алгоритм шифрования:
Code:
  1. public static string smethod_21(string string_47, string string_48)
  2.         {
  3.             string str3 = "";
  4.             try
  5.             {
  6.                 long num2;
  7.                 long num3;
  8.                 string expression = string_48;
  9.                 VBMath.Randomize((double)VBMath.Rnd(-1f));
  10.                 long num = Strings.Len(expression);
  11.                 for (num2 = 1L; num2 <= num; num2 += 1L)
  12.                 {
  13.                     VBMath.Randomize((double)VBMath.Rnd(-VBMath.Rnd() * Strings.Asc(Strings.Mid(expression, (int)num2, 1))));
  14.                 }
  15.                 str3 = string_47;
  16.                 long num13 = Strings.Len(str3);
  17.                 long num15 = (num13 - 1L) - ((num13 - 1L) / 4L);
  18.                 string sDest = Strings.Space((int)num15);
  19.                 long num14 = num15;
  20.                 long num12 = 0;
  21.                 long num4 = 0;
  22.                 long num7 = 0;
  23.                 long num8 = 0;
  24.                 for (num2 = 1L; num2 <= num14; num2 += 1L)
  25.                 {
  26.                     num12 += 1L;
  27.                     num3 = Strings.Asc(Strings.Mid(str3, (int)num12, 1)) - 0x3b;
  28.                     long num9 = num2 % 3L;
  29.                     if ((num9 <= 2L) && (num9 >= 0L))
  30.                     {
  31.                         switch (((int)num9))
  32.                         {
  33.                             case 0:
  34.                                 num4 = (num8 & 3L) * 0x40L;
  35.                                 num12 += 1L;
  36.                                 break;
  37.  
  38.                             case 1:
  39.                                 goto Label_00DD;
  40.  
  41.                             case 2:
  42.                                 num4 = ((num8 / 4L) & 3L) * 0x40L;
  43.                                 break;
  44.                         }
  45.                     }
  46.                     goto Label_0125;
  47.                 Label_00DD:
  48.                     num7 += 4L;
  49.                     if (num7 > num13)
  50.                     {
  51.                         num7 = num13;
  52.                     }
  53.                     num8 = Strings.Asc(Strings.Mid(str3, (int)num7, 1)) - 0x3b;
  54.                     num4 = ((num8 / 0x10L) & 3L) * 0x40L;
  55.                 Label_0125:
  56.                     StringType.MidStmtStr(ref sDest, (int)num2, 1, Conversions.ToString(Strings.Chr((int)(num3 | num4))));
  57.                 }
  58.                 str3 = sDest;
  59.                 long num5 = Strings.Len(str3);
  60.                 for (num2 = 1L; num2 <= num5; num2 += 1L)
  61.                 {
  62.                     num3 = Strings.Asc(Strings.Mid(str3, (int)num2, 1));
  63.                     int num11 = (int)Math.Round((double)Conversion.Int((float)(VBMath.Rnd() * 256f)));
  64.                     StringType.MidStmtStr(ref str3, (int)num2, 1, Conversions.ToString(Strings.Chr(((int)num3) ^ num11)));
  65.                 }
  66.  
  67.             }
  68.             catch (Exception exception1)
  69.             {
  70.                 ProjectData.SetProjectError(exception1);
  71.                 str3 = null;
  72.                 ProjectData.ClearProjectError();
  73.             }
  74.             return str3;
  75.         }


P.S. Извините, если ошибся веткой.



Ранг: 138.7 (ветеран), 135thx
Активность: 0.110
Статус: Участник

Создано: 17 декабря 2012 03:25
· Личное сообщение · #2

Здорово товарищ
Вы думаете этот ресурс для Вас создан Своей башкой подумайте




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 17 декабря 2012 07:04
· Личное сообщение · #3

URTeam
Беглый просмотр:
1. Если генерация случайного числа идет с начальным отрицательным числом, тогда последующая генерация предсказуема и постоянна... Это радует...
2. Проблема в одном месте: num4 = ((num8 / 0x10L) & 3L) * 0x40L;
Здесь идет выкусывание бит из числа методом "И", который обратить невозможно, потому и весь алгоритм затыкается на одной инструкции, так как потом идет "исключающее ИЛИ" с этим числом...

Короче, забейте, или брут...

-----
One death is a tragedy, one million is a statistic.


| Сообщение посчитали полезным: URTeam
 eXeL@B —› Крэки, обсуждения —› Обратный алгоритм VB.NET
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати