Domanda
Sto cercando di calcolare il nome del flusso per la parte di proprietà denominata di un file MSG, in particolare stringa proprietà denominate. Il MSG specifica del formato di file dice che l'ID è generato come segue:
Stream ID = 0x100m ((ID XOR (GUID index << 1 | 1)) MOD 0x1f
Se il valore ID è il CRC-32 per il "identificatore Unicode nome". Sono anche fiducioso che 0x100m
è in realtà 0x1000
.
Questa mappa in qualche modo 'x-mailer'
al 0x100f
quando l'indice GUID è 3. Il valore per ID è 0x894e50ff (dal momento che è memorizzato in un altro luogo), ma come si fa 'x-mailer'
ottenere convertito a quel valore?
(Queste sono le proprietà memorizzate sotto "__nameid_version1.0"
, parzialmente all'interno del flusso "__substg1.0_00040102"
).
Soluzione
Ecco il risposta da un ingegnere Microsoft:
Ciao Luca,
Ci dispiace sia voluto tanto tempo per tornare a voi su questo. Ho verificato il CRC-32 calcolo e risulta effettivamente in valore 0xff504e89 per la stringa 'X-mailer'. Due cose che avete bisogno da considerare:
- assicurarsi che si sta calcolando CRC per 'x-mailer' come una stringa Unicode. ASCII vi darà un diverso risultato.
- assicurarsi che si sta utilizzando l'algoritmo specificato da MS-OXRTFCP sezioni 3.1.3.2 e 3.1.4, tra cui utilizzando la tabella di ricerca precalcolate e il corrispondente algoritmo pseudocodice.
Se si seguono questi, si otterrà il risultato corretto.
Fatemi sapere se si è in grado di ottenere questo lavoro.
Saluti, Tom Jebo Supporto anziano Escalation Ingegnere Microsoft DS Protocollo della squadra