Задайте вопросЗадайте вопрос
 

ОтвеченоMS RPC compression

  • 4 июня 2008 г. 17:38igor_b Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     

    Hi there,

     

    The project I am working on involves analyzing MS Exchange traffic. Right now I am working on payload decompression.

    The MS document, [MS-OXCRPC].pdf, gives a description of a decompressing algorithm but there are some unclear parts in it. So I'd like to know what I should do if the length of the match is greater than the offset. Say the length is 5 and the offset is 2.

    I hope someone from Microsoft can clarify this for me.

     

    Thanks,

     

    Igor

     

Ответы

  • 4 июня 2008 г. 18:49Tom Devey - MSFTMSFT, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     Отвечено

    This means that the there is a problem with the compressed (LZ77) payload so the server will return the error code ecRpcFormat (0x000004B6).

  • 12 июня 2008 г. 23:14Tom Devey - MSFTMSFT, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     Отвечено

    Whew.  I was not t able to repro your scenario and was about to ask for a sample trace for me to debug. 

     

    Thanks for the update.

     

  • 3 августа 2009 г. 15:09igor_b Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     Отвечено
    Hi Andy,

    Just spotted your question.

    Here's what "The classic LZ77" says:
    "Many documents which talk about LZ77 algorithms describe a length-distance pair as a command to "copy" data from the sliding window: "Go back distance characters in the buffer and copy length characters, starting from that point." While those used to imperative programming may find this model intuitive, it may also make it hard to understand a feature of LZ77 encoding: namely, that it is not only acceptable but frequently useful to have a length-distance pair where the length actually exceeds the distance. As a copy command, this is puzzling: "Go back one character in the buffer and copy seven characters, starting from that point." How can seven characters be copied from the buffer when only one of the specified characters is actually in the buffer? Looking at a length-distance pair as a statement of identity, however, clarifies the confusion: each of the next seven characters is identical to the character that comes one before it. This means that each character can be determined by looking back in the buffer – even if the character looked back to was not in the buffer when the decoding of the current pair began. Since by definition a pair like this will be repeating a sequence of distance characters multiple times, it means that LZ77 incorporates a flexible and easy form of run-length encoding."

    Igor

Все ответы