2 This file was automatically generated by Pidl
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 https://wiki.wireshark.org/Pidl
14 #include <wsutil/array.h>
15 #include <epan/packet.h>
18 #include "packet-dcerpc.h"
19 #include "packet-dcerpc-nt.h"
20 #include "packet-windows-common.h"
21 #include "packet-dcerpc-efs.h"
22 void proto_register_dcerpc_efs(void);
23 void proto_reg_handoff_dcerpc_efs(void);
25 /* Ett declarations */
26 static int ett_dcerpc_efs
;
27 static int ett_efs_EFS_HASH_BLOB
;
28 static int ett_efs_ENCRYPTION_CERTIFICATE_HASH
;
29 static int ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
;
30 static int ett_efs_EFS_CERTIFICATE_BLOB
;
31 static int ett_efs_ENCRYPTION_CERTIFICATE
;
34 /* Header field declarations */
35 static int hf_efs_EFS_CERTIFICATE_BLOB_cbData
;
36 static int hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
;
37 static int hf_efs_EFS_CERTIFICATE_BLOB_pbData
;
38 static int hf_efs_EFS_HASH_BLOB_cbData
;
39 static int hf_efs_EFS_HASH_BLOB_pbData
;
40 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
;
41 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
;
42 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
;
43 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
;
44 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
;
45 static int hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
;
46 static int hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
;
47 static int hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
;
48 static int hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
;
49 static int hf_efs_EfsRpcAddUsersToFile_FileName
;
50 static int hf_efs_EfsRpcCloseRaw_pvContext
;
51 static int hf_efs_EfsRpcDecryptFileSrv_FileName
;
52 static int hf_efs_EfsRpcDecryptFileSrv_Reserved
;
53 static int hf_efs_EfsRpcEncryptFileSrv_Filename
;
54 static int hf_efs_EfsRpcOpenFileRaw_FileName
;
55 static int hf_efs_EfsRpcOpenFileRaw_Flags
;
56 static int hf_efs_EfsRpcOpenFileRaw_pvContext
;
57 static int hf_efs_EfsRpcQueryRecoveryAgents_FileName
;
58 static int hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
;
59 static int hf_efs_EfsRpcQueryUsersOnFile_FileName
;
60 static int hf_efs_EfsRpcQueryUsersOnFile_pUsers
;
61 static int hf_efs_EfsRpcReadFileRaw_pvContext
;
62 static int hf_efs_EfsRpcRemoveUsersFromFile_FileName
;
63 static int hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
;
64 static int hf_efs_EfsRpcWriteFileRaw_pvContext
;
65 static int hf_efs_opnum
;
66 static int hf_efs_werror
;
68 static int proto_dcerpc_efs
;
69 /* Version information */
72 static e_guid_t uuid_dcerpc_efs
= {
73 0xc681d488, 0xd850, 0x11d0,
74 { 0x8c, 0x52, 0x00, 0xc0, 0x4f, 0xd9, 0x0f, 0x7e }
76 static uint16_t ver_dcerpc_efs
= 1;
78 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_
, uint8_t *drep _U_
);
79 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_
, uint8_t *drep _U_
);
80 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_
, uint8_t *drep _U_
);
81 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_
, uint8_t *drep _U_
);
82 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_
, uint8_t *drep _U_
);
83 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_
, uint8_t *drep _U_
);
84 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_
, uint8_t *drep _U_
);
85 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_
, uint8_t *drep _U_
);
86 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_
, uint8_t *drep _U_
);
87 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_
, uint8_t *drep _U_
);
88 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_
, uint8_t *drep _U_
);
89 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_
, uint8_t *drep _U_
);
90 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_
, uint8_t *drep _U_
, struct ndr_generic_array
*nga
);
91 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_
, uint8_t *drep _U_
);
92 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_
, uint8_t *drep _U_
);
93 static int efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
, struct ndr_generic_array
*nga
);
94 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_
, uint8_t *drep _U_
);
95 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_
, uint8_t *drep _U_
);
96 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_
, uint8_t *drep _U_
);
97 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_
, uint8_t *drep _U_
);
98 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_
, uint8_t *drep _U_
);
99 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_
, uint8_t *drep _U_
);
100 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_
, uint8_t *drep _U_
);
101 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_
, uint8_t *drep _U_
);
102 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_
, uint8_t *drep _U_
);
103 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_
, uint8_t *drep _U_
);
104 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_
, uint8_t *drep _U_
);
105 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_
, uint8_t *drep _U_
);
106 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_
, uint8_t *drep _U_
);
107 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_
, uint8_t *drep _U_
);
108 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_
, uint8_t *drep _U_
);
109 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_
, uint8_t *drep _U_
);
110 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_
, uint8_t *drep _U_
);
111 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_
, uint8_t *drep _U_
);
112 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_
, uint8_t *drep _U_
);
113 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_
, uint8_t *drep _U_
);
114 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_
, uint8_t *drep _U_
);
115 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_
, uint8_t *drep _U_
);
116 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_
, uint8_t *drep _U_
);
117 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_
, uint8_t *drep _U_
);
118 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_
, uint8_t *drep _U_
);
119 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_
, uint8_t *drep _U_
);
120 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_
, uint8_t *drep _U_
);
121 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_
, uint8_t *drep _U_
);
122 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_
, uint8_t *drep _U_
);
123 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_
, uint8_t *drep _U_
);
124 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_
, uint8_t *drep _U_
);
125 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_
, uint8_t *drep _U_
);
126 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_
, uint8_t *drep _U_
);
127 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_
, uint8_t *drep _U_
);
128 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_
, uint8_t *drep _U_
);
130 efs_dissect_struct_dom_sid(tvbuff_t
*tvb
, int offset
, packet_info
*pinfo _U_
, proto_tree
*tree
, dcerpc_info
* di
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
132 if(di
->conformant_run
){
133 /* just a run to handle conformant arrays, no scalars to dissect */
136 offset
=dissect_nt_sid(tvb
, offset
, tree
, "SID", NULL
, -1);
142 /* IDL: uint32 cbData; */
143 /* IDL: [size_is(cbData)] [unique(1)] uint8 *pbData; */
147 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_
, uint8_t *drep _U_
)
149 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_HASH_BLOB_cbData
, 0);
155 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_
, uint8_t *drep _U_
)
157 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
);
163 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_
, uint8_t *drep _U_
)
165 struct ndr_generic_array nga
= { .is_conformant
= false, };
167 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
169 offset
= dissect_ndr_generic_array_bytes(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
, efs_dissect_element_EFS_HASH_BLOB_pbData__
);
175 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_
, uint8_t *drep _U_
)
177 offset
= PIDL_dissect_uint8(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_HASH_BLOB_pbData
, 0);
183 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_
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
185 proto_item
*item
= NULL
;
186 proto_tree
*tree
= NULL
;
194 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
195 tree
= proto_item_add_subtree(item
, ett_efs_EFS_HASH_BLOB
);
198 offset
= efs_dissect_element_EFS_HASH_BLOB_cbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
200 offset
= efs_dissect_element_EFS_HASH_BLOB_pbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
203 proto_item_set_len(item
, offset
-old_offset
);
206 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
215 /* IDL: uint32 cbTotalLength; */
216 /* IDL: [unique(1)] dom_sid *pUserSid; */
217 /* IDL: [unique(1)] EFS_HASH_BLOB *pHash; */
218 /* IDL: [charset(UTF16)] [unique(1)] uint16 *lpDisplayInformation; */
222 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_
, uint8_t *drep _U_
)
224 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
, 0);
230 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_
, uint8_t *drep _U_
)
232 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
);
238 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_
, uint8_t *drep _U_
)
240 offset
= efs_dissect_struct_dom_sid(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
,0);
246 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_
, uint8_t *drep _U_
)
248 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
);
254 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_
, uint8_t *drep _U_
)
256 offset
= efs_dissect_struct_EFS_HASH_BLOB(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
,0);
262 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_
, uint8_t *drep _U_
)
264 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
);
270 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_
, uint8_t *drep _U_
)
273 struct ndr_generic_array nga
= { .is_conformant
= false, };
275 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
277 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
278 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
, false, &nga
, &data
);
279 proto_item_append_text(tree
, ": %s", data
);
285 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_
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
287 proto_item
*item
= NULL
;
288 proto_tree
*tree
= NULL
;
296 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
297 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE_HASH
);
300 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength(tvb
, offset
, pinfo
, tree
, di
, drep
);
302 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pUserSid(tvb
, offset
, pinfo
, tree
, di
, drep
);
304 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_pHash(tvb
, offset
, pinfo
, tree
, di
, drep
);
306 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation(tvb
, offset
, pinfo
, tree
, di
, drep
);
309 proto_item_set_len(item
, offset
-old_offset
);
312 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
321 /* IDL: uint32 nCert_Hash; */
322 /* IDL: [size_is(nCert_Hash)] [unique(1)] ENCRYPTION_CERTIFICATE_HASH *pUsers[*]; */
326 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_
, uint8_t *drep _U_
)
328 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
, 0);
334 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_
, uint8_t *drep _U_
, struct ndr_generic_array
*nga
)
337 offset
= dissect_ndr_generic_array_bytes(tvb
, offset
, pinfo
, tree
, di
, drep
, nga
, efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers_
);
343 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_
, uint8_t *drep _U_
)
345 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
);
351 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_
, uint8_t *drep _U_
)
353 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
,0);
359 efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
, struct ndr_generic_array
*nga
)
361 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, nga
);
367 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_
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
369 struct ndr_generic_array nga_pUsers
= { .is_conformant
= false, };
370 proto_item
*item
= NULL
;
371 proto_tree
*tree
= NULL
;
374 offset
= efs_dissect_conformant_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb
, offset
, pinfo
, parent_tree
, di
, drep
, &nga_pUsers
);
381 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
382 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
);
385 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash(tvb
, offset
, pinfo
, tree
, di
, drep
);
387 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga_pUsers
);
390 proto_item_set_len(item
, offset
-old_offset
);
398 /* IDL: uint32 dwCertEncodingType; */
399 /* IDL: uint32 cbData; */
400 /* IDL: [size_is(cbData)] [unique(1)] uint8 *pbData; */
404 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_
, uint8_t *drep _U_
)
406 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
, 0);
412 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_
, uint8_t *drep _U_
)
414 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_cbData
, 0);
420 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_
, uint8_t *drep _U_
)
422 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
);
428 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_
, uint8_t *drep _U_
)
430 struct ndr_generic_array nga
= { .is_conformant
= false, };
432 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
434 offset
= dissect_ndr_generic_array_bytes(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
, efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData__
);
440 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_
, uint8_t *drep _U_
)
442 offset
= PIDL_dissect_uint8(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EFS_CERTIFICATE_BLOB_pbData
, 0);
448 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_
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
450 proto_item
*item
= NULL
;
451 proto_tree
*tree
= NULL
;
459 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
460 tree
= proto_item_add_subtree(item
, ett_efs_EFS_CERTIFICATE_BLOB
);
463 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_dwCertEncodingType(tvb
, offset
, pinfo
, tree
, di
, drep
);
465 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_cbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
467 offset
= efs_dissect_element_EFS_CERTIFICATE_BLOB_pbData(tvb
, offset
, pinfo
, tree
, di
, drep
);
470 proto_item_set_len(item
, offset
-old_offset
);
473 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
482 /* IDL: uint32 TotalLength; */
483 /* IDL: [unique(1)] dom_sid *pUserSid; */
484 /* IDL: [unique(1)] EFS_CERTIFICATE_BLOB *pCertBlob; */
488 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_
, uint8_t *drep _U_
)
490 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
, 0);
496 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_
, uint8_t *drep _U_
)
498 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
);
504 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_
, uint8_t *drep _U_
)
506 offset
= efs_dissect_struct_dom_sid(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
,0);
512 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_
, uint8_t *drep _U_
)
514 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
);
520 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_
, uint8_t *drep _U_
)
522 offset
= efs_dissect_struct_EFS_CERTIFICATE_BLOB(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
,0);
528 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_
, uint8_t *drep _U_
, int hf_index _U_
, uint32_t param _U_
)
530 proto_item
*item
= NULL
;
531 proto_tree
*tree
= NULL
;
539 item
= proto_tree_add_item(parent_tree
, hf_index
, tvb
, offset
, -1, ENC_NA
);
540 tree
= proto_item_add_subtree(item
, ett_efs_ENCRYPTION_CERTIFICATE
);
543 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_TotalLength(tvb
, offset
, pinfo
, tree
, di
, drep
);
545 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_pUserSid(tvb
, offset
, pinfo
, tree
, di
, drep
);
547 offset
= efs_dissect_element_ENCRYPTION_CERTIFICATE_pCertBlob(tvb
, offset
, pinfo
, tree
, di
, drep
);
550 proto_item_set_len(item
, offset
-old_offset
);
553 if (di
->call_data
->flags
& DCERPC_IS_NDR64
) {
561 efs_dissect_element_EfsRpcOpenFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
563 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
);
569 efs_dissect_element_EfsRpcOpenFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
571 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcOpenFileRaw_pvContext
, PIDL_POLHND_OPEN
);
577 efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
580 struct ndr_generic_array nga
= { .is_conformant
= false, };
582 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
584 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
585 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcOpenFileRaw_FileName
, false, &nga
, &data
);
586 proto_item_append_text(tree
, ": %s", data
);
592 efs_dissect_element_EfsRpcOpenFileRaw_Flags(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
594 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcOpenFileRaw_Flags
, 0);
599 /* IDL: WERROR EfsRpcOpenFileRaw( */
600 /* IDL: [out] [ref] policy_handle *pvContext, */
601 /* IDL: [charset(UTF16)] [in] uint16 FileName[*], */
602 /* IDL: [in] uint32 Flags */
606 efs_dissect_EfsRpcOpenFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
610 di
->dcerpc_procedure_name
="EfsRpcOpenFileRaw";
611 offset
= efs_dissect_element_EfsRpcOpenFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
612 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
614 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
617 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
623 efs_dissect_EfsRpcOpenFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
625 di
->dcerpc_procedure_name
="EfsRpcOpenFileRaw";
626 offset
= efs_dissect_element_EfsRpcOpenFileRaw_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
627 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
628 offset
= efs_dissect_element_EfsRpcOpenFileRaw_Flags(tvb
, offset
, pinfo
, tree
, di
, drep
);
629 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
634 efs_dissect_element_EfsRpcReadFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
636 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
);
642 efs_dissect_element_EfsRpcReadFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
644 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcReadFileRaw_pvContext
, 0);
649 /* IDL: WERROR EfsRpcReadFileRaw( */
650 /* IDL: [in] [ref] policy_handle *pvContext */
654 efs_dissect_EfsRpcReadFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
658 di
->dcerpc_procedure_name
="EfsRpcReadFileRaw";
659 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
662 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
668 efs_dissect_EfsRpcReadFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
670 di
->dcerpc_procedure_name
="EfsRpcReadFileRaw";
671 offset
= efs_dissect_element_EfsRpcReadFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
672 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
677 efs_dissect_element_EfsRpcWriteFileRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
679 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
);
685 efs_dissect_element_EfsRpcWriteFileRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
687 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcWriteFileRaw_pvContext
, 0);
692 /* IDL: WERROR EfsRpcWriteFileRaw( */
693 /* IDL: [in] [ref] policy_handle *pvContext */
697 efs_dissect_EfsRpcWriteFileRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
701 di
->dcerpc_procedure_name
="EfsRpcWriteFileRaw";
702 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
705 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
711 efs_dissect_EfsRpcWriteFileRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
713 di
->dcerpc_procedure_name
="EfsRpcWriteFileRaw";
714 offset
= efs_dissect_element_EfsRpcWriteFileRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
715 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
720 efs_dissect_element_EfsRpcCloseRaw_pvContext(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
722 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
);
728 efs_dissect_element_EfsRpcCloseRaw_pvContext_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
730 offset
= PIDL_dissect_policy_hnd(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcCloseRaw_pvContext
, PIDL_POLHND_CLOSE
);
735 /* IDL: void EfsRpcCloseRaw( */
736 /* IDL: [in] [out] [ref] policy_handle *pvContext */
740 efs_dissect_EfsRpcCloseRaw_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
742 di
->dcerpc_procedure_name
="EfsRpcCloseRaw";
743 offset
= efs_dissect_element_EfsRpcCloseRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
744 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
750 efs_dissect_EfsRpcCloseRaw_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
752 di
->dcerpc_procedure_name
="EfsRpcCloseRaw";
753 offset
= efs_dissect_element_EfsRpcCloseRaw_pvContext(tvb
, offset
, pinfo
, tree
, di
, drep
);
754 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
759 efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
762 struct ndr_generic_array nga
= { .is_conformant
= false, };
764 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
766 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
767 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcEncryptFileSrv_Filename
, false, &nga
, &data
);
768 proto_item_append_text(tree
, ": %s", data
);
773 /* IDL: WERROR EfsRpcEncryptFileSrv( */
774 /* IDL: [charset(UTF16)] [in] uint16 Filename[*] */
778 efs_dissect_EfsRpcEncryptFileSrv_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
782 di
->dcerpc_procedure_name
="EfsRpcEncryptFileSrv";
783 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
786 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
792 efs_dissect_EfsRpcEncryptFileSrv_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
794 di
->dcerpc_procedure_name
="EfsRpcEncryptFileSrv";
795 offset
= efs_dissect_element_EfsRpcEncryptFileSrv_Filename(tvb
, offset
, pinfo
, tree
, di
, drep
);
796 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
801 efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
804 struct ndr_generic_array nga
= { .is_conformant
= false, };
806 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
808 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
809 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcDecryptFileSrv_FileName
, false, &nga
, &data
);
810 proto_item_append_text(tree
, ": %s", data
);
816 efs_dissect_element_EfsRpcDecryptFileSrv_Reserved(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
818 offset
= PIDL_dissect_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_EfsRpcDecryptFileSrv_Reserved
, 0);
823 /* IDL: WERROR EfsRpcDecryptFileSrv( */
824 /* IDL: [charset(UTF16)] [in] uint16 FileName[*], */
825 /* IDL: [in] uint32 Reserved */
829 efs_dissect_EfsRpcDecryptFileSrv_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
833 di
->dcerpc_procedure_name
="EfsRpcDecryptFileSrv";
834 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
837 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
843 efs_dissect_EfsRpcDecryptFileSrv_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
845 di
->dcerpc_procedure_name
="EfsRpcDecryptFileSrv";
846 offset
= efs_dissect_element_EfsRpcDecryptFileSrv_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
847 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
848 offset
= efs_dissect_element_EfsRpcDecryptFileSrv_Reserved(tvb
, offset
, pinfo
, tree
, di
, drep
);
849 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
854 efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
857 struct ndr_generic_array nga
= { .is_conformant
= false, };
859 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
861 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
862 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcQueryUsersOnFile_FileName
, false, &nga
, &data
);
863 proto_item_append_text(tree
, ": %s", data
);
869 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
871 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
);
877 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
879 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
);
885 efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
887 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcQueryUsersOnFile_pUsers
,0);
892 /* IDL: WERROR EfsRpcQueryUsersOnFile( */
893 /* IDL: [charset(UTF16)] [in] uint16 FileName[*], */
894 /* IDL: [out] [ref] [unique(1)] ENCRYPTION_CERTIFICATE_HASH_LIST **pUsers */
898 efs_dissect_EfsRpcQueryUsersOnFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
902 di
->dcerpc_procedure_name
="EfsRpcQueryUsersOnFile";
903 offset
= efs_dissect_element_EfsRpcQueryUsersOnFile_pUsers(tvb
, offset
, pinfo
, tree
, di
, drep
);
904 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
906 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
909 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
915 efs_dissect_EfsRpcQueryUsersOnFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
917 di
->dcerpc_procedure_name
="EfsRpcQueryUsersOnFile";
918 offset
= efs_dissect_element_EfsRpcQueryUsersOnFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
919 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
924 efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
927 struct ndr_generic_array nga
= { .is_conformant
= false, };
929 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
931 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
932 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcQueryRecoveryAgents_FileName
, false, &nga
, &data
);
933 proto_item_append_text(tree
, ": %s", data
);
939 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
941 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
);
947 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
949 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
);
955 efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents__(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
957 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE_HASH_LIST(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
,0);
962 /* IDL: WERROR EfsRpcQueryRecoveryAgents( */
963 /* IDL: [charset(UTF16)] [in] uint16 FileName[*], */
964 /* IDL: [out] [ref] [unique(1)] ENCRYPTION_CERTIFICATE_HASH_LIST **pRecoveryAgents */
968 efs_dissect_EfsRpcQueryRecoveryAgents_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
972 di
->dcerpc_procedure_name
="EfsRpcQueryRecoveryAgents";
973 offset
= efs_dissect_element_EfsRpcQueryRecoveryAgents_pRecoveryAgents(tvb
, offset
, pinfo
, tree
, di
, drep
);
974 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
976 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
979 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
985 efs_dissect_EfsRpcQueryRecoveryAgents_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
987 di
->dcerpc_procedure_name
="EfsRpcQueryRecoveryAgents";
988 offset
= efs_dissect_element_EfsRpcQueryRecoveryAgents_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
989 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
994 efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
997 struct ndr_generic_array nga
= { .is_conformant
= false, };
999 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
1001 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
1002 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcRemoveUsersFromFile_FileName
, false, &nga
, &data
);
1003 proto_item_append_text(tree
, ": %s", data
);
1008 /* IDL: WERROR EfsRpcRemoveUsersFromFile( */
1009 /* IDL: [charset(UTF16)] [in] uint16 FileName[*] */
1013 efs_dissect_EfsRpcRemoveUsersFromFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1017 di
->dcerpc_procedure_name
="EfsRpcRemoveUsersFromFile";
1018 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1021 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1027 efs_dissect_EfsRpcRemoveUsersFromFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1029 di
->dcerpc_procedure_name
="EfsRpcRemoveUsersFromFile";
1030 offset
= efs_dissect_element_EfsRpcRemoveUsersFromFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
1031 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1036 efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1039 struct ndr_generic_array nga
= { .is_conformant
= false, };
1041 offset
= dissect_ndr_conformant_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
1043 offset
= dissect_ndr_varying_array_hdr(tvb
, offset
, pinfo
, tree
, di
, drep
, &nga
);
1044 offset
= dissect_ndr_generic_array_string(tvb
, offset
, pinfo
, tree
, di
, drep
, sizeof(uint16_t), hf_efs_EfsRpcAddUsersToFile_FileName
, false, &nga
, &data
);
1045 proto_item_append_text(tree
, ": %s", data
);
1050 /* IDL: WERROR EfsRpcAddUsersToFile( */
1051 /* IDL: [charset(UTF16)] [in] uint16 FileName[*] */
1055 efs_dissect_EfsRpcAddUsersToFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1059 di
->dcerpc_procedure_name
="EfsRpcAddUsersToFile";
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_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1069 efs_dissect_EfsRpcAddUsersToFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1071 di
->dcerpc_procedure_name
="EfsRpcAddUsersToFile";
1072 offset
= efs_dissect_element_EfsRpcAddUsersToFile_FileName(tvb
, offset
, pinfo
, tree
, di
, drep
);
1073 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1078 efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1080 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
);
1086 efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate_(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1088 offset
= efs_dissect_struct_ENCRYPTION_CERTIFICATE(tvb
,offset
,pinfo
,tree
,di
,drep
,hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
,0);
1093 /* IDL: WERROR EfsRpcSetFileEncryptionKey( */
1094 /* IDL: [in] [unique(1)] ENCRYPTION_CERTIFICATE *pEncryptionCertificate */
1098 efs_dissect_EfsRpcSetFileEncryptionKey_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1102 di
->dcerpc_procedure_name
="EfsRpcSetFileEncryptionKey";
1103 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1106 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1112 efs_dissect_EfsRpcSetFileEncryptionKey_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1114 di
->dcerpc_procedure_name
="EfsRpcSetFileEncryptionKey";
1115 offset
= efs_dissect_element_EfsRpcSetFileEncryptionKey_pEncryptionCertificate(tvb
, offset
, pinfo
, tree
, di
, drep
);
1116 offset
= dissect_deferred_pointers(pinfo
, tvb
, offset
, di
, drep
);
1120 /* IDL: WERROR EfsRpcNotSupported( */
1125 efs_dissect_EfsRpcNotSupported_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1129 di
->dcerpc_procedure_name
="EfsRpcNotSupported";
1130 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1133 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1139 efs_dissect_EfsRpcNotSupported_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1141 di
->dcerpc_procedure_name
="EfsRpcNotSupported";
1145 /* IDL: WERROR EfsRpcFileKeyInfo( */
1150 efs_dissect_EfsRpcFileKeyInfo_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1154 di
->dcerpc_procedure_name
="EfsRpcFileKeyInfo";
1155 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1158 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1164 efs_dissect_EfsRpcFileKeyInfo_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1166 di
->dcerpc_procedure_name
="EfsRpcFileKeyInfo";
1170 /* IDL: WERROR EfsRpcDuplicateEncryptionInfoFile( */
1175 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_response(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1179 di
->dcerpc_procedure_name
="EfsRpcDuplicateEncryptionInfoFile";
1180 offset
= dissect_ndr_uint32(tvb
, offset
, pinfo
, tree
, di
, drep
, hf_efs_werror
, &status
);
1183 col_append_fstr(pinfo
->cinfo
, COL_INFO
, ", Error: %s", val_to_str_ext(status
, &WERR_errors_ext
, "Unknown DOS error 0x%08x"));
1189 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_request(tvbuff_t
*tvb _U_
, int offset _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, dcerpc_info
* di _U_
, uint8_t *drep _U_
)
1191 di
->dcerpc_procedure_name
="EfsRpcDuplicateEncryptionInfoFile";
1196 static const dcerpc_sub_dissector efs_dissectors
[] = {
1197 { 0, "EfsRpcOpenFileRaw",
1198 efs_dissect_EfsRpcOpenFileRaw_request
, efs_dissect_EfsRpcOpenFileRaw_response
},
1199 { 1, "EfsRpcReadFileRaw",
1200 efs_dissect_EfsRpcReadFileRaw_request
, efs_dissect_EfsRpcReadFileRaw_response
},
1201 { 2, "EfsRpcWriteFileRaw",
1202 efs_dissect_EfsRpcWriteFileRaw_request
, efs_dissect_EfsRpcWriteFileRaw_response
},
1203 { 3, "EfsRpcCloseRaw",
1204 efs_dissect_EfsRpcCloseRaw_request
, efs_dissect_EfsRpcCloseRaw_response
},
1205 { 4, "EfsRpcEncryptFileSrv",
1206 efs_dissect_EfsRpcEncryptFileSrv_request
, efs_dissect_EfsRpcEncryptFileSrv_response
},
1207 { 5, "EfsRpcDecryptFileSrv",
1208 efs_dissect_EfsRpcDecryptFileSrv_request
, efs_dissect_EfsRpcDecryptFileSrv_response
},
1209 { 6, "EfsRpcQueryUsersOnFile",
1210 efs_dissect_EfsRpcQueryUsersOnFile_request
, efs_dissect_EfsRpcQueryUsersOnFile_response
},
1211 { 7, "EfsRpcQueryRecoveryAgents",
1212 efs_dissect_EfsRpcQueryRecoveryAgents_request
, efs_dissect_EfsRpcQueryRecoveryAgents_response
},
1213 { 8, "EfsRpcRemoveUsersFromFile",
1214 efs_dissect_EfsRpcRemoveUsersFromFile_request
, efs_dissect_EfsRpcRemoveUsersFromFile_response
},
1215 { 9, "EfsRpcAddUsersToFile",
1216 efs_dissect_EfsRpcAddUsersToFile_request
, efs_dissect_EfsRpcAddUsersToFile_response
},
1217 { 10, "EfsRpcSetFileEncryptionKey",
1218 efs_dissect_EfsRpcSetFileEncryptionKey_request
, efs_dissect_EfsRpcSetFileEncryptionKey_response
},
1219 { 11, "EfsRpcNotSupported",
1220 efs_dissect_EfsRpcNotSupported_request
, efs_dissect_EfsRpcNotSupported_response
},
1221 { 12, "EfsRpcFileKeyInfo",
1222 efs_dissect_EfsRpcFileKeyInfo_request
, efs_dissect_EfsRpcFileKeyInfo_response
},
1223 { 13, "EfsRpcDuplicateEncryptionInfoFile",
1224 efs_dissect_EfsRpcDuplicateEncryptionInfoFile_request
, efs_dissect_EfsRpcDuplicateEncryptionInfoFile_response
},
1225 { 0, NULL
, NULL
, NULL
}
1228 void proto_register_dcerpc_efs(void)
1230 static hf_register_info hf
[] = {
1231 { &hf_efs_EFS_CERTIFICATE_BLOB_cbData
,
1232 { "CbData", "efs.EFS_CERTIFICATE_BLOB.cbData", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1233 { &hf_efs_EFS_CERTIFICATE_BLOB_dwCertEncodingType
,
1234 { "DwCertEncodingType", "efs.EFS_CERTIFICATE_BLOB.dwCertEncodingType", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1235 { &hf_efs_EFS_CERTIFICATE_BLOB_pbData
,
1236 { "PbData", "efs.EFS_CERTIFICATE_BLOB.pbData", FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1237 { &hf_efs_EFS_HASH_BLOB_cbData
,
1238 { "CbData", "efs.EFS_HASH_BLOB.cbData", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1239 { &hf_efs_EFS_HASH_BLOB_pbData
,
1240 { "PbData", "efs.EFS_HASH_BLOB.pbData", FT_UINT8
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1241 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_nCert_Hash
,
1242 { "NCert Hash", "efs.ENCRYPTION_CERTIFICATE_HASH_LIST.nCert_Hash", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1243 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_LIST_pUsers
,
1244 { "PUsers", "efs.ENCRYPTION_CERTIFICATE_HASH_LIST.pUsers", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1245 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_cbTotalLength
,
1246 { "CbTotalLength", "efs.ENCRYPTION_CERTIFICATE_HASH.cbTotalLength", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1247 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_lpDisplayInformation
,
1248 { "LpDisplayInformation", "efs.ENCRYPTION_CERTIFICATE_HASH.lpDisplayInformation", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1249 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_pHash
,
1250 { "PHash", "efs.ENCRYPTION_CERTIFICATE_HASH.pHash", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1251 { &hf_efs_ENCRYPTION_CERTIFICATE_HASH_pUserSid
,
1252 { "PUserSid", "efs.ENCRYPTION_CERTIFICATE_HASH.pUserSid", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1253 { &hf_efs_ENCRYPTION_CERTIFICATE_TotalLength
,
1254 { "TotalLength", "efs.ENCRYPTION_CERTIFICATE.TotalLength", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1255 { &hf_efs_ENCRYPTION_CERTIFICATE_pCertBlob
,
1256 { "PCertBlob", "efs.ENCRYPTION_CERTIFICATE.pCertBlob", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1257 { &hf_efs_ENCRYPTION_CERTIFICATE_pUserSid
,
1258 { "PUserSid", "efs.ENCRYPTION_CERTIFICATE.pUserSid", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1259 { &hf_efs_EfsRpcAddUsersToFile_FileName
,
1260 { "FileName", "efs.EfsRpcAddUsersToFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1261 { &hf_efs_EfsRpcCloseRaw_pvContext
,
1262 { "PvContext", "efs.EfsRpcCloseRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1263 { &hf_efs_EfsRpcDecryptFileSrv_FileName
,
1264 { "FileName", "efs.EfsRpcDecryptFileSrv.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1265 { &hf_efs_EfsRpcDecryptFileSrv_Reserved
,
1266 { "Reserved", "efs.EfsRpcDecryptFileSrv.Reserved", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1267 { &hf_efs_EfsRpcEncryptFileSrv_Filename
,
1268 { "Filename", "efs.EfsRpcEncryptFileSrv.Filename", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1269 { &hf_efs_EfsRpcOpenFileRaw_FileName
,
1270 { "FileName", "efs.EfsRpcOpenFileRaw.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1271 { &hf_efs_EfsRpcOpenFileRaw_Flags
,
1272 { "Flags", "efs.EfsRpcOpenFileRaw.Flags", FT_UINT32
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1273 { &hf_efs_EfsRpcOpenFileRaw_pvContext
,
1274 { "PvContext", "efs.EfsRpcOpenFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1275 { &hf_efs_EfsRpcQueryRecoveryAgents_FileName
,
1276 { "FileName", "efs.EfsRpcQueryRecoveryAgents.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1277 { &hf_efs_EfsRpcQueryRecoveryAgents_pRecoveryAgents
,
1278 { "PRecoveryAgents", "efs.EfsRpcQueryRecoveryAgents.pRecoveryAgents", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1279 { &hf_efs_EfsRpcQueryUsersOnFile_FileName
,
1280 { "FileName", "efs.EfsRpcQueryUsersOnFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1281 { &hf_efs_EfsRpcQueryUsersOnFile_pUsers
,
1282 { "PUsers", "efs.EfsRpcQueryUsersOnFile.pUsers", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1283 { &hf_efs_EfsRpcReadFileRaw_pvContext
,
1284 { "PvContext", "efs.EfsRpcReadFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1285 { &hf_efs_EfsRpcRemoveUsersFromFile_FileName
,
1286 { "FileName", "efs.EfsRpcRemoveUsersFromFile.FileName", FT_STRING
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1287 { &hf_efs_EfsRpcSetFileEncryptionKey_pEncryptionCertificate
,
1288 { "PEncryptionCertificate", "efs.EfsRpcSetFileEncryptionKey.pEncryptionCertificate", FT_NONE
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1289 { &hf_efs_EfsRpcWriteFileRaw_pvContext
,
1290 { "PvContext", "efs.EfsRpcWriteFileRaw.pvContext", FT_BYTES
, BASE_NONE
, NULL
, 0, NULL
, HFILL
}},
1292 { "Operation", "efs.opnum", FT_UINT16
, BASE_DEC
, NULL
, 0, NULL
, HFILL
}},
1294 { "Windows Error", "efs.werror", FT_UINT32
, BASE_HEX
|BASE_EXT_STRING
, &WERR_errors_ext
, 0, NULL
, HFILL
}},
1298 static int *ett
[] = {
1300 &ett_efs_EFS_HASH_BLOB
,
1301 &ett_efs_ENCRYPTION_CERTIFICATE_HASH
,
1302 &ett_efs_ENCRYPTION_CERTIFICATE_HASH_LIST
,
1303 &ett_efs_EFS_CERTIFICATE_BLOB
,
1304 &ett_efs_ENCRYPTION_CERTIFICATE
,
1307 proto_dcerpc_efs
= proto_register_protocol("EFS (pidl)", "EFS", "efs");
1308 proto_register_field_array(proto_dcerpc_efs
, hf
, array_length (hf
));
1309 proto_register_subtree_array(ett
, array_length(ett
));
1312 void proto_reg_handoff_dcerpc_efs(void)
1314 dcerpc_init_uuid(proto_dcerpc_efs
, ett_dcerpc_efs
,
1315 &uuid_dcerpc_efs
, ver_dcerpc_efs
,
1316 efs_dissectors
, hf_efs_opnum
);