Exemplo n.º 1
0
        public static void TryDecryptString(byte[] contents, Func <byte[], bool> validate)
        {
            if (validate != null && validate(contents))
            {
                TrySetNopAsDefault();
                return;
            }

            for (var i = 0; i < cryptos.Length; i++)
            {
                var copy   = GetCopy(contents);
                var crypto = cryptos[i];

                crypto.Decrypt(copy);
                if (validate == null || validate(copy))
                {
                    // seems to have worked
                    copy.CopyTo(contents, 0);

                    if (validate != null && crypto != currentEncryption)
                    {
                        Console.WriteLine("Found crypto {0}", crypto);
                        currentEncryption = crypto;

                        PutCurrentInFront();
                    }

                    return;
                }
            }

            Console.WriteLine("No crypto found for string!");
        }
Exemplo n.º 2
0
 private static void TrySetNopAsDefault()
 {
     if (currentEncryption != null)
     {
         return;
     }
     currentEncryption = nopEncryption;
     PutCurrentInFront();
 }
Exemplo n.º 3
0
 private void TrySetNopAsDefault()
 {
     if (currentEncryption != null || cryptoLocked)
     {
         return;
     }
     currentEncryption = nopEncryption;
     PutCurrentInFront();
 }
Exemplo n.º 4
0
        public void TryDecryptString(byte[] contents, Func <byte[], bool> validate, bool ascii)
        {
            if (cryptoLocked)
            {
                currentEncryption.Decrypt(contents);
                return;
            }

            // Get score of data for each crypto
            var results = new DecryptedString[cryptos.Length];

            for (var i = 0; i < cryptos.Length; i++)
            {
                var crypto = cryptos[i];
                var copy   = GetCopy(contents);
                crypto.Decrypt(copy);
                var score = getScoreForString(ascii ? Encoding.ASCII.GetString(copy) : Encoding.Unicode.GetString(copy), ascii);
                if (crypto == currentEncryption)
                {
                    score += 5;
                }
                results[i] = new DecryptedString
                {
                    decrypted = copy,
                    score     = score,
                    crypto    = crypto,
                };
            }

            var orderedResults = results.OrderByDescending(x => x.score);

            // Take a wild guess, pick the first one
            var best = orderedResults.First();

            currentEncryption = best.crypto;
            PutCurrentInFront();
            best.decrypted.CopyTo(contents, 0);
        }
Exemplo n.º 5
0
 public void SetEncryption(IWzEncryption crypto) => _encryption.ForceCrypto(crypto, true);
Exemplo n.º 6
0
 public void ForceCrypto(IWzEncryption encryption, bool lockCrypto)
 {
     currentEncryption = encryption;
     cryptoLocked      = lockCrypto;
     PutCurrentInFront();
 }