MSG流Id计算

发布于 2024-08-01 19:39:02 字数 716 浏览 9 评论 0 原文

我正在尝试计算 MSG 文件的命名属性部分的流名称,特别是字符串命名属性。 MSG 文件格式规范 表示 ID 的生成方式如下:

流 ID = 0x100m ((ID XOR (GUID 索引 << 1 | 1)) MOD 0x1f

其中 ID 值是“Unicode 名称标识符”的 CRC-32。我也是确信 0x100m 实际上是 0x1000

当 GUID 索引为时,这会以某种方式将 'x-mailer' 映射到 0x100f。 3. ID 的值为 0x894e50ff(因为它存储在另一个位置),但是 'x-mailer' 如何转换为该值?

(这些是存储在 下的属性” __nameid_version1.0",部分位于 "__substg1.0_00040102" 流内)。

I'm trying to calculate the stream name for the named property part of an MSG file, specifically string named properties. The MSG file format specification says that the ID is generated as follows:

Stream ID = 0x100m ((ID XOR (GUID index << 1 | 1)) MOD 0x1f

Where the ID value is the CRC-32 for the "Unicode name identifier". I'm also confident that 0x100m is actually 0x1000.

This somehow maps 'x-mailer' to 0x100f when the GUID index is 3. The value for ID is 0x894e50ff (since it is stored in another location), but how does 'x-mailer' get converted to that value?

(These are the properties stored under "__nameid_version1.0", partly inside the "__substg1.0_00040102" stream).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

英雄似剑 2024-08-08 19:39:02

这是 回答

嗨,卢克,

抱歉这么久才回来
你对此。 我验证了 CRC-32
计算结果确实是
字符串的值为 0xff504e89
“x-mailer”。 你需要的两件事
考虑:

  1. 确保您将“x-mailer”的 CRC 计算为 UNICODE 字符串。
    ASCII 会给你一个不同的
    结果。
  2. 确保您使用的是 MS-OXRTFCP 指定的算法
    第 3.1.3.2 和 3.1.4 节包括
    使用预先计算的查找表
    以及相应的算法
    伪代码。

如果您遵循这些,您将获得
正确的结果。

如果您能够获得,请告诉我
这个工作。

此致, Tom Jebo 高级支持
升级工程师 Microsoft DS
协议团队

Here is the answer from a Microsoft Engineer:

Hi Luke,

Sorry it took so long to get back to
you on this. I verified the CRC-32
calculation and it indeed results in a
value of 0xff504e89 for the string
'x-mailer'. Two things that you need
to consider:

  1. make sure you are calculating CRC for 'x-mailer' as a UNICODE string.
    ASCII will give you a different
    result.
  2. make sure you are using the algorithm specified by MS-OXRTFCP
    sections 3.1.3.2 and 3.1.4 including
    using the precalculated lookup table
    and the corresponding algorithm
    pseudocode.

If you follow these, you will get the
proper result.

Let me know if you are able to get
this working.

Regards, Tom Jebo Senior Support
Escalation Engineer Microsoft DS
Protocol Team

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文