Changeset 8889


Ignore:
Timestamp:
Sep 16, 2020, 11:24:45 AM (16 months ago)
Author:
kopal
Message:

EnigmaAnalyzer:

  • added plugs input

Enigma/EnigmaAnalyzer:

  • some more code cleanup
Location:
trunk
Files:
6 edited

Legend:

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

    r8887 r8889  
    5353        private EnigmaCore _core;
    5454        private string _textInput;
    55         private string _keyInput;
    56         private IDictionary<int, IDictionary<string, double[]>> _statistics;       
     55        private string _keyInput;       
     56
    5757        private string _textOutput;
    5858
     
    9595                {
    9696                    LogMessage("Presentation Error!", NotificationLevel.Error);
    97                 }               
     97                }
    9898                return string.Empty;
    9999            }
     
    104104        internal class UnknownToken
    105105        {
    106             internal string text;
    107             internal int position;
     106            internal string _text;
     107            internal int _position;
    108108
    109109            internal UnknownToken(char c, int position)
    110110            {
    111                 this.text = char.ToString(c);
    112                 this.position = position;
     111                _text = char.ToString(c);
     112                _position = position;
    113113            }
    114114
    115115            public override string ToString()
    116116            {
    117                 return "[" + text + "," + position + "]";
     117                return "[" + _text + "," + _position + "]";
    118118            }
    119119        }
     
    150150                            lowerList.Add(new UnknownToken(text[i], i));
    151151                        }
    152                        
     152
    153153                    }                                      //underconstruction end
    154154                    result.Append(char.ToUpper(text[i])); // FIXME: shall save positions of lowercase letters
     
    166166                    else
    167167                    {
    168                         unknownList.Last().text += symbol;
     168                        unknownList.Last()._text += symbol;
    169169                    }
    170170                }
     
    173173            return result.ToString().ToUpper();
    174174        }
    175 
    176         //// legacy code
    177         //switch (settings.UnknownSymbolHandling)
    178         //{
    179         //    case 0: // ignore
    180         //        result.Append(c);
    181         //        break;
    182         //    case 1: // remove
    183         //        continue;
    184         //    case 2: // replace by X
    185         //        result.Append('X');
    186         //        break;
    187         //}
    188175
    189176        /// <summary>
     
    198185            foreach (UnknownToken token in unknownList)
    199186            {
    200                 workstring.Insert(token.position, token.text);
     187                workstring.Insert(token._position, token._text);
    201188            }
    202189
    203190            foreach (UnknownToken token in lowerList)   //Solution for preserve FIXME underconstruction
    204191            {
    205                 char help = workstring[token.position];
    206                 workstring.Remove(token.position, 1);
    207                 workstring.Insert(token.position, char.ToLower(help));
     192                char help = workstring[token._position];
     193                workstring.Remove(token._position, 1);
     194                workstring.Insert(token._position, char.ToLower(help));
    208195            }                                           //underconstruction end
    209196
     
    229216        public Enigma()
    230217        {
    231             this._settings = new EnigmaSettings();
    232             this._core = new EnigmaCore(this);
    233             this._statistics = new Dictionary<int, IDictionary<string, double[]>>();
    234            
     218            _settings = new EnigmaSettings();
     219            _core = new EnigmaCore(this);
     220
    235221            _enigmaPresentationFrame = new EnigmaPresentationFrame(this);
    236222            EnigmaPresentation myPresentation = _enigmaPresentationFrame.EnigmaPresentation;
    237             this.Presentation = _enigmaPresentationFrame;
    238             //this.Presentation.IsVisibleChanged += presentation_isvisibleChanged;
    239             this._settings.PropertyChanged += _enigmaPresentationFrame.EnigmaPresentation.settings_OnPropertyChange;
    240             this._settings.PropertyChanged += settings_OnPropertyChange;
    241             this._enigmaPresentationFrame.EnigmaPresentation.fireLetters += fireLetters;
    242             this._enigmaPresentationFrame.EnigmaPresentation.newInput += newInput;
     223            Presentation = _enigmaPresentationFrame;
     224            //Presentation.IsVisibleChanged += presentation_isvisibleChanged;
     225            _settings.PropertyChanged += _enigmaPresentationFrame.EnigmaPresentation.settings_OnPropertyChange;
     226            _enigmaPresentationFrame.EnigmaPresentation.fireLetters += fireLetters;
     227            _enigmaPresentationFrame.EnigmaPresentation.newInput += newInput;
    243228        }
    244229
     
    258243        }
    259244
    260         private void fireLetters(object sender, EventArgs args) 
    261         {
    262             Object[] carrier = sender as Object[];
    263 
    264             this._textOutput = (String)carrier[0] ;
     245        private void fireLetters(object sender, EventArgs args)
     246        {
     247            object[] carrier = sender as object[];
     248
     249            _textOutput = (string)carrier[0];
    265250            int x = (int)carrier[1];
    266251            int y = (int)carrier[2];
    267            
    268             ShowProgress(x,y);
    269         }
    270 
    271         private void settings_OnPropertyChange(object sender, PropertyChangedEventArgs e)
    272         {
    273             EnigmaSettings dummyset = sender as EnigmaSettings;
    274             //myPresentation.settingsChanged(dummyset);                       
    275             //LogMessage("OnPropertyChange " + e.PropertyName, NotificationLevel.Debug);
    276         }
     252
     253            ShowProgress(x, y);
     254        }     
    277255
    278256        #endregion
     
    282260        public ISettings Settings
    283261        {
    284             get { return this._settings; }
     262            get { return _settings; }
    285263        }
    286264
     
    298276        public string TextInput
    299277        {
    300             get 
    301             { 
    302                 return _textInput; 
     278            get
     279            {
     280                return _textInput;
    303281            }
    304282            set
    305283            {               
    306                 if (value != _textInput)
    307                 {
    308                     _textInput = value;
    309                     OnPropertyChanged("TextInput");
    310                 }
     284                _textInput = value;
     285                OnPropertyChanged("TextInput");               
    311286            }
    312287        }
     
    315290        public string KeyInput
    316291        {
    317             get 
    318             { 
    319                 return _keyInput; 
     292            get
     293            {
     294                return _keyInput;
    320295            }
    321296            set
    322             {
    323                 if (!_isrunning)
    324                 {
    325                     return;
    326                 }
    327                 if (!string.IsNullOrEmpty(value) && value != _keyInput)
    328                 {
    329                     _keyInput = value;
    330                     OnPropertyChanged("KeyInput");                   
    331                 }
    332             }
    333         }
     297            {               
     298                _keyInput = value;
     299                OnPropertyChanged("KeyInput");               
     300            }
     301        }       
    334302
    335303        [PropertyInfo(Direction.OutputData, "TextOutputCaption", "TextOutputTooltip", false)]
     
    337305        {
    338306            get
    339             { 
    340                 return _textOutput; 
     307            {
     308                return _textOutput;
    341309            }
    342310            set
     
    353321        public void PreExecution()
    354322        {
    355            
     323
    356324        }
    357325
    358326        public void Execute()
    359327        {
    360             if (!string.IsNullOrEmpty(KeyInput)) 
    361             {             
     328            if (!string.IsNullOrEmpty(KeyInput))
     329            {
    362330                _settings.SetKeySettings(KeyInput);
    363331            }
     
    391359            }
    392360
    393             _running = true;         
     361            _running = true;
    394362
    395363            // re-set the key, in case we get executed again during single run
     
    397365
    398366            // do the encryption
    399             _textOutput = FormattedEncrypt(_settings.Alphabet.IndexOf(_settings.InitialRotorPos[2]), 
     367            _textOutput = FormattedEncrypt(_settings.Alphabet.IndexOf(_settings.InitialRotorPos[2]),
    400368                _settings.Alphabet.IndexOf(_settings.InitialRotorPos[1]),
    401                 _settings.Alphabet.IndexOf(_settings.InitialRotorPos[0]), 
    402                 0, _textInput);                   
    403          
     369                _settings.Alphabet.IndexOf(_settings.InitialRotorPos[0]),
     370                0, _textInput);
     371
    404372            // "fire" the output
    405373            OnPropertyChanged("TextOutput");
     
    431399        {
    432400        }
    433        
     401
    434402        /// <summary>
    435403        /// Logs a message to the Cryptool console
  • trunk/CrypPlugins/EnigmaAnalyzer/EnigmaAnalyzer.cs

    r8887 r8889  
    5959        private string _plaintext = string.Empty;
    6060        private string _key = string.Empty;
     61        private string _plugsInput = string.Empty;
    6162
    6263        private UiResultReporter _resultReporter = null;
     
    8687            }
    8788            set
    88             {
    89                 if (!string.IsNullOrEmpty(value) && value != _ciphertext)
    90                 {
    91                     _ciphertext = value;
    92                     OnPropertyChanged("Ciphertext");
    93                 }
     89            {               
     90                _ciphertext = value;               
    9491            }
    9592        }
     
    103100            }
    104101            set
    105             {
    106                 if (!string.IsNullOrEmpty(value) && value != _crib)
    107                 {
    108                     _crib = value;
    109                     OnPropertyChanged("Crib");
    110                 }
     102            {               
     103                _crib = value;               
     104            }
     105        }
     106
     107        [PropertyInfo(Direction.InputData, "PlugsInputCaption", "PlugsInputTooltip", false)]
     108        public string PlugsInput
     109        {
     110            get
     111            {
     112                return _plugsInput;
     113            }
     114            set
     115            {                               
     116                _plugsInput = value;               
    111117            }
    112118        }
     
    274280                    break;
    275281                case AnalysisMode.IC_SEARCH:
     282                    _resultReporter_OnNewCryptanalysisStep(new NewCryptanalysisStepArgs("IoC Search"));
    276283                    PerformICTrigramSearch(true);
    277284                    break;
    278285                case AnalysisMode.TRIGRAM_SEARCH:
     286                    _resultReporter_OnNewCryptanalysisStep(new NewCryptanalysisStepArgs("Trigram Search"));
    279287                    PerformICTrigramSearch(false);
    280288                    break;
    281289                case AnalysisMode.HILLCLIMBING:
     290                    _resultReporter_OnNewCryptanalysisStep(new NewCryptanalysisStepArgs("Hillclimbing"));
    282291                    PerformHillclimbingSimulatedAnnealing(HcSaRunnable.Mode.HC);
    283292                    break;
    284293                case AnalysisMode.SIMULATED_ANNEALING:
     294                    _resultReporter_OnNewCryptanalysisStep(new NewCryptanalysisStepArgs("Simulated Annealing"));
    285295                    PerformHillclimbingSimulatedAnnealing(HcSaRunnable.Mode.SA);
    286296                    break;
    287297                case AnalysisMode.GILLOGLY:
     298                    _resultReporter_OnNewCryptanalysisStep(new NewCryptanalysisStepArgs("Gillogly"));
    288299                    PerformGilloglyAttack();
    289300                    break;
     
    436447            Key lowKey = new Key();
    437448            Key highKey = new Key();
     449
    438450            string indicatorS = "";
    439451            string indicatorMessageKeyS = "";
     
    444456
    445457            int threads = _settings.CoresUsed + 1;
     458
     459            //check, if we have plugs
     460            if (!findSettingsIc)
     461            {
     462                if (string.IsNullOrEmpty(PlugsInput))
     463                {
     464                    GuiLogMessage("No plugs given. Trigram search can not work without any plugs", NotificationLevel.Error);
     465                    return;
     466                }               
     467                lowKey.setStecker(PlugsInput);
     468                highKey.setStecker(PlugsInput);
     469            }           
    446470
    447471            //convert ciphertext to numerical representation
  • trunk/CrypPlugins/EnigmaAnalyzer/Properties/Resources.Designer.cs

    r8885 r8889  
    602602       
    603603        /// <summary>
     604        ///   Sucht eine lokalisierte Zeichenfolge, die Plugs ähnelt.
     605        /// </summary>
     606        public static string PlugsInputCaption {
     607            get {
     608                return ResourceManager.GetString("PlugsInputCaption", resourceCulture);
     609            }
     610        }
     611       
     612        /// <summary>
     613        ///   Sucht eine lokalisierte Zeichenfolge, die Plugs, that are used during Trigram Search. ähnelt.
     614        /// </summary>
     615        public static string PlugsInputTooltip {
     616            get {
     617                return ResourceManager.GetString("PlugsInputTooltip", resourceCulture);
     618            }
     619        }
     620       
     621        /// <summary>
    604622        ///   Sucht eine lokalisierte Zeichenfolge, die Ranking ähnelt.
    605623        /// </summary>
  • trunk/CrypPlugins/EnigmaAnalyzer/Properties/Resources.de.resx

    r8883 r8889  
    118118    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    119119  </resheader>
     120  <data name="AnalysisLanguageCaption" xml:space="preserve">
     121    <value>Sprache</value>
     122  </data>
     123  <data name="AnalysisLanguageTooltip" xml:space="preserve">
     124    <value>Verwende diese Sprache für die Kostenfunktion.</value>
     125  </data>
     126  <data name="AnalysisModeCaption" xml:space="preserve">
     127    <value>Analysemodus</value>
     128  </data>
     129  <data name="AnalysisModeTooltip" xml:space="preserve">
     130    <value>Welcher Kryptoanalysemodus soll ausgeführt werden?</value>
     131  </data>
     132  <data name="AnalysisTypeGroup" xml:space="preserve">
     133    <value>Analyseverfahren</value>
     134  </data>
     135  <data name="CiphertextCaption" xml:space="preserve">
     136    <value>Geheimtext</value>
     137  </data>
     138  <data name="CiphertextTooltip" xml:space="preserve">
     139    <value>Der zu analysierender Geheimtext</value>
     140  </data>
     141  <data name="CribCaption" xml:space="preserve">
     142    <value>Crib</value>
     143  </data>
     144  <data name="CribPositionFromCaption" xml:space="preserve">
     145    <value>Crib-Position von</value>
     146  </data>
     147  <data name="CribPositionFromTooltip" xml:space="preserve">
     148    <value>Startposition des während der Analyse zu verwendenen Cribbs</value>
     149  </data>
     150  <data name="CribPositionToCaption" xml:space="preserve">
     151    <value>Crib-Position bis</value>
     152  </data>
     153  <data name="CribPositionToTooltip" xml:space="preserve">
     154    <value>Endposition des während der Analyse zu verwendenen Cribs</value>
     155  </data>
     156  <data name="CribTooltip" xml:space="preserve">
     157    <value>Crib, der während der Kryptoanalyse mit der Turing-Bombe verwendet wird.</value>
     158  </data>
     159  <data name="EndLabel" xml:space="preserve">
     160    <value>Ende:</value>
     161  </data>
     162  <data name="GreekRingFromCaption" xml:space="preserve">
     163    <value>Griechischer Ring von</value>
     164  </data>
     165  <data name="GreekRingFromTooltip" xml:space="preserve">
     166    <value>Erster Ring, der in der griechischen Position zu analysieren ist.</value>
     167  </data>
     168  <data name="GreekRingToCaption" xml:space="preserve">
     169    <value>Griechischer Ring bis</value>
     170  </data>
     171  <data name="GreekRingToTooltip" xml:space="preserve">
     172    <value>Letzter Ring, der in der griechischen Position zu analysieren ist.</value>
     173  </data>
     174  <data name="GreekRoto PositionToTooltip" xml:space="preserve">
     175    <value>Letzte zu analysierende Rotorstellung in der griechischer Position.</value>
     176  </data>
     177  <data name="GreekRotorFromCaption" xml:space="preserve">
     178    <value>Griechischer Rotor von</value>
     179  </data>
     180  <data name="GreekRotorFromTooltip" xml:space="preserve">
     181    <value>Erster Rotor, der in der griechischen Position zu analysieren ist.</value>
     182  </data>
     183  <data name="GreekRotorPositionFromCaption" xml:space="preserve">
     184    <value>Griechische Rotorstellung von</value>
     185  </data>
     186  <data name="GreekRotorPositionFromTooltip" xml:space="preserve">
     187    <value>Erste Rotorstellung, welche in der griechischen Position zu analysieren ist.</value>
     188  </data>
     189  <data name="GreekRotorPositionToCaption" xml:space="preserve">
     190    <value>Griechische Rotorstellung bis</value>
     191  </data>
     192  <data name="GreekRotorToCaption" xml:space="preserve">
     193    <value>Griechischer Rotor bis</value>
     194  </data>
     195  <data name="GreekRotorToTooltip" xml:space="preserve">
     196    <value>Letzter Rotor, der in griechischer Stellung zu analysieren ist.</value>
     197  </data>
     198  <data name="KeyCaption" xml:space="preserve">
     199    <value>Bester Schlüssel</value>
     200  </data>
     201  <data name="KeyHeader" xml:space="preserve">
     202    <value>Schlüssel</value>
     203  </data>
     204  <data name="KeyTooltip" xml:space="preserve">
     205    <value>Der beste Schlüssel, der während der Analyse gefunden wurde.</value>
     206  </data>
     207  <data name="LeftRingFromCaption" xml:space="preserve">
     208    <value>Linker Ring von</value>
     209  </data>
     210  <data name="LeftRingFromTooltip" xml:space="preserve">
     211    <value>Erster Ring, der in der linken Position zu analysieren ist.</value>
     212  </data>
     213  <data name="LeftRingToCaption" xml:space="preserve">
     214    <value>Linker Ring bis</value>
     215  </data>
     216  <data name="LeftRingToTooltip" xml:space="preserve">
     217    <value>Letzter Ring, der in der linken Position zu analysieren ist.</value>
     218  </data>
     219  <data name="LeftRotorFromCaption" xml:space="preserve">
     220    <value>Letzte zu analysierende Rotorstellung in der linken Position.</value>
     221  </data>
     222  <data name="LeftRotorFromTooltip" xml:space="preserve">
     223    <value>Linker Rotor von</value>
     224  </data>
     225  <data name="LeftRotorPositionFromCaption" xml:space="preserve">
     226    <value>Erster Rotor, der in der linken Position zu analysieren ist.</value>
     227  </data>
     228  <data name="LeftRotorPositionFromTooltip" xml:space="preserve">
     229    <value>Linke Rotorstellung von</value>
     230  </data>
     231  <data name="LeftRotorPositionToCaption" xml:space="preserve">
     232    <value>Erste Rotorstellung, welche in der linken Position zu analysieren ist.</value>
     233  </data>
     234  <data name="LeftRotorPositionToTooltip" xml:space="preserve">
     235    <value>Linke Rotorstellung bis</value>
     236  </data>
     237  <data name="LeftRotorToCaption" xml:space="preserve">
     238    <value>Linker Rotor bis</value>
     239  </data>
     240  <data name="LeftRotorToTooltip" xml:space="preserve">
     241    <value>Letzter Rotor, der in linker Position zu analysieren ist.</value>
     242  </data>
     243  <data name="LocalLabel" xml:space="preserve">
     244    <value>Lokal</value>
     245  </data>
     246  <data name="MachineModelCaption" xml:space="preserve">
     247    <value>Maschinen-Modell</value>
     248  </data>
     249  <data name="MachineModelTooltip" xml:space="preserve">
     250    <value>Das Modell der Enigma, das analysiert werden soll.</value>
     251  </data>
     252  <data name="MiddleRingFromCaption" xml:space="preserve">
     253    <value>Mittler Ring von</value>
     254  </data>
     255  <data name="MiddleRingFromTooltip" xml:space="preserve">
     256    <value>Erster Ring, der in der mittleren Position zu analysieren ist.</value>
     257  </data>
     258  <data name="MiddleRingToCaption" xml:space="preserve">
     259    <value>Mittler Ring bis</value>
     260  </data>
     261  <data name="MiddleRingToTooltip" xml:space="preserve">
     262    <value>Letzter Ring, der in der mittleren Position zu analysieren ist.</value>
     263  </data>
     264  <data name="MiddleRotorFromCaption" xml:space="preserve">
     265    <value>Letzte zu analysierende Rotorstellung in der linken Position.</value>
     266  </data>
     267  <data name="MiddleRotorFromTooltip" xml:space="preserve">
     268    <value>Mittler Rotor von</value>
     269  </data>
     270  <data name="MiddleRotorPositionFromCaption" xml:space="preserve">
     271    <value>Erster Rotor, der in der mittleren Position zu analysieren ist.</value>
     272  </data>
     273  <data name="MiddleRotorPositionFromTooltip" xml:space="preserve">
     274    <value>Mittler Rotorstellung von</value>
     275  </data>
     276  <data name="MiddleRotorPositionToCaption" xml:space="preserve">
     277    <value>Erste Rotorstellung, welche in der mittleren Position zu analysieren ist.</value>
     278  </data>
     279  <data name="MiddleRotorPositionToTooltip" xml:space="preserve">
     280    <value>Mittlere Rotorstellung bis</value>
     281  </data>
     282  <data name="MiddleRotorToCaption" xml:space="preserve">
     283    <value>Mittlerer Rotor bis</value>
     284  </data>
     285  <data name="MiddleRotorToTooltip" xml:space="preserve">
     286    <value>Letzter Rotor, der in der mittleren Position zu analysieren ist.</value>
     287  </data>
     288  <data name="PlaintextCaption" xml:space="preserve">
     289    <value>Bester Klartext</value>
     290  </data>
     291  <data name="PlaintextTooltip" xml:space="preserve">
     292    <value>Der beste Klartext der während der Analyse gefunden wurde.</value>
     293  </data>
     294  <data name="PluginCaption" xml:space="preserve">
     295    <value>Enigma Analyzer</value>
     296  </data>
     297  <data name="PluginTooltip" xml:space="preserve">
     298    <value>Komponente zur Kryptoanalyse verschiedener Typen der Enigma-Rotorschlüsselmaschine.</value>
     299  </data>
     300  <data name="PlugsInputCaption" xml:space="preserve">
     301    <value>Stecker</value>
     302  </data>
     303  <data name="PlugsInputTooltip" xml:space="preserve">
     304    <value>Stecker, die bei der Trigramm-Suche verwendet werden.</value>
     305  </data>
     306  <data name="RankingHeader" xml:space="preserve">
     307    <value>Rangfolge</value>
     308  </data>
     309  <data name="ReflectorFromCaption" xml:space="preserve">
     310    <value>Reflektor von</value>
     311  </data>
     312  <data name="ReflectorFromTooltip" xml:space="preserve">
     313    <value>Erster zu analysierender Reflektor</value>
     314  </data>
     315  <data name="ReflectorFromTooltip1" xml:space="preserve">
     316    <value>Letzter zu analysierender Reflektor</value>
     317  </data>
     318  <data name="ReflectorGroup" xml:space="preserve">
     319    <value>Reflektoren</value>
     320  </data>
     321  <data name="ReflectorToCaption" xml:space="preserve">
     322    <value>Reflektor zu</value>
     323  </data>
     324  <data name="RightRingFromCaption" xml:space="preserve">
     325    <value>Rechter Ring von</value>
     326  </data>
     327  <data name="RightRingFromTooltip" xml:space="preserve">
     328    <value>Erster Ring, der in der rechten Position zu analysieren ist.</value>
     329  </data>
     330  <data name="RightRingToCaption" xml:space="preserve">
     331    <value>Rechter Ring bis</value>
     332  </data>
     333  <data name="RightRingToTooltip" xml:space="preserve">
     334    <value>Letzter Ring, der in der rechten Position zu analysieren ist.</value>
     335  </data>
     336  <data name="RightRotorFromCaption" xml:space="preserve">
     337    <value>Letzte zu analysierende Rotorstellung in der rechten Position.</value>
     338  </data>
     339  <data name="RightRotorFromTooltip" xml:space="preserve">
     340    <value>Rechter Rotor von</value>
     341  </data>
     342  <data name="RightRotorPositionFromCaption" xml:space="preserve">
     343    <value>Erster Rotor, der in der rechten Position zu analysieren ist.</value>
     344  </data>
     345  <data name="RightRotorPositionFromTooltip" xml:space="preserve">
     346    <value>Rechter Rotorstellung von</value>
     347  </data>
     348  <data name="RightRotorPositionToCaption" xml:space="preserve">
     349    <value>Erste Rotorstellung, welche in der rechten Position zu analysieren ist.</value>
     350  </data>
     351  <data name="RightRotorPositionToTooltip" xml:space="preserve">
     352    <value>Rechte Rotorstellung bis</value>
     353  </data>
     354  <data name="RightRotorToCaption" xml:space="preserve">
     355    <value>Rechter Rotor bis</value>
     356  </data>
     357  <data name="RightRotorToTooltip" xml:space="preserve">
     358    <value>Letzter Rotor, der in rechter Position zu analysieren ist.</value>
     359  </data>
     360  <data name="RingGroup" xml:space="preserve">
     361    <value>Ringstellungen</value>
     362  </data>
     363  <data name="RotorGroup" xml:space="preserve">
     364    <value>Rotoren</value>
     365  </data>
     366  <data name="RotorPositionGroup" xml:space="preserve">
     367    <value>Rotorstellungen</value>
     368  </data>
     369  <data name="StartLabel" xml:space="preserve">
     370    <value>Startzeit:</value>
     371  </data>
     372  <data name="StepLabel" xml:space="preserve">
     373    <value>Analyseschritt:</value>
     374  </data>
     375  <data name="TextHeader" xml:space="preserve">
     376    <value>Text</value>
     377  </data>
     378  <data name="ThreadsCaption" xml:space="preserve">
     379    <value>Threads</value>
     380  </data>
     381  <data name="ThreadsTooltip" xml:space="preserve">
     382    <value>Wie viele Threads sollen während der Analyse verwendet werden?</value>
     383  </data>
     384  <data name="TimeLeftLabel" xml:space="preserve">
     385    <value>Verbleibende Zeit:</value>
     386  </data>
     387  <data name="TopTenLabel" xml:space="preserve">
     388    <value>Bestenliste</value>
     389  </data>
     390  <data name="ValueHeader" xml:space="preserve">
     391    <value>Wert</value>
     392  </data>
    120393</root>
  • trunk/CrypPlugins/EnigmaAnalyzer/Properties/Resources.resx

    r8885 r8889  
    298298    <value>Component to cryptanalyze different types of the Enigma crypto machine</value>
    299299  </data>
     300  <data name="PlugsInputCaption" xml:space="preserve">
     301    <value>Plugs</value>
     302  </data>
     303  <data name="PlugsInputTooltip" xml:space="preserve">
     304    <value>Plugs, that are used during Trigram Search.</value>
     305  </data>
    300306  <data name="RankingHeader" xml:space="preserve">
    301307    <value>Ranking</value>
  • trunk/LibSource/EnigmaAnalyzerLib/EnigmaAnalyzer/Key.cs

    r8888 r8889  
    19711971            /* alphabetic, no repetitions */
    19721972
    1973             for (int i = 0; i < len; i++) {
     1973            for (int i = 0; i < len; i++)
     1974            {
    19741975                letters[i] = EnigmaUtils.getIndex(s[i]);
    19751976                if (letters[i] == -1)
Note: See TracChangeset for help on using the changeset viewer.