commit df56eae9a02e236629308c16de5f55667d1d529d Author: BlubbFish Date: Thu Mar 9 20:38:45 2017 +0000 CorrelationsAttacker hinzugefügt diff --git a/CorrelationsAttacker.sln b/CorrelationsAttacker.sln new file mode 100644 index 0000000..3aa77f5 --- /dev/null +++ b/CorrelationsAttacker.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CorrelationsAttacker", "CorrelationsAttacker\CorrelationsAttacker.csproj", "{11880500-9CC5-4DF6-BBD8-674970E687A5}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {11880500-9CC5-4DF6-BBD8-674970E687A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {11880500-9CC5-4DF6-BBD8-674970E687A5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {11880500-9CC5-4DF6-BBD8-674970E687A5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {11880500-9CC5-4DF6-BBD8-674970E687A5}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CorrelationsAttacker/CorrelationsAttacker.csproj b/CorrelationsAttacker/CorrelationsAttacker.csproj new file mode 100644 index 0000000..4c3f611 --- /dev/null +++ b/CorrelationsAttacker/CorrelationsAttacker.csproj @@ -0,0 +1,120 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {11880500-9CC5-4DF6-BBD8-674970E687A5} + Exe + Properties + CorrelationsAttacker + CorrelationsAttacker + v3.5 + 512 + + + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + false + true + + + 3.5 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AllRules.ruleset + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + AllRules.ruleset + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + False + .NET Framework Client Profile + false + + + False + .NET Framework 2.0 %28x86%29 + false + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + false + + + False + .NET Framework 3.5 SP1 + true + + + False + Windows Installer 3.1 + true + + + + + \ No newline at end of file diff --git a/CorrelationsAttacker/CorrelationsAttacker.csproj.user b/CorrelationsAttacker/CorrelationsAttacker.csproj.user new file mode 100644 index 0000000..6f39860 --- /dev/null +++ b/CorrelationsAttacker/CorrelationsAttacker.csproj.user @@ -0,0 +1,22 @@ + + + + publish\ + + + + + + + + + + + de-DE + false + + + in.txt + F:\Visual Studio 2008\Projects\CorrelationsAttacker\CorrelationsAttacker\ + + \ No newline at end of file diff --git a/CorrelationsAttacker/Program.cs b/CorrelationsAttacker/Program.cs new file mode 100644 index 0000000..88428a1 --- /dev/null +++ b/CorrelationsAttacker/Program.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; + +namespace CorrelationsAttacker +{ + class Program + { + static int[] sbox = { + 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, + 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, + 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, + 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, + 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, + 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, + 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, + 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, + 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, + 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, + 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, + 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, + 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, + 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, + 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, + 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, + 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, + 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, + 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, + 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, + 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, + 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, + 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, + 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, + 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, + 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, + 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, + 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, + 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, + 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, + 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, + 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16}; + static void Main(string[] args) + { + if(args.Length != 1) + { + Console.WriteLine("programm.exe [in.txt]"); + Environment.Exit(1); + } + Console.WriteLine("===============| AES dpa Correlation Attack v1.0 |============" + + "\nname input file required: " + args[0] + + "\n______________________________________________________________"); + DateTime t = DateTime.Now; + int[][] eingabe = einlesen(args[0]); //Daten einklesen + int[][] xored = xOrSBox(eingabe[0]); //S-Boxing inputs + int[][] hamming = getHammingDistance(xored); //Calcs Hamming distance of S-Box Results (amount of Bits set 1) + float[] koof = getCorrelation(hamming,eingabe[1]); //Starts the Calculation incl. output + Console.WriteLine("Schlüsselkandidat: " + (int)koof[1] + "\nZugehöriger Korrelationskoeffizient: "+ koof[0]); + Console.WriteLine("_____________________________________________________\n" + + "Verbrauchte Zeit: "+(TimeSpan)(DateTime.Now-t)+"ms"); + Console.ReadKey(); + } + private static int[][] einlesen(String filename) + { + if(!File.Exists(filename)) + { + Console.WriteLine("Datei "+filename+" nicht vorhanden"); + Environment.Exit(1); + } + StreamReader buffer = new StreamReader(filename, System.Text.Encoding.ASCII); + int zeilen = 0; + while(!buffer.EndOfStream) + { + if(buffer.ReadLine().Length == 0) + continue; + zeilen++; + } + buffer.Close(); + buffer = new StreamReader(filename, System.Text.Encoding.ASCII); + int[][] ret = new int[2][]; + ret[0] = new int[zeilen]; + ret[1] = new int[zeilen]; + for (int i = 0; i < zeilen; i++ ) + { + String dateiString = buffer.ReadLine(); + ret[0][i] = Convert.ToInt32(dateiString.Substring(0, 2), 16); + ret[1][i] = Convert.ToInt32(dateiString.Substring(4, 2)); + } + return ret; + } + private static int[][] xOrSBox(int[] inputX) + { + int[][] xored = new int[inputX.Length][]; + for(int i=0;i ret[0]) + { + ret[0] = c; + ret[1] = i; + } + } + return ret; + } + } +} +/* +public class Main { + + + + + +}*/ \ No newline at end of file diff --git a/CorrelationsAttacker/Properties/AssemblyInfo.cs b/CorrelationsAttacker/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5e78025 --- /dev/null +++ b/CorrelationsAttacker/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Allgemeine Informationen über eine Assembly werden über die folgenden +// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, +// die mit einer Assembly verknüpft sind. +[assembly: AssemblyTitle("CorrelationsAttacker")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CorrelationsAttacker")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar +// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von +// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest. +[assembly: ComVisible(false)] + +// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird +[assembly: Guid("db2f7aa2-03d2-4c31-9ace-3c20d5c73820")] + +// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: +// +// Hauptversion +// Nebenversion +// Buildnummer +// Revision +// +// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern +// übernehmen, indem Sie "*" eingeben: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CorrelationsAttacker/bin/Release/CorrelationsAttacker.exe b/CorrelationsAttacker/bin/Release/CorrelationsAttacker.exe new file mode 100644 index 0000000..4e7d9ce Binary files /dev/null and b/CorrelationsAttacker/bin/Release/CorrelationsAttacker.exe differ diff --git a/CorrelationsAttacker/in.txt b/CorrelationsAttacker/in.txt new file mode 100644 index 0000000..15da3ff --- /dev/null +++ b/CorrelationsAttacker/in.txt @@ -0,0 +1,1000 @@ +43 28 +AD 32 +2A 26 +87 27 +36 30 +88 31 +7D 31 +46 37 +76 30 +F3 37 +76 28 +DD 26 +36 35 +18 32 +B5 24 +5D 40 +C0 33 +44 35 +22 25 +85 27 +C8 37 +72 31 +E7 20 +37 32 +FD 38 +7D 38 +38 30 +8D 35 +39 32 +F9 31 +77 26 +D7 35 +6B 28 +75 30 +B6 34 +CB 20 +78 37 +08 26 +FF 33 +33 25 +9A 31 +EB 28 +18 28 +38 34 +E6 24 +98 27 +F9 28 +92 31 +17 25 +C4 32 +6D 22 +5C 29 +B8 38 +CB 27 +A3 28 +1F 31 +4B 35 +5B 32 +76 31 +8F 31 +EB 22 +AA 31 +59 24 +3E 33 +64 34 +94 38 +1F 32 +1B 26 +58 40 +EA 32 +BA 34 +D4 17 +C6 33 +3C 28 +35 38 +D5 29 +60 24 +D7 37 +68 36 +77 41 +55 34 +57 28 +25 33 +1B 29 +23 29 +DA 37 +A8 20 +DE 18 +95 26 +B5 28 +C1 34 +86 37 +74 28 +01 37 +A4 20 +E1 36 +98 25 +FE 43 +4C 29 +68 41 +F4 24 +29 26 +8F 28 +12 39 +37 33 +96 24 +AE 38 +55 38 +34 24 +76 32 +B0 26 +8D 33 +1E 25 +2E 22 +D4 28 +1B 28 +BD 31 +75 37 +0C 36 +04 29 +9A 29 +BA 43 +5A 40 +08 31 +9F 32 +CE 28 +0F 41 +C1 32 +B4 37 +3B 21 +CC 23 +46 35 +8A 29 +9D 21 +AE 32 +88 31 +23 28 +19 36 +84 27 +4A 31 +5C 28 +71 27 +54 31 +A7 17 +6F 32 +0B 28 +F4 30 +CF 25 +62 30 +31 38 +07 26 +D8 41 +DD 19 +43 31 +57 34 +D1 32 +4D 35 +F6 28 +4B 29 +CD 41 +27 32 +1E 31 +B0 30 +5A 40 +B8 32 +F3 33 +69 39 +DC 39 +EE 27 +F8 42 +58 43 +5D 37 +9D 26 +E5 33 +FE 38 +9C 38 +3B 21 +09 23 +B0 29 +6B 34 +FA 35 +F8 37 +83 33 +A4 30 +D0 32 +89 28 +B5 24 +F6 32 +06 30 +50 41 +63 31 +28 35 +50 38 +32 33 +E8 34 +44 30 +1C 37 +72 32 +76 38 +A1 33 +83 40 +BD 32 +55 32 +B8 37 +7B 27 +A2 29 +1C 35 +D0 28 +68 31 +D3 21 +8C 27 +31 34 +FB 29 +80 37 +EC 34 +82 30 +70 26 +6E 26 +5D 35 +8A 31 +2B 39 +0B 29 +0F 34 +E3 24 +91 31 +8C 29 +23 27 +F2 27 +18 27 +8A 34 +36 39 +17 29 +E8 37 +20 38 +59 28 +4D 42 +FE 40 +20 40 +0E 31 +15 35 +B7 41 +59 22 +91 33 +A5 23 +CF 23 +98 25 +E5 34 +FD 36 +20 35 +A6 33 +34 34 +2F 27 +CE 27 +9B 30 +79 28 +11 33 +71 26 +43 31 +81 39 +A7 24 +F2 22 +F0 33 +69 36 +E1 38 +16 40 +61 20 +AA 36 +F4 27 +1F 30 +CB 31 +A8 27 +FA 41 +6F 32 +73 25 +92 33 +AF 36 +F4 34 +66 40 +A9 19 +D6 36 +82 34 +2F 36 +22 23 +00 35 +15 33 +77 37 +8E 38 +3A 32 +1F 33 +F7 31 +73 30 +2C 27 +83 41 +03 22 +F7 29 +39 33 +71 26 +43 28 +D4 16 +9E 36 +71 26 +79 35 +3A 22 +0F 40 +CA 34 +63 34 +9B 27 +44 34 +50 42 +01 36 +71 34 +65 34 +65 36 +7E 30 +4A 34 +8E 33 +8A 29 +57 28 +97 30 +FF 36 +DA 32 +19 33 +07 23 +2E 19 +B2 24 +FE 37 +69 36 +EF 29 +54 27 +B9 30 +AC 33 +14 28 +15 41 +52 42 +F1 35 +FF 34 +F3 35 +8F 33 +3D 40 +9A 34 +52 43 +2F 29 +20 33 +39 34 +B8 39 +7D 37 +87 38 +31 36 +D1 23 +8E 29 +A6 29 +B9 38 +2B 36 +BB 19 +FE 41 +94 31 +18 27 +E3 26 +AF 37 +7C 22 +64 39 +39 39 +92 25 +99 29 +AF 35 +21 28 +07 29 +83 31 +59 20 +FE 43 +D8 39 +D2 35 +12 36 +DC 40 +57 33 +1D 32 +DA 35 +84 35 +AB 23 +19 26 +ED 37 +82 27 +CA 23 +9E 35 +F4 25 +0E 32 +E0 29 +F2 31 +57 31 +DF 31 +EE 31 +9C 36 +48 29 +0C 30 +E7 29 +FA 37 +CC 23 +70 35 +31 40 +8C 23 +6A 38 +89 29 +2B 29 +A4 25 +EF 28 +C3 29 +60 35 +B1 33 +38 39 +64 39 +FE 40 +1B 25 +AF 31 +75 30 +8B 26 +C8 30 +16 43 +1C 37 +31 37 +4D 33 +0D 33 +70 31 +B5 28 +26 29 +45 33 +06 31 +7B 26 +06 32 +0B 30 +A1 38 +45 34 +66 37 +7F 31 +76 32 +3D 36 +F9 31 +E2 30 +3F 31 +E2 36 +33 34 +EA 34 +AA 34 +F6 24 +60 34 +DB 43 +AF 35 +39 37 +92 30 +99 29 +6D 29 +2F 30 +E8 34 +F4 33 +42 31 +C1 34 +B9 37 +FC 31 +E8 39 +00 33 +17 27 +71 20 +05 31 +78 30 +27 33 +ED 39 +22 23 +5D 37 +57 30 +41 22 +6E 25 +6C 37 +91 29 +FD 45 +00 31 +CB 23 +E0 33 +00 26 +A8 21 +A8 23 +81 36 +97 30 +18 34 +30 37 +23 30 +B3 39 +46 39 +93 31 +F5 26 +E4 33 +7F 36 +4E 38 +81 41 +2D 26 +5D 39 +63 38 +8D 38 +97 30 +06 25 +DE 35 +AB 33 +A2 21 +FB 25 +97 24 +0B 37 +22 18 +B6 39 +69 29 +9D 32 +2F 31 +69 34 +0E 27 +29 28 +9A 32 +DB 37 +33 34 +85 31 +6A 36 +B4 32 +C1 31 +1B 26 +12 38 +CF 27 +D7 29 +A0 33 +72 34 +1D 25 +3C 32 +D8 33 +7D 41 +8F 34 +AB 30 +07 28 +E3 29 +11 34 +16 36 +51 37 +49 27 +2C 26 +2C 26 +76 34 +77 37 +AD 32 +F1 31 +F3 30 +FE 37 +DF 35 +A5 26 +51 36 +22 26 +94 29 +DB 39 +E8 36 +D1 30 +D1 28 +22 29 +1F 38 +18 29 +0F 34 +10 32 +B5 23 +45 33 +A5 21 +A5 23 +AB 27 +D6 34 +C4 26 +9A 30 +D2 24 +A7 29 +CF 29 +59 29 +02 35 +89 34 +4F 27 +5C 32 +95 26 +7D 36 +FF 27 +E6 25 +55 34 +9B 29 +79 28 +4C 31 +24 26 +26 33 +5A 45 +55 35 +9B 29 +26 34 +3D 40 +82 27 +E0 32 +11 32 +09 20 +FD 41 +C8 39 +42 36 +0D 34 +11 39 +6E 33 +1A 26 +4E 45 +8D 35 +9E 32 +F9 28 +BB 29 +B3 38 +D7 35 +D0 27 +72 29 +89 30 +92 27 +6A 39 +7A 42 +32 32 +A5 19 +50 43 +E9 36 +6F 33 +65 36 +9B 26 +FE 42 +3D 38 +C4 33 +08 31 +2E 33 +E8 33 +95 23 +F0 37 +B3 31 +08 30 +8A 31 +C1 23 +DE 33 +6C 38 +ED 29 +96 30 +79 33 +EA 26 +2E 29 +CD 41 +9C 41 +83 35 +73 22 +33 38 +C6 31 +00 33 +24 21 +C8 37 +2D 30 +0F 41 +82 26 +A7 29 +1A 33 +DF 30 +1D 27 +00 31 +E5 30 +0B 31 +FD 32 +C9 35 +34 32 +C2 29 +4C 28 +60 33 +01 29 +13 40 +04 32 +F1 34 +32 28 +A2 34 +8C 24 +20 37 +3A 22 +E2 36 +DF 40 +0E 34 +EC 39 +30 37 +3A 24 +DB 43 +93 17 +50 36 +7F 31 +5A 38 +BA 37 +CC 27 +54 32 +BE 32 +74 21 +BD 39 +14 22 +E0 26 +A1 35 +4B 35 +C2 32 +A7 30 +46 37 +08 30 +14 26 +77 38 +DB 45 +AF 33 +4F 20 +6F 26 +F1 29 +CA 39 +00 31 +6E 27 +AE 38 +22 29 +ED 38 +66 34 +29 28 +95 22 +46 36 +94 32 +D4 27 +49 40 +60 39 +FD 37 +D4 28 +D2 28 +47 31 +EB 23 +6D 30 +20 45 +90 30 +72 26 +8B 24 +AE 32 +EA 33 +F9 33 +C4 34 +07 25 +57 34 +01 28 +22 27 +16 44 +7A 39 +3E 44 +CD 40 +A4 22 +B3 32 +88 33 +9E 35 +11 37 +C8 30 +1C 27 +DA 30 +06 34 +87 34 +85 31 +5B 34 +16 33 +A7 23 +19 33 +D2 29 +ED 38 +F1 27 +A2 26 +9F 29 +5C 29 +63 31 +64 36 +73 31 +B2 32 +ED 36 +95 30 +50 34 +50 38 +CA 39 +97 29 +BF 29 +E1 36 +E5 35 +E5 31 +96 26 +4D 39 +C0 33 +13 33 +AB 21 +60 37 +4F 22 +05 27 +21 32 +94 24 +EC 27 +EC 32 +DD 29 +14 27 +D6 35 +53 24 +96 28 +BB 32 +E6 30 +8F 31 +1C 35 +5E 30 +06 31 +C1 32 +CA 32 +25 31 +25 29 +4C 28 +98 32 +0A 33 +5B 32 +A4 28 +4D 36 +D8 32 +D2 30 +7F 34 +FD 30 +A4 30 +40 39 +85 35 +FD 37 +F7 25 +C8 37 +07 35 +0B 32 +46 32 +0C 31 +0F 36 +CF 27 +49 35 +F3 31 +0F 47 +3A 28 +0B 30 +4B 33 +4F 23 +44 36 +5B 28 +3F 36 +4A 27 +76 29 +89 31 +FC 32 +94 32 +16 40 +40 40 +94 34 +95 32 +CE 27 +79 29 +D1 30 +27 37 +CB 30 +60 35 +74 20 +9E 39 +00 28 +26 34 +FD 39 +41 23 +C0 36 +51 34 +B8 34 +D9 29 +6D 32 +79 34 +21 27 +E6 28 +49 33 +87 36 +5D 35 +52 40 +F3 33 +69 41 +32 29 +B0 29 +D0 32 +D5 30 +EE 28 +80 36 +73 34 +8B 34 +D3 30 +D9 32 +9B 21 +9A 38 +7E 39 +32 34 +9D 22 +B0 35 +A6 29 +25 36 +61 22 +76 37 +69 40 +11 38 +E2 34 +60 33 +15 32 +01 39 +4C 26 +7A 35 +3B 28 +DA 37 +C7 32 +CD 45 +A1 43 +87 34 +16 39 +15 40 +B3 34 +AF 41 +70 34 +2E 28 +1F 34 +09 11 +32 37 +71 26 +AE 31 +B2 26 +84 34 +FD 39 +82 30 +2C 22 +9C 38 +CB 29 +5C 21 +DA 33 +FC 27 +F2 35 +DE 34 +A3 25 +88 37 +69 35 +9F 34 +B4 30 +C3 29 +9C 30 +5C 24 +79 34 +70 35 +71 30 +C0 35 +E4 36 +BC 36 +36 43 +39 36 +C3 28 +74 25 +CE 32 +88 32 +BE 34 +36 37 +F4 33 +C4 23 +5A 38 +72 28 +50 42 +24 29 +8E 37 +CD 40 +23 34 +89 31 +23 21 +DA 28 +DB 36 +98 32 +F6 31 +3C 32 +5C 27 +CD 34 +17 24 +0A 28 +05 29 +DE 26 +13 32 +32 33 +B2 21 +93 26 +00 36 +18 34 +C9 36 +BE 30 +A1 35 +59 17 +78 36 +2B 38 +D6 33 +5F 26 +F4 28 +36 38 +C6 31 +9B 32 +12 35 +6E 34 +C6 34 +33 36 +E5 32 +8A 32 +00 27 +66 34 +22 28 +CC 26 \ No newline at end of file