public static string AnalyzeNoKey(string inStr) { var decryptList = new DecryptObjList(); // Try the Caesar Ciphers for (var i = 1; i < 26; i++) { var decryptStr = CaesarTools.RotNDecrypt(i, inStr); var count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { var keyStr = "ROT-" + i; DecryptObjList.AddObj(new DecryptObj(keyStr, count, decryptStr)); } } // Now try the Rail Fence Ciphers for (var i = 3; i < 7; i++) { var decryptStr = RailFence.RailFenceDecrypt(inStr, i); var count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { var keyStr = "Rail Fence-" + i; DecryptObjList.AddObj(new DecryptObj(keyStr, count, decryptStr)); } } return(decryptList.BuildList()); }
public static string AnalyzeKeyGuess(string inStr, string keyGuess) { var outStr = new StringBuilder(); var count = 0; var decryptList = new DecryptObjList(); // Try Vigenere var decryptStr = Vigenere.VigenereDecode(inStr, keyGuess); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj("Vigenere", count, decryptStr)); } // Try Fractionated Morse decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyGuess); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj("Fractionated Morse", count, decryptStr)); } // Try Keyword decryptStr = Miscellaneous.KeywordCipherDecode(inStr, keyGuess, ""); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj("Keyword", count, decryptStr)); } // Try Playfair decryptStr = Playfair.PlayfairDecrypt(inStr, keyGuess); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj("Playfair", count, decryptStr)); } return(decryptList.BuildList()); }
public static string FracMorseKeyBruteForce(string inStr) { var outStr = new StringBuilder(); var keyStr = new StringBuilder(); var count = 0; var decryptList = new DecryptObjList(); // 1 letter keys for (var i1 = 0; i1 < 26; i1++) { keyStr.Length = 0; keyStr.Append((char)('a' + i1)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } // 2 letter keys for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}", (char)('a' + i1), (char)('a' + i2)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } // 3 letter keys for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { for (var i3 = 3; i3 < 26; i3++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}{2}", (char)('a' + i1), (char)('a' + i2), (char)('a' + i3)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } } // 4 letter keys for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { for (var i3 = 0; i3 < 26; i3++) { for (var i4 = 0; i4 < 26; i4++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}{2}{3}", (char)('a' + i1), (char)('a' + i2), (char)('a' + i3), (char)('a' + i4)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } } } if (FullRun) { // 5 letter keys for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { for (var i3 = 0; i3 < 26; i3++) { for (var i4 = 0; i4 < 26; i4++) { for (var i5 = 0; i5 < 26; i5++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}{2}{3}{4}", (char)('a' + i1), (char)('a' + i2), (char)('a' + i3), (char)('a' + i4), (char)('a' + i5)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } } } } // 6 letter keys - 5 letters and x for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { for (var i3 = 0; i3 < 26; i3++) { for (var i4 = 0; i4 < 26; i4++) { for (var i5 = 0; i5 < 26; i5++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}{2}{3}{4}x", (char)('a' + i1), (char)('a' + i2), (char)('a' + i3), (char)('a' + i4), (char)('a' + i5)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } } } } // 7 letter keys - 5 letters and xx for (var i1 = 0; i1 < 26; i1++) { for (var i2 = 0; i2 < 26; i2++) { for (var i3 = 0; i3 < 26; i3++) { for (var i4 = 0; i4 < 26; i4++) { for (var i5 = 0; i5 < 26; i5++) { keyStr.Length = 0; keyStr.AppendFormat("{0}{1}{2}{3}{4}xx", (char)('a' + i1), (char)('a' + i2), (char)('a' + i3), (char)('a' + i4), (char)('a' + i5)); var decryptStr = Morse.FracMorseCodeDecrypt(inStr, keyStr.ToString()); count = NumberOfLibraryMatches(decryptStr); if (count >= PositiveMatchCount) { DecryptObjList.AddObj(new DecryptObj(keyStr.ToString(), count, decryptStr)); } } } } } } } return(decryptList.BuildList()); }