From 54749b4012cddd9e80f26971dcf45fc352aead26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricco=20Mandahl=20J=C3=B8rgensen?= Date: Tue, 13 Mar 2018 12:53:24 +0100 Subject: First Commit --- .../PasswordCrackerServer/Program.cs | 176 +++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 PasswordCrackerDistributed/PasswordCrackerServer/Program.cs (limited to 'PasswordCrackerDistributed/PasswordCrackerServer/Program.cs') diff --git a/PasswordCrackerDistributed/PasswordCrackerServer/Program.cs b/PasswordCrackerDistributed/PasswordCrackerServer/Program.cs new file mode 100644 index 0000000..9b0cf2e --- /dev/null +++ b/PasswordCrackerDistributed/PasswordCrackerServer/Program.cs @@ -0,0 +1,176 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading.Tasks; +using System.Threading; + +namespace PasswordCrackerServer +{ + class Program + { + static void Main(string[] args) + { + List userInfos = PasswordFileHandler.ReadPasswordFile("passwords.txt"); + List clients = new List(); + List allchunks; + + string users = ""; + foreach (UserInfo u in userInfos) + { + users += u.ToString(); + } + if ( + File.Exists(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk0.txt") + && + File.Exists(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk1.txt") + && + File.Exists(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk2.txt") + && + File.Exists(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk3.txt") + && + File.Exists(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk4.txt") + + ) + { + string chunk1String = File.ReadAllText(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk0.txt"); + string chunk2String = File.ReadAllText(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk1.txt"); + string chunk3String = File.ReadAllText(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk2.txt"); + string chunk4String = File.ReadAllText(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk3.txt"); + string chunk5String = File.ReadAllText(@"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk4.txt"); + + + allchunks = new List() + { + chunk1String, + chunk2String, + chunk3String, + chunk4String, + chunk5String + }; + } + else + { + List words = new List(); + + using (FileStream fs = new FileStream("webster-dictionary.txt", FileMode.Open, FileAccess.Read)) + + using (StreamReader dictionary = new StreamReader(fs)) + { + while (!dictionary.EndOfStream) + { + words.Add(dictionary.ReadLine()); + } + } + + + List chunk1 = new List(words.GetRange(0, 65000)); + string chunk1String = ""; + foreach (string s1 in chunk1) + { + chunk1String += s1 + "\n"; + } + List chunk2 = new List(words.GetRange(65000, 65000)); + string chunk2String = ""; + foreach (string s2 in chunk2) + { + chunk2String += s2 + "\n"; + } + List chunk3 = new List(words.GetRange(130000, 65000)); + string chunk3String = ""; + foreach (string s3 in chunk3) + { + chunk3String += s3 + "\n"; + } + List chunk4 = new List(words.GetRange(195000, 65000)); + string chunk4String = ""; + foreach (string s4 in chunk4) + { + chunk4String += s4 + "\n"; + } + List chunk5 = new List(words.GetRange(260000, 51141)); + string chunk5String = "" + " "; + foreach (string s5 in chunk5) + { + chunk5String += s5 + "\n"; + } + allchunks = new List() + { + chunk1String, + chunk2String, + chunk3String, + chunk4String, + chunk5String + }; + + + string path = @"D:\Projects\S4\SEC\PasswordCrackerDistributed\PasswordCrackerServer\chunk"; + + for (int i = 0; i < 5; i++) + { + if (!File.Exists(path + i + ".txt")) + { + File.WriteAllText(path + i + ".txt", allchunks[i]); + } + } + } + + + + + IPAddress ip = IPAddress.Any; + TcpListener serversocket = new TcpListener(ip, 6789); + + serversocket.Start(); + Console.WriteLine("Server started"); + int counter = 0; + while (true) + { + if (clients.Count == 5) + { + string[] returnedResult = RunAsync(clients).Result; + foreach (string s in returnedResult) + { + Console.WriteLine(s); + } + } + else + { + TcpClient connectionSocket = serversocket.AcceptTcpClient(); + Console.WriteLine("Server activated"); + + clients.Add(new clientConnection(connectionSocket, allchunks[counter], users)); + counter ++; + } + } + serversocket.Stop(); + } + + public static async Task RunAsync(List clients) + { + + + var C1task = clients[0]; + var C2task = clients[1]; + var C3task = clients[2]; + var C4task = clients[3]; + var C5task = clients[4]; + + + string[] result = await Task.WhenAll(C1task.Doit(), C2task.Doit() ,C3task.Doit(), C4task.Doit(), C5task.Doit()); + + /* + var C1 = await C1task; + var C2 = await C2task; + var C3 = await C3task; + var C4 = await C4task; + var C5 = await C5task; + */ + return result; + } + + } +} -- cgit v1.2.3