Вычисление идентификатора потока сообщений

StackOverflow https://stackoverflow.com/questions/1264728

  •  13-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь вычислить имя потока для части именованного свойства файла MSG, в частности строки с именем properties.Тот самый Спецификация формата файла MSG говорит что идентификатор генерируется следующим образом:

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

Где значением ID является CRC-32 для "идентификатора имени в Юникоде".Я также уверен, что 0x100m это на самом деле 0x1000.

Это каким - то образом отображает 'x-mailer' Для 0x100f когда индекс GUID равен 3.Значение для ID равно 0x894e50ff (поскольку оно хранится в другом месте), но как 'x-mailer' преобразуется в это значение?

(Это свойства, хранящиеся в "__nameid_version1.0", частично внутри "__substg1.0_00040102" поток).

Это было полезно?

Решение

Вот этот ответ от инженера Microsoft:

Привет, Люк,

Извините, что потребовалось так много времени, чтобы ответить вам на это.Я проверил вычисление CRC-32 , и оно действительно приводит к получению значения 0xff504e89 для строки 'x-mailer'.Две вещи, которые вам нужно учесть:

  1. убедитесь, что вы вычисляете CRC для 'x-mailer' как строку в ЮНИКОДЕ.ASCII даст вам другой результат.
  2. убедитесь, что вы используете алгоритм, указанный MS-OXRTFCP разделы 3.1.3.2 и 3.1.4, включая использование предварительно рассчитанной справочной таблицы и соответствующего алгоритма псевдокод.

Если вы будете следовать этим инструкциям, вы получите надлежащий результат.

Дайте мне знать, если вы сможете заставить это работать.

С уважением, Том Джебо, старший специалист службы поддержки Инженер по эскалации Microsoft DS Команда протокола

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top