public static int CalculateSizeOfbfObject(BinaryFormatterRootObject inBinaryFormatterRootObject) { int size = 17; // fized header size foreach (BinaryFormatterObject bfObj in inBinaryFormatterRootObject.binaryFormatterObjects) { if (bfObj.typeBytes != null) { size += bfObj.typeBytes.Length; } if (bfObj.valueBytes != null) { size += bfObj.valueBytes.Length; } } return(size); }
public static MemoryStream ReconstructFromBinaryFormatterObject(BinaryFormatterRootObject inBinaryFormatterRootObject) { int fullsize = CalculateSizeOfbfObject(inBinaryFormatterRootObject); MemoryStream ms = new MemoryStream(fullsize); ms.Write(inBinaryFormatterRootObject.headerBytes, 0, inBinaryFormatterRootObject.headerBytes.Length); foreach (BinaryFormatterObject bfObj in inBinaryFormatterRootObject.binaryFormatterObjects) { if (bfObj.typeBytes != null) { ms.Write(bfObj.typeBytes, 0, bfObj.typeBytes.Length); } if (bfObj.valueBytes != null) { ms.Write(bfObj.valueBytes, 0, bfObj.valueBytes.Length); } } return(ms); }
public static String JsonNetBinaryFormatterObjectSerializer(BinaryFormatterRootObject inBinaryFormatterRootObject) { return(Newtonsoft.Json.JsonConvert.SerializeObject(inBinaryFormatterRootObject, typeof(Helpers.ModifiedVulnerableBinaryFormatters.BinaryFormatterRootObject), null)); }
public static MemoryStream ReconstructFromJsonNetSerializedBinaryFormatterObject(String jsonNet_str) { BinaryFormatterRootObject deserialized_obj = (BinaryFormatterRootObject)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonNet_str, typeof(BinaryFormatterRootObject)); return(ReconstructFromBinaryFormatterObject(deserialized_obj)); }