Ignore:
Timestamp:
Sep 22, 2010, 5:27:14 PM (11 years ago)
Author:
Sven Rech
Message:

removed an optimization in keysearcher plugin, that didn't worked anymore and wasn't used anymore.
code is now more readable.

I will replace this by a much better optimization approach later (master project)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r1727 r1932  
    193193                if (top1ValueKey.key != null) //added by Arnold - 2010.02.22
    194194                {
    195                     int[] a = null, b = null, c = null;
    196                     return ControlMaster.getKeyFromString(top1ValueKey.key, ref a, ref b, ref c);
     195                    return ControlMaster.getKeyFromString(top1ValueKey.key);
    197196                }
    198197                else
     
    338337
    339338            KeyPattern.KeyPattern pattern = patterns[threadid];
    340 
    341             bool useKeyblocks = false;
    342 
     339           
    343340            try
    344341            {
     
    347344                    BigInteger size = pattern.size();
    348345                    keysLeft[threadid] = size;
    349                     int nextWildcard;
    350346
    351347                    do
     
    379375                        }
    380376
    381 
    382377                        ValueKey valueKey = new ValueKey();
    383                         int blocksize = 0;
    384                         nextWildcard = -3;
    385378                        try
    386379                        {
    387                             string key = "";
    388                             if (useKeyblocks)
    389                                 key = pattern.getKeyBlock(ref blocksize, ref nextWildcard);
    390                             if (key == null)
    391                                 useKeyblocks = false;
    392                             if (!useKeyblocks)
    393                                 key = pattern.getKey();
    394                             valueKey.key = key;
     380                            valueKey.key = pattern.getKey();
    395381                        }
    396382                        catch (Exception ex)
     
    400386                        }
    401387
    402                         int[] arrayPointers = null;
    403                         int[] arraySuccessors = null;
    404                         int[] arrayUppers = null;
    405                         byte[] keya = ControlMaster.getKeyFromString(valueKey.key, ref arrayPointers, ref arraySuccessors, ref arrayUppers);
    406                         if (keya == null)
    407                         {
    408                             useKeyblocks = false;
    409                             nextWildcard = -2;
    410                             continue;   //try again
    411                         }
    412 
    413                         if (arrayPointers == null)  //decrypt only one key
    414                         {
    415                             if (!decryptAndCalculate(sender, bytesToUse, ref valueKey, keya, 0, null))
    416                                 return;
    417                             doneKeysArray[threadid]++;
    418                             keycounterArray[threadid]++;
    419                             keysLeft[threadid]--;
    420                         }
    421                         else  //decrypt several keys
    422                         {
    423                             int counter = 0;
    424                             if (!bruteforceBlock(sender, bytesToUse, ref valueKey, keya, arrayPointers, arraySuccessors, arrayUppers, 0, ref counter, pattern))
    425                                 return;
    426                             doneKeysArray[threadid] += blocksize;
    427                             keycounterArray[threadid] += blocksize;
    428                             keysLeft[threadid] -= blocksize;
    429                         }
    430                     } while (pattern.nextKey(nextWildcard) && !stop);
     388                        byte[] keya = ControlMaster.getKeyFromString(valueKey.key);
     389
     390                        if (!decryptAndCalculate(sender, bytesToUse, ref valueKey, keya, 0, null))
     391                            return;
     392
     393                        doneKeysArray[threadid]++;
     394                        keycounterArray[threadid]++;
     395                        keysLeft[threadid]--;
     396
     397                    } while (pattern.nextKey() && !stop);
    431398
    432399                    if (stop)
     
    453420
    454421        #region bruteforce methods
    455 
    456         private bool bruteforceBlock(IControlEncryption sender, int bytesToUse, ref ValueKey valueKey, byte[] keya, int[] arrayPointers,
    457             int[] arraySuccessors, int[] arrayUppers, int arrayPointer, ref int counter, KeyPattern.KeyPattern pattern)
    458         {
    459             byte store = keya[arrayPointers[arrayPointer]];
    460             while (!stop)
    461             {
    462                 if (arrayPointer + 1 < arrayPointers.Length && arrayPointers[arrayPointer + 1] != -1)
    463                 {
    464                     if (!bruteforceBlock(sender, bytesToUse, ref valueKey, keya, arrayPointers, arraySuccessors, arrayUppers, arrayPointer + 1, ref counter, pattern))
    465                         return false;
    466                 }
    467                 else
    468                 {
    469                     if (!decryptAndCalculate(sender, bytesToUse, ref valueKey, keya, counter, pattern))
    470                         return false;
    471                 }
    472 
    473                 if (keya[arrayPointers[arrayPointer]] + arraySuccessors[arrayPointer] <= arrayUppers[arrayPointer])
    474                 {
    475                     keya[arrayPointers[arrayPointer]] += (byte)arraySuccessors[arrayPointer];
    476                     counter++;
    477                 }
    478                 else
    479                     break;
    480             }
    481             keya[arrayPointers[arrayPointer]] = store;
    482             if (stop)
    483                 return false;
    484             return true;
    485         }
    486422
    487423        private bool decryptAndCalculate(IControlEncryption sender, int bytesToUse, ref ValueKey valueKey, byte[] keya, int counter, KeyPattern.KeyPattern pattern)
Note: See TracChangeset for help on using the changeset viewer.