From e622718c27c71123657fc5cc770c4bec057fee92 Mon Sep 17 00:00:00 2001 From: Milan Hanajik Date: Wed, 17 Jul 2019 06:47:08 +0200 Subject: [PATCH] (1) Encrypt console app. (2) Decode app.=> Decrypt (3) LocalSettings uses MemStream (4) PaddingMode.Zeros, ver. 2.18.1270 --- .gitignore | 6 +- Decode/Program.cs | 107 ---------------- .../Decode.csproj => Decrypt/Decrypt.csproj | 6 +- .../Decrypt.csproj.user | 0 Decrypt/Program.cs | 96 +++++++++++++++ Decrypt/Properties/AssemblyInfo.cs | 36 ++++++ {Decode => Decrypt}/app.config | 0 Encrypt/Encrypt.csproj | 64 ++++++++++ Encrypt/Program.cs | 93 ++++++++++++++ .../Properties/AssemblyInfo.cs | 6 +- Encrypt/app.config | 3 + TBF.sln | 14 ++- TBF/LocalSettings.cs | 114 ++++++++++-------- TBF/Program.cs | 4 - TBF/Properties/AssemblyInfo.cs | 4 +- clean.bat | 7 +- 16 files changed, 385 insertions(+), 175 deletions(-) delete mode 100644 Decode/Program.cs rename Decode/Decode.csproj => Decrypt/Decrypt.csproj (94%) rename Decode/Decode.csproj.user => Decrypt/Decrypt.csproj.user (100%) create mode 100644 Decrypt/Program.cs create mode 100644 Decrypt/Properties/AssemblyInfo.cs rename {Decode => Decrypt}/app.config (100%) create mode 100644 Encrypt/Encrypt.csproj create mode 100644 Encrypt/Program.cs rename {Decode => Encrypt}/Properties/AssemblyInfo.cs (90%) create mode 100644 Encrypt/app.config diff --git a/.gitignore b/.gitignore index d191d4144..2fe11e915 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,13 @@ Config/bin/ Config/obj/ -Decode/bin/ -Decode/obj/ +Decrypt/bin/ +Decrypt/obj/ DeviceTest/bin/ DeviceTest/obj/ Dirichlet.Numerics/bin Dirichlet.Numerics/obj +Encrypt/bin/ +Encrypt/obj/ GemCard/bin GemCard/obj GraphLib/bin diff --git a/Decode/Program.cs b/Decode/Program.cs deleted file mode 100644 index 49c9e0d04..000000000 --- a/Decode/Program.cs +++ /dev/null @@ -1,107 +0,0 @@ -using System; -using System.IO; -using System.Security.Cryptography; - -namespace Decode -{ - class Program - { - static byte[] cryptoKey = new byte[] { 235, 7, 236, 58, 24, 225, 97, 102, 231, 1, 121, 12, 177, 145, 87, 200, - 102, 85, 152, 73, 230, 203, 101, 169, 242, 213, 228, 219, 239, 157, 245, 156 }; - - static byte[] cryptoIV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; - - static void Main(string[] args) - { - if ((args.Length < 1) || !File.Exists(args[0])) - { - Console.WriteLine("Usage: Decode "); - Console.ReadKey(); - return; - } - - string fileName = args[0]; - - try - { - using (StreamReader reader = new StreamReader(fileName)) - { - if (reader.ReadLine().StartsWith(" rotate files - if (File.Exists(fileName + ".bak")) File.Delete(fileName + ".bak"); - File.Move(fileName, fileName + ".bak"); - File.Move(fileName + ".plain", fileName); - return; - } - else - { - Failed(fileName); - return; - } - } - catch (Exception) - { - Failed(fileName); - return; - } - } - - static void Failed(string fileName) - { - if (File.Exists(fileName + ".plain")) - { - File.Delete(fileName + ".plain"); - } - Console.WriteLine(string.Format("Decoding file {0} failed.", fileName)); - Console.ReadKey(); - } - } -} diff --git a/Decode/Decode.csproj b/Decrypt/Decrypt.csproj similarity index 94% rename from Decode/Decode.csproj rename to Decrypt/Decrypt.csproj index cd170fc7b..fec060c63 100644 --- a/Decode/Decode.csproj +++ b/Decrypt/Decrypt.csproj @@ -8,8 +8,8 @@ {D476ABBE-A455-4476-8A8D-3F6151217B51} Exe Properties - Decode - Decode + Decrypt + Decrypt v4.0 @@ -35,7 +35,7 @@ 4 - Decode.Program + Decrypt.Program diff --git a/Decode/Decode.csproj.user b/Decrypt/Decrypt.csproj.user similarity index 100% rename from Decode/Decode.csproj.user rename to Decrypt/Decrypt.csproj.user diff --git a/Decrypt/Program.cs b/Decrypt/Program.cs new file mode 100644 index 000000000..135921ce0 --- /dev/null +++ b/Decrypt/Program.cs @@ -0,0 +1,96 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace Decrypt +{ + /// + /// See also: + /// https://www.fluxbytes.com/csharp/encrypt-and-decrypt-files-in-c/ + /// + class Program + { + static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 }; + static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; + + static void Main(string[] args) + { + if ((args.Length < 1) || !File.Exists(args[0])) + { + Console.WriteLine("Usage: Decode "); + Console.ReadKey(); + return; + } + + string fileName = args[0]; + string intermediateFile = fileName + ".plain"; /// Intermediate file, output of cryptography decoding + string backupFile = fileName + ".bak"; + + try + { + using (StreamReader reader = new StreamReader(fileName)) + { + if (reader.ReadLine().StartsWith(" rotate files + if (File.Exists(backupFile)) File.Delete(backupFile); + File.Move(fileName, backupFile); + File.Move(intermediateFile, fileName); + return; + } + else + { + Failed(fileName, intermediateFile, ""); + return; + } + } + catch (Exception e) + { + Failed(fileName, intermediateFile, e.Message); + return; + } + } + + static void Failed(string fileName, string toBeDeleted, string message) + { + if (File.Exists(toBeDeleted)) + { + File.Delete(toBeDeleted); + } + Console.WriteLine(string.Format("Decryption of file {0} failed: {1}", fileName, message)); + Console.ReadKey(); + } + } +} diff --git a/Decrypt/Properties/AssemblyInfo.cs b/Decrypt/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..691855fcc --- /dev/null +++ b/Decrypt/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Decrypt")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Decrypt")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("c17ec788-0e12-4f9c-aadf-ea4e83a9f373")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/Decode/app.config b/Decrypt/app.config similarity index 100% rename from Decode/app.config rename to Decrypt/app.config diff --git a/Encrypt/Encrypt.csproj b/Encrypt/Encrypt.csproj new file mode 100644 index 000000000..023bb87d2 --- /dev/null +++ b/Encrypt/Encrypt.csproj @@ -0,0 +1,64 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {DA9B09F3-A99D-4883-A954-537560453674} + Exe + Properties + Encrypt + Encrypt + v4.0 + + + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + Encrypt.Program + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Encrypt/Program.cs b/Encrypt/Program.cs new file mode 100644 index 000000000..753ce201c --- /dev/null +++ b/Encrypt/Program.cs @@ -0,0 +1,93 @@ +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; + +namespace Encrypt +{ + /// + /// See also: + /// https://www.fluxbytes.com/csharp/encrypt-and-decrypt-files-in-c/ + /// + class Program + { + static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 }; + static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; + + static void Main(string[] args) + { + if ((args.Length < 1) || !File.Exists(args[0])) + { + Console.WriteLine("Usage: Encode "); + Console.ReadKey(); + return; + } + + string fileName = args[0]; + string intermediateFile = fileName + ".encrypted"; /// Intermediate file, output of cryptography encoding + string backupFile = fileName + ".bak"; + + try + { + using (StreamReader reader = new StreamReader(fileName)) + { + if (!reader.ReadLine().StartsWith(" rotate files + if (File.Exists(backupFile)) File.Delete(backupFile); + File.Move(fileName, backupFile); + File.Move(intermediateFile, fileName); + return; + } + else + { + Failed(fileName, intermediateFile); + return; + } + } + catch (Exception) + { + Failed(fileName, intermediateFile); + return; + } + } + + static void Failed(string fileName, string toBeDeleted) + { + if (File.Exists(toBeDeleted)) + { + File.Delete(toBeDeleted); + } + Console.WriteLine(string.Format("Encryption of file {0} failed.", fileName)); + Console.ReadKey(); + } + } +} diff --git a/Decode/Properties/AssemblyInfo.cs b/Encrypt/Properties/AssemblyInfo.cs similarity index 90% rename from Decode/Properties/AssemblyInfo.cs rename to Encrypt/Properties/AssemblyInfo.cs index 7b1ec09bf..8577113f5 100644 --- a/Decode/Properties/AssemblyInfo.cs +++ b/Encrypt/Properties/AssemblyInfo.cs @@ -5,11 +5,11 @@ using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle("Decode")] +[assembly: AssemblyTitle("Encrypt")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Decode")] +[assembly: AssemblyProduct("Encrypt")] [assembly: AssemblyCopyright("Copyright © 2019")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -20,7 +20,7 @@ using System.Runtime.InteropServices; [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("c17ec788-0e12-4f9c-aadf-ea4e83a9f373")] +[assembly: Guid("0f602531-6f1f-416e-af4d-9242855715a8")] // Version information for an assembly consists of the following four values: // diff --git a/Encrypt/app.config b/Encrypt/app.config new file mode 100644 index 000000000..e36560333 --- /dev/null +++ b/Encrypt/app.config @@ -0,0 +1,3 @@ + + + diff --git a/TBF.sln b/TBF.sln index 1bb3a95a7..8be5208c6 100644 --- a/TBF.sln +++ b/TBF.sln @@ -48,7 +48,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GemCard", "GemCard\GemCard. EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Statistics", "Statistics\Statistics.csproj", "{36755E1D-6FC3-4D9C-8DD3-0250D51532E0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decode", "Decode\Decode.csproj", "{D476ABBE-A455-4476-8A8D-3F6151217B51}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Decrypt", "Decrypt\Decrypt.csproj", "{D476ABBE-A455-4476-8A8D-3F6151217B51}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Encrypt", "Encrypt\Encrypt.csproj", "{DA9B09F3-A99D-4883-A954-537560453674}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -198,6 +200,16 @@ Global {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|Mixed Platforms.Build.0 = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.ActiveCfg = Release|x86 {D476ABBE-A455-4476-8A8D-3F6151217B51}.Release|x86.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Any CPU.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.ActiveCfg = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Debug|x86.Build.0 = Debug|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|Any CPU.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|Mixed Platforms.Build.0 = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.ActiveCfg = Release|x86 + {DA9B09F3-A99D-4883-A954-537560453674}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TBF/LocalSettings.cs b/TBF/LocalSettings.cs index 535ee2407..9f9bc6300 100644 --- a/TBF/LocalSettings.cs +++ b/TBF/LocalSettings.cs @@ -6,6 +6,7 @@ using System.IO; using System.Security.Cryptography; using System.Text; using System.Xml.Serialization; +using log4net; namespace TBF { @@ -19,12 +20,15 @@ namespace TBF [XmlRootAttribute("TestBenchFramework")] public class LocalSettings { - static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0]; + private static readonly ILog log = LogManager.GetLogger(typeof(LocalSettings)); + static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0]; - static byte[] cryptoKey = new byte[] { 235, 7, 236, 58, 24, 225, 97, 102, 231, 1, 121, 12, 177, 145, 87, 200, - 102, 85, 152, 73, 230, 203, 101, 169, 242, 213, 228, 219, 239, 157, 245, 156 }; + /// + /// Configuration file ecryption/decryption key and initialization vector + /// + static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 }; + static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; - static byte[] cryptoIV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; /// /// User interface language (used as CultureInfo(..) constructor argument). @@ -291,33 +295,37 @@ namespace TBF if (isEncrypted) { - int length = (int)(new FileInfo(fileName).Length); + /// Write settings to a string + StringBuilder plain = new StringBuilder(); - Stream stream = File.OpenRead(fileName); - using (BinaryReader binaryReader = new BinaryReader(stream)) + using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros }) { - /// Load encrypted binary data into an array - byte[] encrypted = new byte[length]; - int bytesRead = binaryReader.Read(encrypted, 0, length); - if (bytesRead != length) return null; - - using (RijndaelManaged myRijndael = new RijndaelManaged()) + using (FileStream fsCrypt = new FileStream(fileName, FileMode.Open)) { - // Create a decryptor to perform the stream transform. - ICryptoTransform decryptor = myRijndael.CreateDecryptor(cryptoKey, cryptoIV); - - // Create the streams used for decryption. - using (MemoryStream msDecrypt = new MemoryStream(encrypted)) + using (ICryptoTransform decryptor = aes.CreateDecryptor(key, IV)) { - using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) + using (CryptoStream cs = new CryptoStream(fsCrypt, decryptor, CryptoStreamMode.Read)) { - using (StreamReader srDecrypt = new StreamReader(csDecrypt)) + using (MemoryStream mStream = new MemoryStream()) { - TextReader txtReader = new StringReader(srDecrypt.ReadToEnd()); - LocalSettings ls = serializer.Deserialize(txtReader) as LocalSettings; + using (var writer = new BinaryWriter(mStream)) + { + int data; + while ((data = cs.ReadByte()) != -1) + { + if (data != 0) writer.Write((byte)data); + } + writer.Flush(); + mStream.Position = 0; - ls.UpdateResultsOutputData(); - return ls; + using (var reader = new StreamReader(mStream)) + { + LocalSettings ls = serializer.Deserialize(reader) as LocalSettings; + log.WarnFormat("Succesfully loaded and decrypted from '{0}'", fileName); + ls.UpdateResultsOutputData(); + return ls; + } + } } } } @@ -329,6 +337,7 @@ namespace TBF using (StreamReader reader = new StreamReader(fileName)) { LocalSettings ls = serializer.Deserialize(reader) as LocalSettings; + log.WarnFormat("Succesfully loaded from '{0}'", fileName); ls.UpdateResultsOutputData(); return ls; } @@ -336,8 +345,8 @@ namespace TBF } catch (Exception e) { - string msg = e.Message; - return null; + log.ErrorFormat("Failed to load from '{0}': {1}", fileName, e.Message); + return null; } } @@ -346,44 +355,46 @@ namespace TBF /// public void Save() { + UpdateResultsOutputData(); + try { - UpdateResultsOutputData(); #if PUCHONG_200 /// Write settings to an unencrypted file using (TextWriter writer = new StreamWriter(Program.LocalSettingsFileName)) { serializer.Serialize(writer, this); + log.Warn("LocalSettings succesfully saved"); } #else - /// Write settings to a string - StringBuilder plain = new StringBuilder(); - using (TextWriter writer = new StringWriter(plain)) + /// Encrypt and write to file 'Program.LocalSettingsFileName' + using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros }) { - serializer.Serialize(writer, this); - } - - /// Encrypt and write to a file - using (RijndaelManaged myRijndael = new RijndaelManaged()) - { - /// Create an encryptor to perform the stream transform. - ICryptoTransform encryptor = myRijndael.CreateEncryptor(cryptoKey, cryptoIV); - - /// Create the streams used for encryption. - using (MemoryStream msEncrypt = new MemoryStream()) + using (FileStream fsCrypt = new FileStream(Program.LocalSettingsFileName, FileMode.Create)) { - using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) + using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV)) { - using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) + using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write)) { - /// Write all data to the stream. - swEncrypt.Write(plain); - } + using (MemoryStream mStream = new MemoryStream()) + { + using (var writer = new StreamWriter(mStream)) + { + /// Serialize and write settings to a memory stream + serializer.Serialize(writer, this); + writer.Flush(); + mStream.Position = 0; - Stream stream = File.OpenWrite(Program.LocalSettingsFileName); - using (BinaryWriter writer = new BinaryWriter(stream)) - { - writer.Write(msEncrypt.ToArray()); + using (var reader = new StreamReader(mStream)) + { + /// Encrypt and write to file 'Program.LocalSettingsFileName' + int data; + while ((data = mStream.ReadByte()) != -1) cs.WriteByte((byte)data); + + log.WarnFormat("Succesfully encrypted and saved to '{0}'", Program.LocalSettingsFileName); + } + } + } } } } @@ -392,10 +403,11 @@ namespace TBF } catch (Exception e) { - string msg = e.Message; + log.ErrorFormat("Failed to save to '{0}': {1}", Program.LocalSettingsFileName, e.Message); } } + /// /// To be able to have RealDensity and AtTemperatire in reports. /// diff --git a/TBF/Program.cs b/TBF/Program.cs index 863e7b336..695891abd 100644 --- a/TBF/Program.cs +++ b/TBF/Program.cs @@ -107,7 +107,6 @@ namespace TBF } catch (Exception e) { - log.Error("Fatal error when creating a local application data directory and preparing an initial configuration", e); MessageBox.Show("Error creating a local application data directory and preparing an initial configuration", "Fatal error"); return; /// Fatal error } @@ -128,7 +127,6 @@ namespace TBF Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName); if (Program.LocalSettings == null || Program.LocalSettings.TestBenches == null) { - log.FatalFormat("Local settings: Could not load file {0}, nor {1}.", Program.LocalSettingsFileName, Program.LocalSettingsBackupName); log.Fatal("Application terminated."); MessageBox.Show(string.Format("Could not load file {0}, nor {1}.", Program.LocalSettingsFileName, Program.LocalSettingsBackupName), "Fatal error"); return; /// Fatal error @@ -136,7 +134,6 @@ namespace TBF else { LocalSettings.Save(); /// Save the settings to overwrite the wrong file - log.FatalFormat("Local settings: Could not load file {0}, successfully loaded {1}", Program.LocalSettingsFileName, Program.LocalSettingsBackupName); log.FatalFormat("BatchNr = {0}", LocalSettings.BatchNr); } } @@ -144,7 +141,6 @@ namespace TBF { /// Loading local seetings from the regular config file was successful. Update the backup File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true); - log.FatalFormat("Local settings: Successfully loaded from {0}", Program.LocalSettingsFileName); log.FatalFormat("BatchNr = {0}", LocalSettings.BatchNr); } diff --git a/TBF/Properties/AssemblyInfo.cs b/TBF/Properties/AssemblyInfo.cs index 932753838..a99539c04 100644 --- a/TBF/Properties/AssemblyInfo.cs +++ b/TBF/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; // Build Number // Revision // -[assembly: AssemblyVersion("2.18.1269.0")] -[assembly: AssemblyFileVersion("2.18.1269.0")] +[assembly: AssemblyVersion("2.18.1270.0")] +[assembly: AssemblyFileVersion("2.18.1270.0")] diff --git a/clean.bat b/clean.bat index 3a369e50d..f3a34da4d 100644 --- a/clean.bat +++ b/clean.bat @@ -1,11 +1,13 @@ rmdir /s /q Config\bin rmdir /s /q Config\obj -rmdir /s /q Decode\bin -rmdir /s /q Decode\obj +rmdir /s /q Decrypt\bin +rmdir /s /q Decrypt\obj rmdir /s /q DeviceTest\bin rmdir /s /q DeviceTest\obj rmdir /s /q Dirichlet.Numerics\bin rmdir /s /q Dirichlet.Numerics\obj +rmdir /s /q Encrypt\bin +rmdir /s /q Encrypt\obj rmdir /s /q GemCard\bin rmdir /s /q GemCard\obj rmdir /s /q GraphLib\bin @@ -26,3 +28,4 @@ rmdir /s /q Users\bin rmdir /s /q Users\obj rmdir /s /q UserManagement\bin rmdir /s /q UserManagement\obj + \ No newline at end of file