2 This filter was automatically generated
3 from efs.idl and efs.cnf.
5 Pidl is a perl based IDL compiler for DCE/RPC idl files.
6 It is maintained by the Samba team, not the Wireshark team.
7 Instructions on how to download and install Pidl can be
8 found at http://wiki.wireshark.org/Pidl
16 #pragma warning(disable:4005)
17 #pragma warning(disable:4013)
18 #pragma warning(disable:4018)
19 #pragma warning(disable:4101)
24 #include <epan/packet.h>
26 #include "packet-dcerpc.h"
27 #include "packet-dcerpc-nt.h"
28 #include "packet-windows-common.h"
29 #include "packet-dcerpc-efs.h"
31 /* Ett declarations */
32 static gint ett_dcerpc_efs
= -1;
33 static gint ett_efs_EFS_HASH_BLOB
= -1;
34 static gint ett_efs_ENCRYPTION_CERTIFICATE_HASH
= -1;
35 static gint ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
= -1;
36 static gint ett_efs_EFS_CERTIFICATE_BLOB
= -1;
37 static gint ett_efs_ENCRYPTION_CERTIFICATE
= -1;
40 /* Header field declarations */
41 static gint hf_efs_EfsRpcQueryUsersOnFile_pUsers
= -1;
42 static gint hf_efs_EfsRpcDecryptFileSrv_FileName
= -1;
43 static gint hf_efs_EfsRpcEncryptFileSrv_Filename
= -1;
44 static gint hf_efs_EfsRpcOpenFileRaw_pvContext
= -1;
45 static gint hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
= -1;
46 static gint hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
= -1;
47 static gint hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
= -1;
48 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
= -1;
49 static gint hf_efs_EfsRpcWriteFileRaw_pvContext
= -1;
50 static gint hf_efs_EFS_HASH_BLOB_pbData
= -1;
51 static gint hf_efs_EfsRpcAddUsersToFile_FileName
= -1;
52 static gint hf_efs_EfsRpcReadFileRaw_pvContext
= -1;
53 static gint hf_efs_werror
= -1;
54 static gint hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
= -1;
55 static gint hf_efs_EfsRpcQueryRecoveryAgents_FileName
= -1;
56 static gint hf_efs_EfsRpcOpenFileRaw_FileName
= -1;
57 static gint hf_efs_opnum
= -1;
58 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
= -1;
59 static gint hf_efs_EfsRpcDecryptFileSrv_Reserved
= -1;
60 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
= -1;
61 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
= -1;
62 static gint hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
= -1;
63 static gint hf_efs_EFS_CERTIFICATE_BLOB_pbData
= -1;
64 static gint hf_efs_EFS_HASH_BLOB_cbData
= -1;
65 static gint hf_efs_EfsRpcCloseRaw_pvContext
= -1;
66 static gint hf_efs_EFS_CERTIFICATE_BLOB_cbData
= -1;
67 static gint hf_efs_EfsRpcQueryUsersOnFile_FileName
= -1;
68 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
= -1;
69 static gint hf_efs_EfsRpcOpenFileRaw_Flags
= -1;
70 static gint hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
= -1;
71 static gint hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
= -1;
72 static gint hf_efs_EfsRpcRemoveUsersFromFile_FileName
= -1;
74 static gint proto_dcerpc_efs
= -1;
75 /* Version information */
78 static e_uuid_t uuid_dcerpc_efs
= {
79 0xc681d488, 0xd850, 0x11d0,
80 { 0x8c, 0x52, 0x00, 0xc0, 0x4f, 0xd9, 0x0f, 0x7e }
82 static guint16 ver_dcerpc_efs
= 1;
84 static int efs_dissect_element_EFS_HASH_BLOB_cbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
85 static int efs_dissect_element_EFS_HASH_BLOB_pbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
86 static int efs_dissect_element_EFS_HASH_BLOB_pbData_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
87 static int efs_dissect_element_EFS_HASH_BLOB_pbData__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
88 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
89 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
90 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
91 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
92 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
93 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
94 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
95 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
96 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
97 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
98 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
99 static int efs_dissect_element_EFS_CERTIFICATE_BLOB_dwCertEncodingType(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
100 static int efs_dissect_element_EFS_CERTIFICATE_BLOB_cbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
101 static int efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
102 static int efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
103 static int efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
104 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_TotalLength(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
105 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
106 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
107 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
108 static int efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
109 static int efs_dissect_element_EfsRpcOpenFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
110 static int efs_dissect_element_EfsRpcOpenFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
111 static int efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
112 static int efs_dissect_element_EfsRpcOpenFileRaw_Flags(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
113 static int efs_dissect_element_EfsRpcReadFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
114 static int efs_dissect_element_EfsRpcReadFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
115 static int efs_dissect_element_EfsRpcWriteFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
116 static int efs_dissect_element_EfsRpcWriteFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
117 static int efs_dissect_element_EfsRpcCloseRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
118 static int efs_dissect_element_EfsRpcCloseRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
119 static int efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
120 static int efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
121 static int efs_dissect_element_EfsRpcDecryptFileSrv_Reserved(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
122 static int efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
123 static int efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
124 static int efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
125 static int efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
126 static int efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
127 static int efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
128 static int efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
129 static int efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
130 static int efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
131 static int efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
132 static int efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
133 static int efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
);
135 efs_dissect_struct_dom_sid(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo _U_
, proto_tree
*tree
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
137 if(di
->conformant_run
){
138 /* just a run to handle conformant arrays, no scalars to dissect */
141 offset
=dissect_nt_sid(tvb
, offset
, tree
, "SID", NULL
, -1);
147 /* IDL: uint32 cbData; */
148 /* IDL: [unique(1)] [size_is(cbData)] uint8 *pbData; */
152 efs_dissect_element_EFS_HASH_BLOB_cbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
154 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_HASH_BLOB_cbData
, 0);
160 efs_dissect_element_EFS_HASH_BLOB_pbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
162 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EFS_HASH_BLOB_pbData_
, NDR_POINTER_UNIQUE
, "Pointer to Pbdata (uint8)",hf_efs_EFS_HASH_BLOB_pbData
);
168 efs_dissect_element_EFS_HASH_BLOB_pbData_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
170 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EFS_HASH_BLOB_pbData__
);
176 efs_dissect_element_EFS_HASH_BLOB_pbData__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
178 offset
= PIDL_dissect_uint8(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_HASH_BLOB_pbData
, 0);
184 efs_dissect_struct_EFS_HASH_BLOB(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*parent_tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
186 proto_item
*item
= NULL
;
187 proto_tree
*tree
= NULL
;
195 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
196 tree
= proto_item_add_subtree(item
, ett_efs_EFS_HASH_BLOB
);
199 offset
= efs_dissect_element_EFS_HASH_BLOB_cbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
201 offset
= efs_dissect_element_EFS_HASH_BLOB_pbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
204 proto_item_set_len(item
, offset
-old_offset
);
207 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
216 /* IDL: uint32 cbTotalLength; */
217 /* IDL: [unique(1)] dom_sid *pUserSid; */
218 /* IDL: [unique(1)] EFS_HASH_BLOB *pHash; */
219 /* IDL: [unique(1)] [charset(UTF16)] uint16 *lpDisplayInformation; */
223 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
225 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
, 0);
231 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
233 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid_
, NDR_POINTER_UNIQUE
, "Pointer to Pusersid (dom_sid)",hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
);
239 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
241 offset
= efs_dissect_struct_dom_sid(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
,0);
247 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
249 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash_
, NDR_POINTER_UNIQUE
, "Pointer to Phash (EFS_HASH_BLOB)",hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
);
255 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
257 offset
= efs_dissect_struct_EFS_HASH_BLOB(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
,0);
263 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
265 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation_
, NDR_POINTER_UNIQUE
, "Pointer to Lpdisplayinformation (uint16)",hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
);
271 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
275 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
, FALSE
, &data
);
276 proto_item_append_text(tree
, ": %s", data
);
282 efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*parent_tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
284 proto_item
*item
= NULL
;
285 proto_tree
*tree
= NULL
;
293 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
294 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE_HASH
);
297 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength(tvb
, offset
, pinfo
, tree
, di
, drep
);
299 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid(tvb
, offset
, pinfo
, tree
, di
, drep
);
301 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash(tvb
, offset
, pinfo
, tree
, di
, drep
);
303 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvb
, offset
, pinfo
, tree
, di
, drep
);
306 proto_item_set_len(item
, offset
-old_offset
);
309 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
318 /* IDL: uint32 nCert_Hash; */
319 /* IDL: [unique(1)] [size_is(nCert_Hash)] ENCRYPTION_CERTIFICATE_HASH *pUsers[*]; */
323 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
325 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
, 0);
331 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
333 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_
);
339 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
341 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers__
, NDR_POINTER_UNIQUE
, "Pointer to Pusers (ENCRYPTION_CERTIFICATE_HASH)",hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
);
347 efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
349 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
,0);
355 efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*parent_tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
357 proto_item
*item
= NULL
;
358 proto_tree
*tree
= NULL
;
366 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
367 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
);
370 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvb
, offset
, pinfo
, tree
, di
, drep
);
372 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb
, offset
, pinfo
, tree
, di
, drep
);
375 proto_item_set_len(item
, offset
-old_offset
);
378 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
387 /* IDL: uint32 dwCertEncodingType; */
388 /* IDL: uint32 cbData; */
389 /* IDL: [unique(1)] [size_is(cbData)] uint8 *pbData; */
393 efs_dissect_element_EFS_CERTIFICATE_BLOB_dwCertEncodingType(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
395 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
, 0);
401 efs_dissect_element_EFS_CERTIFICATE_BLOB_cbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
403 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_cbData
, 0);
409 efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
411 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData_
, NDR_POINTER_UNIQUE
, "Pointer to Pbdata (uint8)",hf_efs_EFS_CERTIFICATE_BLOB_pbData
);
417 efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
419 offset
= dissect_ndr_ucarray(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__
);
425 efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
427 offset
= PIDL_dissect_uint8(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_pbData
, 0);
433 efs_dissect_struct_EFS_CERTIFICATE_BLOB(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*parent_tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
435 proto_item
*item
= NULL
;
436 proto_tree
*tree
= NULL
;
444 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
445 tree
= proto_item_add_subtree(item
, ett_efs_EFS_CERTIFICATE_BLOB
);
448 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_dwCertEncodingType(tvb
, offset
, pinfo
, tree
, di
, drep
);
450 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_cbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
452 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
455 proto_item_set_len(item
, offset
-old_offset
);
458 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
467 /* IDL: uint32 TotalLength; */
468 /* IDL: [unique(1)] dom_sid *pUserSid; */
469 /* IDL: [unique(1)] EFS_CERTIFICATE_BLOB *pCertBlob; */
473 efs_dissect_element_ENCRYPTION_CERTIFICATE_TotalLength(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
475 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
, 0);
481 efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
483 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid_
, NDR_POINTER_UNIQUE
, "Pointer to Pusersid (dom_sid)",hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
);
489 efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
491 offset
= efs_dissect_struct_dom_sid(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
,0);
497 efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
499 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob_
, NDR_POINTER_UNIQUE
, "Pointer to Pcertblob (EFS_CERTIFICATE_BLOB)",hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
);
505 efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
507 offset
= efs_dissect_struct_EFS_CERTIFICATE_BLOB(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
,0);
513 efs_dissect_struct_ENCRYPTION_CERTIFICATE(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*parent_tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
, int hf_index _U_
, guint32 param _U_
)
515 proto_item
*item
= NULL
;
516 proto_tree
*tree
= NULL
;
524 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
525 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE
);
528 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_TotalLength(tvb
, offset
, pinfo
, tree
, di
, drep
);
530 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid(tvb
, offset
, pinfo
, tree
, di
, drep
);
532 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob(tvb
, offset
, pinfo
, tree
, di
, drep
);
535 proto_item_set_len(item
, offset
-old_offset
);
538 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
546 efs_dissect_element_EfsRpcOpenFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
548 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcOpenFileRaw_pvContext_
, NDR_POINTER_REF
, "Pointer to Pvcontext (policy_handle)",hf_efs_EfsRpcOpenFileRaw_pvContext
);
554 efs_dissect_element_EfsRpcOpenFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
556 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcOpenFileRaw_pvContext
, PIDL_POLHND_OPEN
);
562 efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
566 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcOpenFileRaw_FileName
, FALSE
, &data
);
567 proto_item_append_text(tree
, ": %s", data
);
573 efs_dissect_element_EfsRpcOpenFileRaw_Flags(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
575 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcOpenFileRaw_Flags
, 0);
580 /* IDL: WERROR EfsRpcOpenFileRaw( */
581 /* IDL: [out] [ref] policy_handle *pvContext, */
582 /* IDL: [in] [charset(UTF16)] uint16 FileName[*], */
583 /* IDL: [in] uint32 Flags */
587 efs_dissect_EfsRpcOpenFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
591 pinfo
->dcerpc_procedure_name
="EfsRpcOpenFileRaw";
592 offset
= efs_dissect_element_EfsRpcOpenFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
593 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
595 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
598 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
604 efs_dissect_EfsRpcOpenFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
606 pinfo
->dcerpc_procedure_name
="EfsRpcOpenFileRaw";
607 offset
= efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
608 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
609 offset
= efs_dissect_element_EfsRpcOpenFileRaw_Flags(tvb
, offset
, pinfo
, tree
, di
, drep
);
610 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
615 efs_dissect_element_EfsRpcReadFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
617 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcReadFileRaw_pvContext_
, NDR_POINTER_REF
, "Pointer to Pvcontext (policy_handle)",hf_efs_EfsRpcReadFileRaw_pvContext
);
623 efs_dissect_element_EfsRpcReadFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
625 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcReadFileRaw_pvContext
, 0);
630 /* IDL: WERROR EfsRpcReadFileRaw( */
631 /* IDL: [in] [ref] policy_handle *pvContext */
635 efs_dissect_EfsRpcReadFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
639 pinfo
->dcerpc_procedure_name
="EfsRpcReadFileRaw";
640 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
643 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
649 efs_dissect_EfsRpcReadFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
651 pinfo
->dcerpc_procedure_name
="EfsRpcReadFileRaw";
652 offset
= efs_dissect_element_EfsRpcReadFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
653 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
658 efs_dissect_element_EfsRpcWriteFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
660 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcWriteFileRaw_pvContext_
, NDR_POINTER_REF
, "Pointer to Pvcontext (policy_handle)",hf_efs_EfsRpcWriteFileRaw_pvContext
);
666 efs_dissect_element_EfsRpcWriteFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
668 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcWriteFileRaw_pvContext
, 0);
673 /* IDL: WERROR EfsRpcWriteFileRaw( */
674 /* IDL: [in] [ref] policy_handle *pvContext */
678 efs_dissect_EfsRpcWriteFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
682 pinfo
->dcerpc_procedure_name
="EfsRpcWriteFileRaw";
683 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
686 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
692 efs_dissect_EfsRpcWriteFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
694 pinfo
->dcerpc_procedure_name
="EfsRpcWriteFileRaw";
695 offset
= efs_dissect_element_EfsRpcWriteFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
696 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
701 efs_dissect_element_EfsRpcCloseRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
703 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcCloseRaw_pvContext_
, NDR_POINTER_REF
, "Pointer to Pvcontext (policy_handle)",hf_efs_EfsRpcCloseRaw_pvContext
);
709 efs_dissect_element_EfsRpcCloseRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
711 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcCloseRaw_pvContext
, PIDL_POLHND_CLOSE
);
716 /* IDL: void EfsRpcCloseRaw( */
717 /* IDL: [out] [in] [ref] policy_handle *pvContext */
721 efs_dissect_EfsRpcCloseRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
723 pinfo
->dcerpc_procedure_name
="EfsRpcCloseRaw";
724 offset
= efs_dissect_element_EfsRpcCloseRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
725 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
731 efs_dissect_EfsRpcCloseRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
733 pinfo
->dcerpc_procedure_name
="EfsRpcCloseRaw";
734 offset
= efs_dissect_element_EfsRpcCloseRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
735 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
740 efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
744 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcEncryptFileSrv_Filename
, FALSE
, &data
);
745 proto_item_append_text(tree
, ": %s", data
);
750 /* IDL: WERROR EfsRpcEncryptFileSrv( */
751 /* IDL: [in] [charset(UTF16)] uint16 Filename[*] */
755 efs_dissect_EfsRpcEncryptFileSrv_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
759 pinfo
->dcerpc_procedure_name
="EfsRpcEncryptFileSrv";
760 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
763 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
769 efs_dissect_EfsRpcEncryptFileSrv_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
771 pinfo
->dcerpc_procedure_name
="EfsRpcEncryptFileSrv";
772 offset
= efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvb
, offset
, pinfo
, tree
, di
, drep
);
773 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
778 efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
782 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcDecryptFileSrv_FileName
, FALSE
, &data
);
783 proto_item_append_text(tree
, ": %s", data
);
789 efs_dissect_element_EfsRpcDecryptFileSrv_Reserved(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
791 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcDecryptFileSrv_Reserved
, 0);
796 /* IDL: WERROR EfsRpcDecryptFileSrv( */
797 /* IDL: [in] [charset(UTF16)] uint16 FileName[*], */
798 /* IDL: [in] uint32 Reserved */
802 efs_dissect_EfsRpcDecryptFileSrv_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
806 pinfo
->dcerpc_procedure_name
="EfsRpcDecryptFileSrv";
807 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
810 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
816 efs_dissect_EfsRpcDecryptFileSrv_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
818 pinfo
->dcerpc_procedure_name
="EfsRpcDecryptFileSrv";
819 offset
= efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
820 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
821 offset
= efs_dissect_element_EfsRpcDecryptFileSrv_Reserved(tvb
, offset
, pinfo
, tree
, di
, drep
);
822 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
827 efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
831 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcQueryUsersOnFile_FileName
, FALSE
, &data
);
832 proto_item_append_text(tree
, ": %s", data
);
838 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
840 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers_
, NDR_POINTER_REF
, "Pointer to Pusers (ENCRYPTION_CERTIFICATE_HASH_LIST)",hf_efs_EfsRpcQueryUsersOnFile_pUsers
);
846 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
848 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers__
, NDR_POINTER_UNIQUE
, "Pointer to Pusers (ENCRYPTION_CERTIFICATE_HASH_LIST)",hf_efs_EfsRpcQueryUsersOnFile_pUsers
);
854 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
856 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcQueryUsersOnFile_pUsers
,0);
861 /* IDL: WERROR EfsRpcQueryUsersOnFile( */
862 /* IDL: [in] [charset(UTF16)] uint16 FileName[*], */
863 /* IDL: [out] [unique(1)] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers */
867 efs_dissect_EfsRpcQueryUsersOnFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
871 pinfo
->dcerpc_procedure_name
="EfsRpcQueryUsersOnFile";
872 offset
= efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers(tvb
, offset
, pinfo
, tree
, di
, drep
);
873 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
875 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
878 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
884 efs_dissect_EfsRpcQueryUsersOnFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
886 pinfo
->dcerpc_procedure_name
="EfsRpcQueryUsersOnFile";
887 offset
= efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
888 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
893 efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
897 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcQueryRecoveryAgents_FileName
, FALSE
, &data
);
898 proto_item_append_text(tree
, ": %s", data
);
904 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
906 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents_
, NDR_POINTER_REF
, "Pointer to Precoveryagents (ENCRYPTION_CERTIFICATE_HASH_LIST)",hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
);
912 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
914 offset
= dissect_ndr_embedded_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents__
, NDR_POINTER_UNIQUE
, "Pointer to Precoveryagents (ENCRYPTION_CERTIFICATE_HASH_LIST)",hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
);
920 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
922 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
,0);
927 /* IDL: WERROR EfsRpcQueryRecoveryAgents( */
928 /* IDL: [in] [charset(UTF16)] uint16 FileName[*], */
929 /* IDL: [out] [unique(1)] [ref] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents */
933 efs_dissect_EfsRpcQueryRecoveryAgents_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
937 pinfo
->dcerpc_procedure_name
="EfsRpcQueryRecoveryAgents";
938 offset
= efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents(tvb
, offset
, pinfo
, tree
, di
, drep
);
939 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
941 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
944 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
950 efs_dissect_EfsRpcQueryRecoveryAgents_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
952 pinfo
->dcerpc_procedure_name
="EfsRpcQueryRecoveryAgents";
953 offset
= efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
954 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
959 efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
963 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcRemoveUsersFromFile_FileName
, FALSE
, &data
);
964 proto_item_append_text(tree
, ": %s", data
);
969 /* IDL: WERROR EfsRpcRemoveUsersFromFile( */
970 /* IDL: [in] [charset(UTF16)] uint16 FileName[*] */
974 efs_dissect_EfsRpcRemoveUsersFromFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
978 pinfo
->dcerpc_procedure_name
="EfsRpcRemoveUsersFromFile";
979 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
982 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
988 efs_dissect_EfsRpcRemoveUsersFromFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
990 pinfo
->dcerpc_procedure_name
="EfsRpcRemoveUsersFromFile";
991 offset
= efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
992 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
997 efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1001 offset
= dissect_ndr_cvstring(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(guint16
), hf_efs_EfsRpcAddUsersToFile_FileName
, FALSE
, &data
);
1002 proto_item_append_text(tree
, ": %s", data
);
1007 /* IDL: WERROR EfsRpcAddUsersToFile( */
1008 /* IDL: [in] [charset(UTF16)] uint16 FileName[*] */
1012 efs_dissect_EfsRpcAddUsersToFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1016 pinfo
->dcerpc_procedure_name
="EfsRpcAddUsersToFile";
1017 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1020 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
1026 efs_dissect_EfsRpcAddUsersToFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1028 pinfo
->dcerpc_procedure_name
="EfsRpcAddUsersToFile";
1029 offset
= efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
1030 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1035 efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1037 offset
= dissect_ndr_toplevel_pointer(tvb
, offset
, pinfo
, tree
, di
, drep
, efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate_
, NDR_POINTER_UNIQUE
, "Pointer to Pencryptioncertificate (ENCRYPTION_CERTIFICATE)",hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
);
1043 efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1045 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
,0);
1050 /* IDL: WERROR EfsRpcSetFileEncryptionKey( */
1051 /* IDL: [unique(1)] [in] ENCRYPTION_CERTIFICATE *pEncryptionCertificate */
1055 efs_dissect_EfsRpcSetFileEncryptionKey_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1059 pinfo
->dcerpc_procedure_name
="EfsRpcSetFileEncryptionKey";
1060 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1063 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
1069 efs_dissect_EfsRpcSetFileEncryptionKey_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1071 pinfo
->dcerpc_procedure_name
="EfsRpcSetFileEncryptionKey";
1072 offset
= efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate(tvb
, offset
, pinfo
, tree
, di
, drep
);
1073 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1077 /* IDL: WERROR EfsRpcNotSupported( */
1082 efs_dissect_EfsRpcNotSupported_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1086 pinfo
->dcerpc_procedure_name
="EfsRpcNotSupported";
1087 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1090 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
1096 efs_dissect_EfsRpcNotSupported_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1098 pinfo
->dcerpc_procedure_name
="EfsRpcNotSupported";
1102 /* IDL: WERROR EfsRpcFileKeyInfo( */
1107 efs_dissect_EfsRpcFileKeyInfo_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1111 pinfo
->dcerpc_procedure_name
="EfsRpcFileKeyInfo";
1112 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1115 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
1121 efs_dissect_EfsRpcFileKeyInfo_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1123 pinfo
->dcerpc_procedure_name
="EfsRpcFileKeyInfo";
1127 /* IDL: WERROR EfsRpcDuplicateEncryptionInfoFile( */
1132 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1136 pinfo
->dcerpc_procedure_name
="EfsRpcDuplicateEncryptionInfoFile";
1137 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1140 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str(status
, WERR_errors
, "Unknown DOS error 0x%08x"));
1146 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, guint8
*drep _U_
)
1148 pinfo
->dcerpc_procedure_name
="EfsRpcDuplicateEncryptionInfoFile";
1153 static dcerpc_sub_dissector efs_dissectors
[] = {
1154 { 0, "EfsRpcOpenFileRaw",
1155 efs_dissect_EfsRpcOpenFileRaw_request
, efs_dissect_EfsRpcOpenFileRaw_response
},
1156 { 1, "EfsRpcReadFileRaw",
1157 efs_dissect_EfsRpcReadFileRaw_request
, efs_dissect_EfsRpcReadFileRaw_response
},
1158 { 2, "EfsRpcWriteFileRaw",
1159 efs_dissect_EfsRpcWriteFileRaw_request
, efs_dissect_EfsRpcWriteFileRaw_response
},
1160 { 3, "EfsRpcCloseRaw",
1161 efs_dissect_EfsRpcCloseRaw_request
, efs_dissect_EfsRpcCloseRaw_response
},
1162 { 4, "EfsRpcEncryptFileSrv",
1163 efs_dissect_EfsRpcEncryptFileSrv_request
, efs_dissect_EfsRpcEncryptFileSrv_response
},
1164 { 5, "EfsRpcDecryptFileSrv",
1165 efs_dissect_EfsRpcDecryptFileSrv_request
, efs_dissect_EfsRpcDecryptFileSrv_response
},
1166 { 6, "EfsRpcQueryUsersOnFile",
1167 efs_dissect_EfsRpcQueryUsersOnFile_request
, efs_dissect_EfsRpcQueryUsersOnFile_response
},
1168 { 7, "EfsRpcQueryRecoveryAgents",
1169 efs_dissect_EfsRpcQueryRecoveryAgents_request
, efs_dissect_EfsRpcQueryRecoveryAgents_response
},
1170 { 8, "EfsRpcRemoveUsersFromFile",
1171 efs_dissect_EfsRpcRemoveUsersFromFile_request
, efs_dissect_EfsRpcRemoveUsersFromFile_response
},
1172 { 9, "EfsRpcAddUsersToFile",
1173 efs_dissect_EfsRpcAddUsersToFile_request
, efs_dissect_EfsRpcAddUsersToFile_response
},
1174 { 10, "EfsRpcSetFileEncryptionKey",
1175 efs_dissect_EfsRpcSetFileEncryptionKey_request
, efs_dissect_EfsRpcSetFileEncryptionKey_response
},
1176 { 11, "EfsRpcNotSupported",
1177 efs_dissect_EfsRpcNotSupported_request
, efs_dissect_EfsRpcNotSupported_response
},
1178 { 12, "EfsRpcFileKeyInfo",
1179 efs_dissect_EfsRpcFileKeyInfo_request
, efs_dissect_EfsRpcFileKeyInfo_response
},
1180 { 13, "EfsRpcDuplicateEncryptionInfoFile",
1181 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_request
, efs_dissect_EfsRpcDuplicateEncryptionInfoFile_response
},
1182 { 0, NULL
, NULL
, NULL
}
1185 void proto_register_dcerpc_efs(void)
1187 static hf_register_info hf
[] = {
1188 { &hf_efs_EfsRpcQueryUsersOnFile_pUsers
,
1189 { "Pusers", "efs.EfsRpcQueryUsersOnFile.pUsers", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1190 { &hf_efs_EfsRpcDecryptFileSrv_FileName
,
1191 { "Filename", "efs.EfsRpcDecryptFileSrv.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1192 { &hf_efs_EfsRpcEncryptFileSrv_Filename
,
1193 { "Filename", "efs.EfsRpcEncryptFileSrv.Filename", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1194 { &hf_efs_EfsRpcOpenFileRaw_pvContext
,
1195 { "Pvcontext", "efs.EfsRpcOpenFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1196 { &hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
,
1197 { "Totallength", "efs.ENCRYPTION_CERTIFICATE.TotalLength", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1198 { &hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
,
1199 { "Dwcertencodingtype", "efs.EFS_CERTIFICATE_BLOB.dwCertEncodingType", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1200 { &hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
,
1201 { "Pcertblob", "efs.ENCRYPTION_CERTIFICATE.pCertBlob", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1202 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
,
1203 { "Pusers", "efs.ENCRYPTION_CERTIFICATE_HASH_LIST.pUsers", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1204 { &hf_efs_EfsRpcWriteFileRaw_pvContext
,
1205 { "Pvcontext", "efs.EfsRpcWriteFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1206 { &hf_efs_EFS_HASH_BLOB_pbData
,
1207 { "Pbdata", "efs.EFS_HASH_BLOB.pbData", FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1208 { &hf_efs_EfsRpcAddUsersToFile_FileName
,
1209 { "Filename", "efs.EfsRpcAddUsersToFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1210 { &hf_efs_EfsRpcReadFileRaw_pvContext
,
1211 { "Pvcontext", "efs.EfsRpcReadFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1213 { "Windows Error", "efs.werror", FT_UINT32
, BASE_HEX
, VALS(WERR_errors
), 0, NULL
, HFILL
}},
1214 { &hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
,
1215 { "Pencryptioncertificate", "efs.EfsRpcSetFileEncryptionKey.pEncryptionCertificate", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1216 { &hf_efs_EfsRpcQueryRecoveryAgents_FileName
,
1217 { "Filename", "efs.EfsRpcQueryRecoveryAgents.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1218 { &hf_efs_EfsRpcOpenFileRaw_FileName
,
1219 { "Filename", "efs.EfsRpcOpenFileRaw.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1221 { "Operation", "efs.opnum", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1222 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
,
1223 { "Ncert Hash", "efs.ENCRYPTION_CERTIFICATE_HASH_LIST.nCert_Hash", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1224 { &hf_efs_EfsRpcDecryptFileSrv_Reserved
,
1225 { "Reserved", "efs.EfsRpcDecryptFileSrv.Reserved", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1226 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
,
1227 { "Phash", "efs.ENCRYPTION_CERTIFICATE_HASH.pHash", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1228 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
,
1229 { "Pusersid", "efs.ENCRYPTION_CERTIFICATE_HASH.pUserSid", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1230 { &hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
,
1231 { "Pusersid", "efs.ENCRYPTION_CERTIFICATE.pUserSid", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1232 { &hf_efs_EFS_CERTIFICATE_BLOB_pbData
,
1233 { "Pbdata", "efs.EFS_CERTIFICATE_BLOB.pbData", FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1234 { &hf_efs_EFS_HASH_BLOB_cbData
,
1235 { "Cbdata", "efs.EFS_HASH_BLOB.cbData", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1236 { &hf_efs_EfsRpcCloseRaw_pvContext
,
1237 { "Pvcontext", "efs.EfsRpcCloseRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1238 { &hf_efs_EFS_CERTIFICATE_BLOB_cbData
,
1239 { "Cbdata", "efs.EFS_CERTIFICATE_BLOB.cbData", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1240 { &hf_efs_EfsRpcQueryUsersOnFile_FileName
,
1241 { "Filename", "efs.EfsRpcQueryUsersOnFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1242 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
,
1243 { "Cbtotallength", "efs.ENCRYPTION_CERTIFICATE_HASH.cbTotalLength", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1244 { &hf_efs_EfsRpcOpenFileRaw_Flags
,
1245 { "Flags", "efs.EfsRpcOpenFileRaw.Flags", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1246 { &hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
,
1247 { "Precoveryagents", "efs.EfsRpcQueryRecoveryAgents.pRecoveryAgents", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1248 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
,
1249 { "Lpdisplayinformation", "efs.ENCRYPTION_CERTIFICATE_HASH.lpDisplayInformation", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1250 { &hf_efs_EfsRpcRemoveUsersFromFile_FileName
,
1251 { "Filename", "efs.EfsRpcRemoveUsersFromFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1255 static gint
*ett
[] = {
1257 &ett_efs_EFS_HASH_BLOB
,
1258 &ett_efs_ENCRYPTION_CERTIFICATE_HASH
,
1259 &ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
,
1260 &ett_efs_EFS_CERTIFICATE_BLOB
,
1261 &ett_efs_ENCRYPTION_CERTIFICATE
,
1264 proto_dcerpc_efs
= proto_register_protocol("EFS (pidl)", "EFS", "efs");
1265 proto_register_field_array(proto_dcerpc_efs
, hf
, array_length (hf
));
1266 proto_register_subtree_array(ett
, array_length(ett
));
1269 void proto_reg_handoff_dcerpc_efs(void)
1271 dcerpc_init_uuid(proto_dcerpc_efs
, ett_dcerpc_efs
,
1272 &uuid_dcerpc_efs
, ver_dcerpc_efs
,
1273 efs_dissectors
, hf_efs_opnum
);