使用python序列化/反序列化使用BinaryFormatter的.Net对象

时间:2017-04-11 19:42:21

标签: python .net

不确定如何提出这个问题,因为我可能没有关注这些概念。我也不是C#或.Net的人。

对于测试应用程序,cookie值是使用BinaryFormatter for .Net的base64包装二进制数据。我试图弄清楚如何在python中复制它,以便我可以反序列化,修改数据和序列化,最后通过HTTP cookie头发送。我可以管理HTTP请求。它看起来像一个值的字典,然后转换为BitArray。我看过pickle,marshal,BitArray等等。很多例子,但是,我正在尝试对AFAIK做什么。

但同样,我几乎不知道如何提问。这是数据的一个例子

  

AAEAAAD ///// AQAAAAAAAAAEAQAAAOIBU3lzdGVtLkNvbGxlY3Rpb25zLkdlbmVyaWMuRGljdGlvbmFyeWAyW1tTeXN0ZW0uU3RyaW5nLCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldLFtTeXN0ZW0uT2JqZWN0LCBtc2NvcmxpYiwgVmVyc2lvbj00LjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODldXQMAAAAHVmVyc2lvbghDb21wYXJlcghIYXNoU2l6ZQADAAgWU3lzdGVtLk9yZGluYWxDb21wYXJlcggAAAAACQIAAAAAAAAABAIAAAAWU3lzdGVtLk9yZGluYWxDb21wYXJlcgEAAAALX2lnbm9yZUNhc2UAAQEL

1 个答案:

答案 0 :(得分:0)

这是BinaryFormatter的序列化格式。 It is documented in MSDN根据.Net Where to find the official specification of the BinaryFormatter serialization format?。它基本上由对象的完整.NET类型名称(连同程序集的强名称)和其所有字段的内容(可能包含任意数量的其他类似表示的对象)组成。 / p>

因此,要序列化/反序列化,您需要:

  • 格式为
  • 的解析器/生成器
  • 正在(反)序列化的.NET类型的确切版本的相关位 - 可以生成/处理完全相同的字段数据的东西

所以,你要么use the corresponding logic from a .NET implementation,要么另外实现两个相关的BinaryFormatter子程序和类型(类型的字段数据适配器)(将)存在在序列化数据中。

那说,一个"本地人"序列化格式并非设计为可在任何地方读取的交换格式,因此它对于cookie来说是一个糟糕的选择。 这是因为它的目的是能够恢复完全相同的对象,因此它固有地绑定到特定版本类型的特定实现的特定内部结构(从属于体系结构)详情)。

相反,even .NET standard library has a whole number of other formats that are more fit for data exchange.