public IActionResult DecryptMessage(SecretView nice) { int?userId = HttpContext.Session.GetInt32("user"); if (userId == null) { return(RedirectToAction("Index")); } try { int id = Int32.Parse(nice.MessageId); // If the message has been accessed too many times, blocks attempt DateTime then = DateTime.Now; then = then.AddHours(-1); List <Access> accesses = _context.Accesses.Where(x => x.MessageId == id).Where(x => x.CreatedAt > then).ToList(); if (accesses.Count() >= 5) { System.Console.WriteLine("Too many accesses! Blocking!"); HttpContext.Session.SetInt32("blocked", 0); } else { HttpContext.Session.SetInt32("blocked", 1); // Decrypting message System.Console.WriteLine("Decrypting message with id:" + id); Message message = _context.Messages.FirstOrDefault(x => x.MessageId == id); HttpContext.Session.SetString("cypher", nice.Cypher); string decrypt = EncryptionMethods.decrypt(message.MessageBody, nice.Cypher, EncryptionMethods.alphabet()); // System.Console.WriteLine(decrypt); HttpContext.Session.SetString("message", decrypt); // Add this attempt to access log Access thisAccess = new Access(); thisAccess.MessageId = id; thisAccess.UserId = (int)userId; thisAccess.CreatedAt = DateTime.Now; _context.Accesses.Add(thisAccess); _context.SaveChanges(); } // Returns return(RedirectToAction("ShowMessage", new { messageId = id })); } catch (Exception e) { System.Console.WriteLine("Uh oh guys, I think I broke it"); System.Console.WriteLine(e); } return(RedirectToAction("RenderPage")); }
public string detonate(TimeBomb bomb) { try { // Decrypts timebomb message string decrypt = EncryptionMethods.decrypt(bomb.Message.MessageBody, bomb.MessageCypher, EncryptionMethods.alphabet()); System.Console.WriteLine(decrypt); // Detonates bomb by emailing message to bomb.address bomb.Status = 1; _context.SaveChanges(); return($"Success! Bomb with id {bomb.TimeBombId} detonated!"); } catch (System.Exception e) { bomb.Status = -2; _context.SaveChanges(); return($"Errant operation detonating bomb with id {bomb.TimeBombId}! Error: " + e.Message); } }
public JsonResult DecryptMessageAPI([FromBody] SecretView secretView) { APIResponseView results = new APIResponseView(); try { // Login user int login = _administrator.loginUser(secretView.User); if (login == -1) { results.Success = false; results.Message = "Errant input! Username or password incorrect!"; return(Json(results)); } else { // Check to make sure message has not been accessed too many times int id = Int32.Parse(secretView.MessageId); if (_administrator.checkMessageAccesses(id)) { System.Console.WriteLine("Decrypting message with id:" + id); Message message = _context.Messages.FirstOrDefault(x => x.MessageId == id); if (message == null) { results.Success = false; results.Message = "Errant input! Message with id " + id + " does not exist!"; return(Json(results)); } HttpContext.Session.SetString("cypher", secretView.Cypher); string decrypt = EncryptionMethods.decrypt(message.MessageBody, secretView.Cypher, EncryptionMethods.alphabet()); // System.Console.WriteLine(decrypt); results.Success = true; results.Message = decrypt; // Add this attempt to access log Access thisAccess = new Access(); thisAccess.MessageId = id; thisAccess.UserId = login; thisAccess.CreatedAt = DateTime.Now; _context.Accesses.Add(thisAccess); _context.SaveChanges(); } else { System.Console.WriteLine("Message has been accessed too many times!"); results.Success = false; results.Message = "Message has been accessed too many times!"; } } } catch (Exception e) { System.Console.WriteLine("Errant input!"); System.Console.WriteLine(e); results.Success = false; results.Message = e.ToString(); } return(Json(results)); }