Julien,

I can take a look for sure.  Not sure how much I can help with the recipe this 
week, holidays will eliminate a lot of free time.

I’m not currently only master (sitting on a code pull from a few months ago).  
I’ll grab it and take a look.

Murray

From: Julien Kerihuel 
Sent: Sunday, December 21, 2014 12:05 PM
To: [email protected] 
Subject: Re: [openchange][devel] MAPIProxy Extraction To Structures Issue

Hi Murray,

Actually I have just released a couple of tools in master recently that let you 
exactly extract this information:
    - rpcextract to extract rpc MAPI stub data into individual request/response 
files
    - mapipropsdump to do the context mapping and dump the DATA_BLOB as a 
structure

I have planned to release a technical recipe about this next week on 
openchange.org, but maybe we can start the discussion on the list and you can 
help writing the technical recipe?

Julien.


On 21/12/14 17:07, Murray McCulligh wrote:

  Hi all,

  I've come across an issue in MAPIProxy. It seems that if a response buffer 
contains a response (such as RopFindRow) that holds PropertyRow data, all 
responses after that in the buffer are not extracted into structures and are 
contained within the data blob.

  Unfortunately I don't see how MAPIProxy can easily fix this since I believe 
determining how much data the RopFindRow response contains requires decoding 
the properties and that might require knowing the requested order of properties 
set in a previous SetColumns request.

  Any ideas on how to address this would be welcome.

  Murray

  Dump of this occurring....

       EcDoRpc: struct EcDoRpc
          in: struct EcDoRpc
              handle                   : *
                  handle: struct policy_handle
                      handle_type              : 0x00000000 (0)
                      uuid                     : 
873babaf-1b2d-40eb-bcaa-33e92e80bf20
              size                     : 0x00007fff (32767)
              offset                   : 0x00000000 (0)
              mapi_request             : *
                  mapi_len                 : 0x00000142 (322)
                  length                   : 0x0122 (290)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x05 (5)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x00 (0)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 5)
                          mapi_GetContentsTable: struct GetContentsTable_req
                              handle_idx               : 0x01 (1)
                              TableFlags               : 0x02 (2)
                                     1: TableFlags_Associated    
                                     0: TableFlags_Depth         
                                     0: TableFlags_DeferredErrors
                                     0: TableFlags_NoNotifications
                                     0: TableFlags_SoftDeletes   
                                     0: TableFlags_UseUnicode    
                                     0: TableFlags_SuppressNotifications
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x12 (18)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x01 (1)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 18)
                          mapi_SetColumns: struct SetColumns_req
                              SetColumnsFlags          : SetColumns_TBL_SYNC (0)
                              prop_count               : 0x0007 (7)
                              properties: ARRAY(7)
                                  properties               : PidTagFolderId 
(0x67480014)
                                  properties               : PidTagMid 
(0x674A0014)
                                  properties               : PidTagInstID 
(0x674D0014)
                                  properties               : PidTagInstanceNum 
(0x674E0003)
                                  properties               : PidTagMessageClass 
(0x1A001F)
                                  properties               : 
PidTagConversationTopic (0x70001F)
                                  properties               : PidTagReportName 
(0x3A001F)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x13 (19)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x01 (1)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 19)
                          mapi_SortTable: struct SortTable_req
                              SortTableFlags           : 0x00 (0)
                              lpSortCriteria: struct SSortOrderSet
                                  cSorts                   : 0x0001 (1)
                                  cCategories              : 0x0000 (0)
                                  cExpanded                : 0x0000 (0)
                                  aSort: ARRAY(1)
                                      aSort: struct SSortOrder
                                          ulPropTag                : 
PidTagMessageClass (0x1A001F)
                                          ulOrder                  : 
TABLE_SORT_ASCEND (0x0)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x4f (79)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x01 (1)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 79)
                          mapi_FindRow: struct FindRow_req
                              ulFlags                  : DIR_FORWARD (0)
                              res: struct mapi_SRestriction
                                  rt                       : 0x04 (4)
                                  res                      : union 
mapi_SRestriction_CTR(case 4)
                                  resProperty: struct mapi_SPropertyRestriction
                                      relop                    : 0x03 (3)
                                      ulPropTag                : 
PidTagMessageClass (0x1A001F)
                                      lpProp: struct mapi_SPropValue
                                          ulPropTag                : 
PidTagMessageClass (0x1A001F)
                                          value                    : union 
mapi_SPropValue_CTR(case 31)
                                          lpszW                    : 
'IPM.Microsoft.PendingChange.'
                              origin                   : BOOKMARK_BEGINNING (0)
                              bookmark                 : SBinary_short cb=0
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x02 (2)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x02 (2)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 2)
                          mapi_OpenFolder: struct OpenFolder_req
                              handle_idx               : 0x03 (3)
                              folder_id                : 0x4c00000000000001 
(5476377146882523137)
                              OpenModeFlags            : OpenModeFlags_Folder 
(0)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x29 (41)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x02 (2)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 41)
                          mapi_RegisterNotification: struct 
RegisterNotification_req
                              handle_idx               : 0x04 (4)
                              NotificationFlags        : 0x0078 (120)
                                     0: fnevCriticalError        
                                     0: fnevNewMail              
                                     0: fnevObjectCreated        
                                     1: fnevObjectDeleted        
                                     1: fnevObjectModified       
                                     1: fnevObjectMoved          
                                     1: fnevObjectCopied         
                                     0: fnevSearchComplete       
                                     0: fnevTableModified        
                                     0: fnevStatusObjectModified 
                                     0: fnevReserved             
                                     0: fnevTbit                 
                                     0: fnevUbit                 
                                     0: fnevSbit                 
                                     0: fnevMbit                 
                              WantWholeStore           : 0x00 (0)
                              FolderId                 : union hyperbool(case 0)
                              ID                       : 0x4c00000000000001 
(5476377146882523137)
                              MessageId                : union hyperbool(case 0)
                              ID                       : 0x0000000000000000 (0)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x07 (7)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x03 (3)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 7)
                          mapi_GetProps: struct GetProps_req
                              PropertySizeLimit        : 0x0000 (0)
                              WantUnicode              : 0x0001 (1)
                              prop_count               : 0x0012 (18)
                              properties: ARRAY(18)
                                  properties               : 
PidTagParentFolderId (0x67490014)
                                  properties               : PidTagAccess 
(0xFF40003)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x66720102)
                                  properties               : 
PidTagDefaultPostMessageClass (0x36E5001F)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36E6001F)
                                  properties               : PidTagDisplayName 
(0x3001001F)
                                  properties               : PidTagFolderType 
(0x36010003)
                                  properties               : PidTagContentCount 
(0x36020003)
                                  properties               : 
PidTagContentUnreadCount (0x36030003)
                                  properties               : PidTagSubfolders 
(0x360A000B)
                                  properties               : 
PidTagContainerClass (0x3613001F)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36160102)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36DE0003)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36DF0102)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36E00102)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x36E10003)
                                  properties               : 
PidTagExtendedFolderFlags (0x36DA0102)
                                  properties               : UNKNOWN_ENUM_VALUE 
(0x672D0003)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x01 (1)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x05 (5)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 1)
                          mapi_Release: struct Release_req
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x03 (3)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x02 (2)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 3)
                          mapi_OpenMessage: struct OpenMessage_req
                              handle_idx               : 0x06 (6)
                              CodePageId               : 0x0fff (4095)
                              FolderId                 : 0x8814000000000001 
(-8641281785017139199)
                              OpenModeFlags            : BestAccess (3)
                              MessageId                : 0x0f19000000000001 
(1087900784986685441)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x2b (43)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x06 (6)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 43)
                          mapi_OpenStream: struct OpenStream_req
                              handle_idx               : 0x07 (7)
                              PropertyTag              : PidTagRwRulesStream 
(0x68020102)
                              OpenModeFlags            : OpenStream_ReadOnly (0)
                      mapi_request: struct EcDoRpc_MAPI_REQ
                          opnum                    : 0x2c (44)
                          logon_id                 : 0x01 (1)
                          handle_idx               : 0x07 (7)
                          u                        : union 
EcDoRpc_MAPI_REQ_UNION(case 44)
                          mapi_ReadStream: struct ReadStream_req
                              ByteCount                : 0x7c00 (31744)
                              MaximumByteCount         : union 
MaximumByteCount(case 31744)
                      mapi_request             : (handles) number=8
                          handle                   : 0x0000006a (106)
                          handle                   : 0xffffffff (4294967295)
                          handle                   : 0x00000047 (71)
                          handle                   : 0xffffffff (4294967295)
                          handle                   : 0xffffffff (4294967295)
                          handle                   : 0x0000005b (91)
                          handle                   : 0xffffffff (4294967295)
                          handle                   : 0xffffffff (4294967295)
                  length                   : *
                      length                   : 0x0142 (322)
                  max_data                 : 0x7fff (32767)
       EcDoRpc: struct EcDoRpc
          out: struct EcDoRpc
              handle                   : *
                  handle: struct policy_handle
                      handle_type              : 0x00000000 (0)
                      uuid                     : 
873babaf-1b2d-40eb-bcaa-33e92e80bf20
              size                     : 0x00007fff (32767)
              offset                   : 0x00000000 (0)
              mapi_response            : *
                  mapi_response            : length=571
                  mapi_response: ARRAY(569)
                      mapi_repl: struct EcDoRpc_MAPI_REPL
                          opnum                    : 0x05 (5)
                          handle_idx               : 0x01 (1)
                          error_code               : MAPI_E_SUCCESS (0x0)
                          u                        : union 
EcDoRpc_MAPI_REPL_UNION(case 5)
                          mapi_GetContentsTable: struct GetContentsTable_repl
                              RowCount                 : 0x0000000b (11)
                      mapi_repl: struct EcDoRpc_MAPI_REPL
                          opnum                    : 0x12 (18)
                          handle_idx               : 0x01 (1)
                          error_code               : MAPI_E_SUCCESS (0x0)
                          u                        : union 
EcDoRpc_MAPI_REPL_UNION(case 18)
                          mapi_SetColumns: struct SetColumns_repl
                              TableStatus              : TBLSTAT_COMPLETE (0)
                      mapi_repl: struct EcDoRpc_MAPI_REPL
                          opnum                    : 0x13 (19)
                          handle_idx               : 0x01 (1)
                          error_code               : MAPI_E_SUCCESS (0x0)
                          u                        : union 
EcDoRpc_MAPI_REPL_UNION(case 19)
                          mapi_SortTable: struct SortTable_repl
                              TableStatus              : TBLSTAT_COMPLETE (0)
                      mapi_repl: struct EcDoRpc_MAPI_REPL
                          opnum                    : 0x4f (79)
                          handle_idx               : 0x01 (1)
                          error_code               : MAPI_E_SUCCESS (0x0)
                          u                        : union 
EcDoRpc_MAPI_REPL_UNION(case 79)
                          mapi_FindRow: struct FindRow_repl
                              RowNoLongerVisible       : 0x00 (0)
                              HasRowData               : 0x01 (1)
                              row                      : DATA_BLOB length=537
  [0000] 01 00 01 00 00 00 00 00   14 88 00 01 00 00 00 00   ........ ........
  [0010] 00 19 0E 00 01 00 00 00   00 00 19 0E 00 00 00 00   ........ ........
  [0020] 00 00 49 00 50 00 4D 00   2E 00 52 00 75 00 6C 00   ..I.P.M. ..R.u.l.
  [0030] 65 00 2E 00 4D 00 65 00   73 00 73 00 61 00 67 00   e...M.e. s.s.a.g.
  [0040] 65 00 00 00 0A 0F 01 04   80 0A 0F 01 04 80 02 03   e....... ........
  [0050] 00 00 00 00 00 00 29 04   00 00 00 00 07 03 00 00   ......). ........
  [0060] 00 00 01 00 01 00 00 00   00 00 14 85 00 3F 00 00   ........ .....?..
  [0070] 00 0A 0F 01 04 80 0A 0F   01 04 80 0A 0F 01 04 80   ........ ........
  [0080] 00 43 00 61 00 6C 00 65   00 6E 00 64 00 61 00 72   .C.a.l.e .n.d.a.r
  [0090] 00 00 00 00 01 00 00 00   00 00 00 00 00 00 00 00   ........ ........
  [00A0] 00 00 00 00 00 49 00 50   00 46 00 2E 00 41 00 70   .....I.P .F...A.p
  [00B0] 00 70 00 6F 00 69 00 6E   00 74 00 6D 00 65 00 6E   .p.o.i.n .t.m.e.n
  [00C0] 00 74 00 00 00 0A 0F 01   04 80 00 00 00 00 40 0A   .t...... ......@.
  [00D0] 0F 01 04 80 0A 0F 01 04   80 0A 0F 01 04 80 00 06   ........ ........
  [00E0] 00 01 04 00 00 10 00 0A   0F 01 04 80 03 06 00 00   ........ ........
  [00F0] 00 00 00 01 03 4F 75 74   6C 6F 6F 6B 20 52 75 6C   .....Out look Rul
  [0100] 65 73 20 4F 72 67 61 6E   69 7A 65 72 00 00 00 00   es Organ izer....
  [0110] 00 00 2B 07 00 00 00 00   F5 00 00 00 2C 07 00 00   ..+..... ....,...
  [0120] 00 00 F5 00 80 4F 12 00   80 4F 12 00 00 00 00 00   .....O.. .O......
  [0130] 00 00 00 00 00 00 00 00   01 00 00 00 00 00 00 00   ........ ........
  [0140] 00 00 00 00 01 00 00 00   01 00 00 00 00 00 00 00   ........ ........
  [0150] 01 00 80 4F 12 05 26 43   00 6C 00 65 00 61 00 72   ...O..&C .l.e.a.r
  [0160] 00 20 00 63 00 61 00 74   00 65 00 67 00 6F 00 72   . .c.a.t .e.g.o.r
  [0170] 00 69 00 65 00 73 00 20   00 6F 00 6E 00 20 00 6D   .i.e.s.  .o.n. .m
  [0180] 00 61 00 69 00 6C 00 20   00 28 00 72 00 65 00 63   .a.i.l.  .(.r.e.c
  [0190] 00 6F 00 6D 00 6D 00 65   00 6E 00 64 00 65 00 64   .o.m.m.e .n.d.e.d
  [01A0] 00 29 00 01 00 00 00 00   00 00 00 01 00 00 00 00   .)...... ........
  [01B0] 00 00 00 01 00 00 00 4A   00 00 00 04 00 FF FF 00   .......J ........
  [01C0] 00 0C 00 43 52 75 6C 65   45 6C 65 6D 65 6E 74 90   ...CRule Element.
  [01D0] 01 00 00 01 00 00 00 00   00 00 00 01 00 00 00 01   ........ ........
  [01E0] 80 64 00 00 00 01 00 00   00 00 00 00 00 01 00 00   .d...... ........
  [01F0] 00 01 80 F6 00 00 00 00   00 00 00 01 80 52 01 00   ........ .....R..
  [0200] 00 00 00 00 00 00 00 00   00 00 00 00 00 66 66 66   ........ .....fff
  [0210] 66 E1 5D E4 40 00 00 00   00                       f.].@... .
                  mapi_response            : (handles) number=8
                      handle id                : 0x0000006a (106)
                      handle id                : 0x00000070 (112)
                      handle id                : 0x00000047 (71)
                      handle id                : 0x0000005a (90)
                      handle id                : 0x00000059 (89)
                      handle id                : 0x0000005b (91)
                      handle id                : 0x0000005b (91)
                      handle id                : 0x00000057 (87)
              length                   : *
                  length                   : 0x025b (603)
              result                   : MAPI_E_SUCCESS (0x0)

   

_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel


-- 
Julien Kerihuel
[email protected]
OpenChange Project Founder

Twitter: http://twitter.com/jkerihuel

GPG Fingerprint: 0B55 783D A781 6329 108A  B609 7EF6 FE11 A35F 1F79

--------------------------------------------------------------------------------
_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel
_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel

Reply via email to