Ignore:
Timestamp:
Dec 2, 2009, 5:30:52 PM (12 years ago)
Author:
arnold
Message:

Beiden Klassen umstrukturiert und teilweise kommentiert. Außerdem KeyPattern die Methode ToString() hinzugefügt

File:
1 edited

Legend:

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

    r908 r939  
    2020    public class KeySearcher : IAnalysisMisc
    2121    {
     22        /// <summary>
     23        /// used for creating the TopList
     24        /// </summary>
    2225        private Queue valuequeue;
    2326        private double value_threshold;
    24         private int maxThread;  //the thread with the most keys left
     27        /// <summary>
     28        /// the thread with the most keys left
     29        /// </summary>
     30        private int maxThread;
    2531        private Mutex maxThreadMutex = new Mutex();
    2632
     
    4248        private bool stop;
    4349
     50        #region IControlEncryption Members
     51
     52        private IControlEncryption controlMaster;
     53        [PropertyInfo(Direction.ControlMaster, "Control Master", "Used for bruteforcing", "", DisplayLevel.Beginner)]
     54        public IControlEncryption ControlMaster
     55        {
     56            get { return controlMaster; }
     57            set
     58            {
     59                if (controlMaster != null)
     60                {
     61                    controlMaster.keyPatternChanged -= keyPatternChanged;
     62                    controlMaster.OnStatusChanged -= onStatusChanged;
     63                }
     64                if (value != null)
     65                {
     66                    Pattern = new KeyPattern(value.getKeyPattern());
     67                    value.keyPatternChanged += keyPatternChanged;
     68                    value.OnStatusChanged += onStatusChanged;
     69                    controlMaster = value;
     70                    OnPropertyChanged("ControlMaster");
     71
     72                }
     73                else
     74                    controlMaster = null;
     75            }
     76        }
     77
     78        #endregion
     79
     80        #region IControlCost Members
     81
     82        private IControlCost costMaster;
     83        [PropertyInfo(Direction.ControlMaster, "Cost Master", "Used for cost calculation", "", DisplayLevel.Beginner)]
     84        public IControlCost CostMaster
     85        {
     86            get { return costMaster; }
     87            set
     88            {
     89                costMaster = value;
     90            }
     91        }
     92
     93        #endregion
     94
    4495        #region IPlugin Members
    4596
     
    82133        }
    83134
     135        public void PostExecution()
     136        {
     137        }
     138
     139        public void Pause()
     140        {
     141        }
     142
     143        public void Stop()
     144        {
     145            stop = true;
     146        }
     147
     148        public void Initialize()
     149        {
     150        }
     151
     152        public void Dispose()
     153        {
     154        }
     155
     156        #endregion
     157
     158        #region INotifyPropertyChanged Members
     159
     160        public event PropertyChangedEventHandler PropertyChanged;
     161
     162        public void OnPropertyChanged(string name)
     163        {
     164            if (PropertyChanged != null)
     165            {
     166                PropertyChanged(this, new PropertyChangedEventArgs(name));
     167            }
     168        }
     169
     170        #endregion
     171
     172/* BEGIN functionality */
     173
     174        #region whole KeySearcher functionality
     175
    84176        private class ThreadStackElement
    85177        {
     
    89181
    90182        #region code for the worker threads
     183
    91184        private void KeySearcherJob(object param)
    92185        {
     
    213306            }
    214307        }
    215        
     308
     309        #region bruteforce methods
     310
    216311        private bool bruteforceBlock(IControlEncryption sender, int bytesToUse, ref ValueKey valueKey, byte[] keya, int[] arrayPointers,
    217312            int[] arraySuccessors, int[] arrayUppers, int arrayPointer, ref int counter, KeyPattern pattern)
     
    291386        #endregion
    292387
     388        #endregion
     389
    293390        public void process(IControlEncryption sender)
    294391        {
     
    298395        }
    299396
     397        // main entry point to the KeySearcher
    300398        private void bruteforcePattern(KeyPattern pattern, IControlEncryption sender)
    301399        {
     
    388486            if (!stop)
    389487                ProgressChanged(1, 1);
    390         }
    391 
    392         private void fillListWithDummies(int maxInList, LinkedList<ValueKey> costList)
    393         {
    394             ValueKey valueKey = new ValueKey();
    395             if (this.costMaster.getRelationOperator() == RelationOperator.LessThen)
    396                 valueKey.value = double.MaxValue;
    397             else
    398                 valueKey.value = double.MinValue;
    399             valueKey.key = "dummykey";
    400             valueKey.decryption = new byte[0];
    401             value_threshold = valueKey.value;
    402             LinkedListNode<ValueKey> node = costList.AddFirst(valueKey);
    403             for (int i = 1; i < maxInList; i++)
    404             {
    405                 node = costList.AddAfter(node, valueKey);
    406             }
    407488        }
    408489
     
    495576        }
    496577
     578        #region For TopList
     579
     580        private void fillListWithDummies(int maxInList, LinkedList<ValueKey> costList)
     581        {
     582            ValueKey valueKey = new ValueKey();
     583            if (this.costMaster.getRelationOperator() == RelationOperator.LessThen)
     584                valueKey.value = double.MaxValue;
     585            else
     586                valueKey.value = double.MinValue;
     587            valueKey.key = "dummykey";
     588            valueKey.decryption = new byte[0];
     589            value_threshold = valueKey.value;
     590            LinkedListNode<ValueKey> node = costList.AddFirst(valueKey);
     591            for (int i = 1; i < maxInList; i++)
     592            {
     593                node = costList.AddAfter(node, valueKey);
     594            }
     595        }
     596
    497597        private void updateToplist(LinkedList<ValueKey> costList)
    498598        {
     
    540640        }
    541641
     642        #endregion
     643
    542644        private void startThreads(IControlEncryption sender, int bytesToUse, KeyPattern[] patterns, BigInteger[] doneKeysA, BigInteger[] keycounters, BigInteger[] keysleft, Stack threadStack)
    543645        {
     
    582684        }
    583685
    584         public void PostExecution()
    585         {
    586         }
    587 
    588         public void Pause()
    589         {
    590         }
    591 
    592         public void Stop()
    593         {
    594             stop = true;
    595         }
    596 
    597         public void Initialize()
    598         {
    599         }
    600 
    601         public void Dispose()
    602         {
    603         }
    604 
    605         #endregion
    606 
    607         #region INotifyPropertyChanged Members
    608 
    609         public event PropertyChangedEventHandler PropertyChanged;
    610 
    611         public void OnPropertyChanged(string name)
    612         {
    613             if (PropertyChanged != null)
    614             {
    615                 PropertyChanged(this, new PropertyChangedEventArgs(name));
    616             }
    617         }
    618 
    619         #endregion
    620 
    621686        private void keyPatternChanged()
    622687        {
     
    629694            {
    630695                this.process((IControlEncryption)sender);
    631             }
    632         }
    633 
    634         #region IControlEncryption Members
    635 
    636         private IControlEncryption controlMaster;
    637         [PropertyInfo(Direction.ControlMaster, "Control Master", "Used for bruteforcing", "", DisplayLevel.Beginner)]
    638         public IControlEncryption ControlMaster
    639         {
    640             get { return controlMaster; }
    641             set
    642             {
    643                 if (controlMaster != null)
    644                 {
    645                     controlMaster.keyPatternChanged -= keyPatternChanged;
    646                     controlMaster.OnStatusChanged -= onStatusChanged;
    647                 }
    648                 if (value != null)
    649                 {
    650                     Pattern = new KeyPattern(value.getKeyPattern());
    651                     value.keyPatternChanged += keyPatternChanged;
    652                     value.OnStatusChanged += onStatusChanged;
    653                     controlMaster = value;
    654                     OnPropertyChanged("ControlMaster");
    655                    
    656                 }
    657                 else
    658                     controlMaster = null;
    659             }
    660         }
    661 
    662         #endregion
    663 
    664         #region IControlCost Members
    665 
    666         private IControlCost costMaster;
    667         [PropertyInfo(Direction.ControlMaster, "Cost Master", "Used for cost calculation", "", DisplayLevel.Beginner)]
    668         public IControlCost CostMaster
    669         {
    670             get { return costMaster; }
    671             set
    672             {
    673                 costMaster = value;
    674696            }
    675697        }
     
    692714        }
    693715
    694         //used for delivering the results from the worker threads to the main thread:
     716        /// <summary>
     717        /// used for delivering the results from the worker threads to the main thread:
     718        /// </summary>
    695719        private struct ValueKey
    696720        {
Note: See TracChangeset for help on using the changeset viewer.