Ignore:
Timestamp:
Oct 19, 2009, 3:39:58 PM (12 years ago)
Author:
kopal
Message:
  • KeySearcher now has a first QuickWatchPresentation
  • SDES now works with KeySearcher
  • actualized sample for KeySearcher
File:
1 edited

Legend:

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

    r736 r744  
    99using System.Collections;
    1010using System.Collections.Generic;
     11using System.Threading;
     12using System.Windows.Threading;
    1113
    1214namespace KeySearcher
     
    1820            private char[] values = new char[256];
    1921            private int length;
    20             private int counter;           
    21 
     22            private int counter;
     23           
    2224            public Wildcard(string valuePattern)
    2325            {               
     
    220222        {
    221223            settings = new KeySearcherSettings(this);
     224            QuickWatchPresentation = new KeySearcherQuickWatchPresentation();
    222225        }
    223226
     
    234237        public UserControl QuickWatchPresentation
    235238        {
    236             get { return null; }
     239            get;
     240            private set;
    237241        }
    238242
     
    246250
    247251        public void process(IControlEncryption sender)
    248         {
    249             int counter = 0;
     252        {           
     253
    250254            if (sender != null && costMaster != null)
    251255            {
     
    270274                    return;
    271275                }
     276
    272277                int size = Pattern.initKeyIteration(settings.Key);
    273278                int blocksize = CostMaster.getBlocksize();
    274279                string key;
     280                int counter = 0;
     281                int doneKeys = 0;
     282                string text = "";
     283                LinkedListNode<ValueKey> linkedListNode;
     284
     285                DateTime lastTime = DateTime.Now;               
    275286                do
    276                 {
     287                {                   
    277288                    key = Pattern.getKey();                   
    278289                    byte[] decryption = sender.Decrypt(ControlMaster.getKeyFromString(key), blocksize);
     
    281292                    valueKey.value = CostMaster.calculateCost(decryption);
    282293                    valueKey.key = key;
    283 
    284                     GuiLogMessage("Tried key " + valueKey.key + " = " + valueKey.value, NotificationLevel.Debug);
    285 
     294                   
    286295                    if (this.costMaster.getRelationOperator() == RelationOperator.LargerThen)
    287296                    {
     
    322331                    counter++;                   
    323332                    ProgressChanged(counter, size);
     333
     334                    //Key per second calculation
     335                    doneKeys++;
     336                    TimeSpan duration = DateTime.Now - lastTime;
     337                    if (duration.Seconds >= 1)
     338                    {
     339                        lastTime = DateTime.Now;
     340                        GuiLogMessage("Working with " + doneKeys + " Keys/sec", NotificationLevel.Info);                       
     341                       
     342                        int seconds = (size - counter) / doneKeys;
     343                        TimeSpan secondsleft = new TimeSpan(0, 0, 0, seconds, 0);
     344
     345                        ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     346                        {
     347                            ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).keysPerSecond.Text = "" + doneKeys;
     348                            ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).timeLeft.Text = "" + secondsleft;
     349                            ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).endTime.Text = "" + DateTime.Now.AddSeconds(seconds);
     350
     351                        }
     352                        , null);
     353                        doneKeys = 0;
     354
     355                        if (QuickWatchPresentation.IsVisible)
     356                        {
     357                            text = "Calculated value/key - list:\r\n";
     358                            linkedListNode = costList.First;
     359                            while (linkedListNode != null)
     360                            {
     361                                text += linkedListNode.Value.value + " = " + linkedListNode.Value.key + "\r\n";
     362                                linkedListNode = linkedListNode.Next;
     363                            }
     364                           
     365                            ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     366                            {
     367                                ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).logging.Text = text;
     368                            }
     369                            , null);
     370                        }
     371                    }
     372
    324373                } while (Pattern.nextKey() && !stop);
    325374
    326                 GuiLogMessage("Calculated value/key - list:", NotificationLevel.Info);
    327                 LinkedListNode<ValueKey> n = costList.First;
    328                 while (n != null)
    329                 {
    330                     GuiLogMessage(n.Value.value + " = " + n.Value.key, NotificationLevel.Info);
    331                     n = n.Next;
    332                 }
    333 
     375                text = "Calculated value/key - list:\r\n";
     376                linkedListNode = costList.First;
     377                while (linkedListNode != null)
     378                {
     379                    text += linkedListNode.Value.value + " = " + linkedListNode.Value.key + "\r\n";
     380                    linkedListNode = linkedListNode.Next;
     381                }
     382                ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).Dispatcher.Invoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     383                {
     384                    ((KeySearcherQuickWatchPresentation)QuickWatchPresentation).logging.Text = text;
     385                }
     386                , null);
     387               
    334388            }//end if
    335389        }
     
    441495            {
    442496                OnPluginProgressChanged(this, new PluginProgressEventArgs(value, max));
     497
    443498            }
    444499        }
     
    451506    }
    452507}
     508
Note: See TracChangeset for help on using the changeset viewer.