Changeset 744


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
Location:
trunk
Files:
4 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
  • trunk/CrypPlugins/KeySearcher/KeySearcher.csproj

    r419 r744  
    44    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    55    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    6     <ProductVersion>9.0.30729</ProductVersion>
     6    <ProductVersion>9.0.21022</ProductVersion>
    77    <SchemaVersion>2.0</SchemaVersion>
    88    <ProjectGuid>{0579E099-66B2-43C3-B8A0-43CAE4895E68}</ProjectGuid>
     
    5050    <Reference Include="System.Data" />
    5151    <Reference Include="System.Xml" />
     52    <Reference Include="UIAutomationProvider">
     53      <RequiredTargetFramework>3.0</RequiredTargetFramework>
     54    </Reference>
    5255    <Reference Include="WindowsBase">
    5356      <RequiredTargetFramework>3.0</RequiredTargetFramework>
     
    5659  <ItemGroup>
    5760    <Compile Include="KeySearcher.cs" />
     61    <Compile Include="KeySearcherQuickWatchPresentation.xaml.cs">
     62      <DependentUpon>KeySearcherQuickWatchPresentation.xaml</DependentUpon>
     63    </Compile>
    5864    <Compile Include="KeySearcherSettings.cs" />
    5965    <Compile Include="Properties\AssemblyInfo.cs" />
     
    6773  <ItemGroup>
    6874    <Resource Include="Images\icon.png" />
     75  </ItemGroup>
     76  <ItemGroup>
     77    <Page Include="KeySearcherQuickWatchPresentation.xaml">
     78      <SubType>Designer</SubType>
     79      <Generator>MSBuild:Compile</Generator>
     80    </Page>
    6981  </ItemGroup>
    7082  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • trunk/CrypPlugins/SDES/SDES.cs

    r743 r744  
    282282                listCryptoolStreamsOut.Clear();
    283283
    284                 if (controlSlave != null)
    285                     controlSlave.Dispose();
    286 
    287284            }
    288285            catch (Exception ex)
     
    527524            {
    528525                GuiLogMessage(exception.Message, NotificationLevel.Error);
     526                GuiLogMessage(exception.StackTrace, NotificationLevel.Error);
    529527            }
    530528            finally
     
    546544        private SDES plugin;
    547545        private byte[] input;
    548         private List<CryptoolStream> listCryptoolStreams = new List<CryptoolStream>();
    549546        ElectronicCodeBook ecb;
    550547        CipherBlockChaining cbc;
     
    586583        public byte[] Encrypt(byte[] key, int blocksize)
    587584        {
    588             ((SDESSettings)plugin.Settings).Action = 0;
    589             return execute(key, blocksize);
     585            return execute(key, blocksize, 0);
    590586        }
    591587
     
    598594        public byte[] Decrypt(byte[] key, int blocksize)
    599595        {
    600             ((SDESSettings)plugin.Settings).Action = 1;
    601             return execute(key, blocksize);
     596            return execute(key, blocksize, 1);
    602597        }
    603598
     
    631626                    bkey[count++] = 1;
    632627            return bkey;
    633         }
    634 
    635         /// <summary>
    636         /// Called by the SDES plugin if it is disposing
    637         /// closes all privaet streams
    638         /// </summary>
    639         public void Dispose()
    640         {
    641             foreach (CryptoolStream cs in listCryptoolStreams)
    642                 cs.Close();
    643         }
     628        }       
    644629
    645630        #endregion
     
    653638        /// <param name="blocksize">blocksize</param>
    654639        /// <returns>encrypted/decrypted text</returns>
    655         private byte[] execute(byte[] key, int blocksize)
     640        private byte[] execute(byte[] key, int blocksize, int action)
    656641        {
    657642            byte[] output;
     
    678663         
    679664            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
    680             if (((SDESSettings)plugin.Settings).Mode == 0)
     665            if (((SDESSettings)plugin.Settings).Mode == 0 && action == 0)
    681666            {                               
    682                 output = ecb.decrypt(input, key, blocksize);
    683             }
    684             else
     667                output = ecb.encrypt(input, key, blocksize);
     668            }
     669            else if(((SDESSettings)plugin.Settings).Mode == 1 && action == 0)
    685670            {               
    686                 output = cbc.decrypt(input, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)),blocksize);
     671                output = cbc.encrypt(input, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)),blocksize);
    687672            }           
    688            
     673            else if(((SDESSettings)plugin.Settings).Mode == 0 && action == 1)
     674            {
     675                output = ecb.decrypt(input, key,blocksize);
     676            }
     677            else if (((SDESSettings)plugin.Settings).Mode == 1 && action == 1)
     678            {
     679                output = cbc.decrypt(input, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)), blocksize);
     680            }   
    689681            return output;
    690682        }
     
    17651757            int position = 0;
    17661758
    1767             while ((inputstream.Read(buffer, 0, 1)) > 0 && !this.mSdes.getStop())
     1759            while (!this.mSdes.getStop() && (inputstream.Read(buffer, 0, 1)) > 0)
    17681760            {
    17691761                //Step 1 get plaintext symbol
     
    18231815            int position = 0;
    18241816
    1825             while ((inputstream.Read(buffer, 0, 1)) > 0 && !this.mSdes.getStop())
     1817            while (!this.mSdes.getStop() && (inputstream.Read(buffer, 0, 1)) > 0)
    18261818            {
    18271819                //Step 1 get Symbol of Ciphertext
     
    19001892            int position = 0;
    19011893
    1902             while ((inputstream.Read(buffer, 0, 1)) > 0 && !this.mSdes.getStop())
     1894            while (!this.mSdes.getStop() && (inputstream.Read(buffer, 0, 1)) > 0)
    19031895            {
    19041896                //Step 1 get plaintext symbol
     
    19551947            int position = 0;
    19561948
    1957             while ((inputstream.Read(buffer, 0, 1)) > 0 && !this.mSdes.getStop())
     1949            while (!this.mSdes.getStop() && (inputstream.Read(buffer, 0, 1)) > 0)
    19581950            {
    19591951                //Step 1 get plaintext symbol
Note: See TracChangeset for help on using the changeset viewer.