Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Trojan Server - ConvertingLock.cs

ConvertingLock.cs

Caricato da:
Scarica il programma completo

  1. using System;
  2. using System.Text;
  3.  
  4. namespace Server
  5. {
  6.         /// <summary>
  7.         /// Summary description for ConvertingLock.
  8.         /// </summary>
  9.         public class ConvertingLock
  10.         {
  11.                 private byte[] m_lock;
  12.                 private int[] m_key;
  13.                 private string m_sKey;
  14.                 public ConvertingLock()
  15.                 {
  16.                         //
  17.                         // TODO: Add constructor logic here
  18.                         //
  19.                 }
  20.                 public void Key(byte[] lock0)
  21.                 {
  22.                         m_lock = lock0;
  23.                         m_key = new int[m_lock.Length];
  24.                         for (int i = 1; i < lock0.Length; i++)
  25.                         {
  26.                                 m_key[i] = (lock0[i] ^ lock0[i-1]);
  27.                         }
  28.                         m_key[0] = (lock0[0] ^ lock0[lock0.Length-1] ^ lock0[lock0.Length-2] ^ 5);
  29.                         for (int i = 0; i < m_key.Length; i++)
  30.                         {
  31.                                 m_key[i] = ((m_key[i]<<4) & 240) | ((m_key[i]>>4) & 15);
  32.                         }
  33.                         m_sKey = "";
  34.                         for ( int i = 0; i<m_key.Length ; i++)
  35.                         {
  36.                                 if(m_key[i] == 0)
  37.                                 {
  38.                                         m_sKey+=("/%DCN000%/");
  39.                                 }
  40.                                 else if(m_key[i] == 5)
  41.                                 {
  42.                                         m_sKey+=("/%DCN005%/");
  43.                                 }
  44.                                 else if(m_key[i] == 36)
  45.                                 {
  46.                                         m_sKey+=("/%DCN036%/");
  47.                                 }
  48.                                 else if(m_key[i] == 96)
  49.                                 {
  50.                                         m_sKey+=("/%DCN096%/");
  51.                                 }
  52.                                 else if(m_key[i] == 124)
  53.                                 {
  54.                                         m_sKey+=("/%DCN124%/");
  55.                                 }
  56.                                 else if(m_key[i] == 126)
  57.                                 {
  58.                                         m_sKey+=("/%DCN126%/");
  59.                                 }
  60.                                 else
  61.                                 {
  62.                                         m_sKey+=((char)m_key[i]);
  63.                                 }
  64.                         }
  65.                 }
  66.                 public byte[] getKey()
  67.                 {
  68.                         return (Encoding.Default.GetBytes(m_sKey.ToString()));
  69.                 }
  70.                 public static byte[] getKey(byte[] lock0)
  71.                 {
  72.                         int[] key = new int[lock0.Length];
  73.                         for (int i = 1; i < lock0.Length; i++)
  74.                         {
  75.                                 key[i] = (lock0[i] ^ lock0[i-1]);
  76.                         }
  77.                         key[0] = (lock0[0] ^ lock0[lock0.Length-1] ^ lock0[lock0.Length-2] ^ 5);
  78.                         for (int i = 0; i < key.Length; i++)
  79.                         {
  80.                                 key[i] = (((key[i]<<4) & 240) | ((key[i]>>4) & 15));
  81.                         }
  82.                         byte[] sKey = new byte[516];
  83.                         int len = 0;
  84.                         for ( int i = 0; i<key.Length ; i++)
  85.                         {
  86.                                 if(key[i] == 0)
  87.                                 {
  88.                                         //    "/%DCN000%/"
  89.                                         for(int ii = 0; ii < "/%DCN000%/".Length; ii++)
  90.                                         {
  91.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN000%/"))[ii];
  92.                                                 len++;
  93.                                         }
  94.                                 }
  95.                                 else if(key[i] == 5)
  96.                                 {
  97.                                         for(int ii = 0; ii < "/%DCN005%/".Length; ii++)
  98.                                         {
  99.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN005%/"))[ii];
  100.                                                 len++;
  101.                                         }
  102.                                 }
  103.                                 else if(key[i] == 36)
  104.                                 {
  105.                                         for(int ii = 0; ii < "/%DCN036%/".Length; ii++)
  106.                                         {
  107.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN036%/"))[ii];
  108.                                                 len++;
  109.                                         }
  110.                                 }
  111.                                 else if(key[i] == 96)
  112.                                 {
  113.                                         for(int ii = 0; ii < "/%DCN096%/".Length; ii++)
  114.                                         {
  115.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN096%/"))[ii];
  116.                                                 len++;
  117.                                         }
  118.                                 }
  119.                                 else if(key[i] == 124)
  120.                                 {
  121.                                         for(int ii = 0; ii < "/%DCN124%/".Length; ii++)
  122.                                         {
  123.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN124%/"))[ii];
  124.                                                 len++;
  125.                                         }
  126.                                 }
  127.                                 else if(key[i] == 126)
  128.                                 {
  129.                                         for(int ii = 0; ii < "/%DCN126%/".Length; ii++)
  130.                                         {
  131.                                                 sKey[len] = (Encoding.Default.GetBytes("/%DCN126%/"))[ii];
  132.                                                 len++;
  133.                                         }
  134.                                 }
  135.                                 else
  136.                                 {
  137.                                         sKey[len] = (byte)key[i];
  138.                                         len++;
  139.                                 }
  140.                         }
  141.                         byte[] aux = new byte[len];
  142.                         for(int i = 0; i < len; i++)
  143.                         {
  144.                                 aux[i] = sKey[i];
  145.                         }
  146.        
  147.                         return aux;
  148.                 }
  149.         }
  150. }