1 /* packet-dcerpc-netlogon.c
2 * Routines for SMB \\PIPE\\NETLOGON packet disassembly
3 * Copyright 2001, Tim Potter <tpot@samba.org>
4 * 2002 structure and command dissectors by Ronnie Sahlberg
6 * $Id: packet-dcerpc-netlogon.c,v 1.14 2002/04/17 09:24:08 sahlberg Exp $
8 * Ethereal - Network traffic analyzer
9 * By Gerald Combs <gerald@ethereal.com>
10 * Copyright 1998 Gerald Combs
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32 #include <epan/packet.h>
33 #include "packet-dcerpc.h"
34 #include "packet-dcerpc-nt.h"
35 #include "packet-dcerpc-netlogon.h"
36 #include "smb.h" /* for "NT_errors[]" */
37 #include "packet-smb-common.h"
39 static int proto_dcerpc_netlogon = -1;
40 static int hf_netlogon_rc = -1;
41 static int hf_netlogon_len = -1;
42 static int hf_netlogon_status = -1;
43 static int hf_netlogon_attrs = -1;
44 static int hf_netlogon_count = -1;
45 static int hf_netlogon_level = -1;
46 static int hf_netlogon_level_long = -1;
47 static int hf_netlogon_unknown_time = -1;
48 static int hf_netlogon_unknown_string = -1;
49 static int hf_netlogon_unknown_long = -1;
50 static int hf_netlogon_unknown_short = -1;
51 static int hf_netlogon_unknown_char = -1;
52 static int hf_netlogon_logon_time = -1;
53 static int hf_netlogon_logoff_time = -1;
54 static int hf_netlogon_kickoff_time = -1;
55 static int hf_netlogon_pwd_last_set_time = -1;
56 static int hf_netlogon_pwd_can_change_time = -1;
57 static int hf_netlogon_pwd_must_change_time = -1;
58 static int hf_netlogon_timestamp = -1;
59 static int hf_netlogon_nt_chal_resp = -1;
60 static int hf_netlogon_lm_chal_resp = -1;
61 static int hf_netlogon_credential = -1;
62 static int hf_netlogon_cypher_block = -1;
63 static int hf_netlogon_acct_name = -1;
64 static int hf_netlogon_acct_desc = -1;
65 static int hf_netlogon_group_desc = -1;
66 static int hf_netlogon_full_name = -1;
67 static int hf_netlogon_comment = -1;
68 static int hf_netlogon_parameters = -1;
69 static int hf_netlogon_logon_script = -1;
70 static int hf_netlogon_profile_path = -1;
71 static int hf_netlogon_home_dir = -1;
72 static int hf_netlogon_dir_drive = -1;
73 static int hf_netlogon_logon_count = -1;
74 static int hf_netlogon_bad_pw_count = -1;
75 static int hf_netlogon_user_rid = -1;
76 static int hf_netlogon_alias_rid = -1;
77 static int hf_netlogon_group_rid = -1;
78 static int hf_netlogon_logon_srv = -1;
79 static int hf_netlogon_logon_dom = -1;
80 static int hf_netlogon_trusted_domain_name = -1;
81 static int hf_netlogon_num_rids = -1;
82 static int hf_netlogon_num_other_groups = -1;
83 static int hf_netlogon_computer_name = -1;
84 static int hf_netlogon_site_name = -1;
85 static int hf_netlogon_trusted_dc_name = -1;
86 static int hf_netlogon_dc_name = -1;
87 static int hf_netlogon_dc_site_name = -1;
88 static int hf_netlogon_dns_forest_name = -1;
89 static int hf_netlogon_dc_address = -1;
90 static int hf_netlogon_dc_address_type = -1;
91 static int hf_netlogon_client_name = -1;
92 static int hf_netlogon_client_site_name = -1;
93 static int hf_netlogon_workstation_site_name = -1;
94 static int hf_netlogon_workstation_os = -1;
95 static int hf_netlogon_workstations = -1;
96 static int hf_netlogon_workstation_fqdn = -1;
97 static int hf_netlogon_group_name = -1;
98 static int hf_netlogon_alias_name = -1;
99 static int hf_netlogon_cli_name = -1;
100 static int hf_netlogon_country = -1;
101 static int hf_netlogon_codepage = -1;
102 static int hf_netlogon_flags = -1;
103 static int hf_netlogon_user_flags = -1;
104 static int hf_netlogon_pwd_expired = -1;
105 static int hf_netlogon_nt_pwd_present = -1;
106 static int hf_netlogon_lm_pwd_present = -1;
107 static int hf_netlogon_code = -1;
108 static int hf_netlogon_database_id = -1;
109 static int hf_netlogon_max_size = -1;
110 static int hf_netlogon_dns_host = -1;
111 static int hf_netlogon_num_pwd_pairs = -1;
112 static int hf_netlogon_acct_expiry_time = -1;
113 static int hf_netlogon_encrypted_lm_owf_password = -1;
114 static int hf_netlogon_lm_owf_password = -1;
115 static int hf_netlogon_nt_owf_password = -1;
116 static int hf_netlogon_param_ctrl = -1;
117 static int hf_netlogon_logon_id = -1;
118 static int hf_netlogon_num_deltas = -1;
119 static int hf_netlogon_user_session_key = -1;
120 static int hf_netlogon_blob_size = -1;
121 static int hf_netlogon_blob = -1;
122 static int hf_netlogon_logon_attempts = -1;
123 static int hf_netlogon_authoritative = -1;
124 static int hf_netlogon_secure_channel_type = -1;
125 static int hf_netlogon_logonsrv_handle = -1;
126 static int hf_netlogon_lsa_secret = -1;
127 static int hf_netlogon_lsa_sd_size = -1;
129 static gint ett_dcerpc_netlogon = -1;
130 static gint ett_NETLOGON_SECURITY_DESCRIPTOR = -1;
131 static gint ett_TYPE_1 = -1;
132 static gint ett_TYPE_2 = -1;
133 static gint ett_CYPHER_BLOCK = -1;
134 static gint ett_NETLOGON_AUTHENTICATOR = -1;
135 static gint ett_NETLOGON_LOGON_IDENTITY_INFO = -1;
136 static gint ett_NETLOGON_INTERACTIVE_INFO = -1;
137 static gint ett_NETLOGON_NETWORK_INFO = -1;
138 static gint ett_NETLOGON_VALIDATION_SAM_INFO1 = -1;
139 static gint ett_NETLOGON_VALIDATION_SAM_INFO2 = -1;
140 static gint ett_TYPE_16 = -1;
141 static gint ett_NETLOGON_SAM_DOMAIN_INFO = -1;
142 static gint ett_NETLOGON_SAM_GROUP_INFO = -1;
143 static gint ett_TYPE_23 = -1;
144 static gint ett_NETLOGON_SAM_ACCOUNT_INFO = -1;
145 static gint ett_NETLOGON_SAM_GROUP_MEM_INFO = -1;
146 static gint ett_NETLOGON_SAM_ALIAS_INFO = -1;
147 static gint ett_NETLOGON_SAM_ALIAS_MEM_INFO = -1;
148 static gint ett_TYPE_30 = -1;
149 static gint ett_TYPE_29 = -1;
150 static gint ett_TYPE_31 = -1;
151 static gint ett_TYPE_32 = -1;
152 static gint ett_TYPE_33 = -1;
153 static gint ett_TYPE_34 = -1;
154 static gint ett_TYPE_35 = -1;
155 static gint ett_SAM_DELTA = -1;
156 static gint ett_SAM_DELTA_ARRAY = -1;
157 static gint ett_TYPE_36 = -1;
158 static gint ett_NETLOGON_INFO_1 = -1;
159 static gint ett_NETLOGON_INFO_2 = -1;
160 static gint ett_NETLOGON_INFO_3 = -1;
161 static gint ett_NETLOGON_INFO_4 = -1;
162 static gint ett_UNICODE_MULTI = -1;
163 static gint ett_DOMAIN_CONTROLLER_INFO = -1;
164 static gint ett_TYPE_46 = -1;
165 static gint ett_TYPE_48 = -1;
166 static gint ett_UNICODE_STRING_512 = -1;
167 static gint ett_TYPE_50 = -1;
168 static gint ett_TYPE_51 = -1;
169 static gint ett_TYPE_52 = -1;
170 static gint ett_NETLOGON_LEVEL = -1;
171 static gint ett_NETLOGON_VALIDATION = -1;
172 static gint ett_TYPE_19 = -1;
173 static gint ett_NETLOGON_CONTROL_QUERY_INFO = -1;
174 static gint ett_TYPE_44 = -1;
175 static gint ett_TYPE_20 = -1;
176 static gint ett_NETLOGON_INFO = -1;
177 static gint ett_TYPE_45 = -1;
178 static gint ett_TYPE_47 = -1;
179 static gint ett_NETLOGON_CREDENTIAL = -1;
180 static gint ett_GUID = -1;
181 static gint ett_ENC_LM_OWF_PASSWORD = -1;
182 static gint ett_LM_OWF_PASSWORD = -1;
183 static gint ett_NT_OWF_PASSWORD = -1;
184 static gint ett_GROUP_MEMBERSHIP = -1;
185 static gint ett_USER_SESSION_KEY = -1;
186 static gint ett_BLOB = -1;
187 static gint ett_rid_array = -1;
188 static gint ett_attrib_array = -1;
190 extern gint ett_nt_unicode_string;
192 static e_uuid_t uuid_dcerpc_netlogon = {
193 0x12345678, 0x1234, 0xabcd,
194 { 0xef, 0x00, 0x01, 0x23, 0x45, 0x67, 0xcf, 0xfb }
197 static guint16 ver_dcerpc_netlogon = 1;
201 lsa_dissect_LSA_SECURITY_DESCRIPTOR_data(tvbuff_t *tvb, int offset,
202 packet_info *pinfo, proto_tree *tree,
208 di=pinfo->private_data;
209 if(di->conformant_run){
210 /*just a run to handle conformant arrays, nothing to dissect */
214 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
215 hf_netlogon_lsa_sd_size, &len);
217 dissect_nt_sec_desc(tvb, pinfo, offset, tree, len);
223 lsa_dissect_LSA_SECURITY_DESCRIPTOR(tvbuff_t *tvb, int offset,
224 packet_info *pinfo, proto_tree *parent_tree,
227 proto_item *item=NULL;
228 proto_tree *tree=NULL;
229 int old_offset=offset;
232 item = proto_tree_add_text(parent_tree, tvb, offset, -1,
233 "LSA_SECURITY_DESCRIPTOR:");
234 tree = proto_item_add_subtree(item, ett_NETLOGON_SECURITY_DESCRIPTOR);
237 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
238 hf_netlogon_lsa_sd_size, NULL);
239 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
240 lsa_dissect_LSA_SECURITY_DESCRIPTOR_data, NDR_POINTER_UNIQUE,
241 "LSA SECURITY DESCRIPTOR data:", -1, 0);
243 proto_item_set_len(item, offset-old_offset);
247 /* XXX temporary, until we get the real one in LSA */
249 lsa_dissect_LSA_SECRET_data(tvbuff_t *tvb, int offset,
250 packet_info *pinfo, proto_tree *tree,
256 di=pinfo->private_data;
257 if(di->conformant_run){
258 /*just a run to handle conformant arrays, nothing to dissect */
262 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
263 hf_netlogon_lsa_sd_size, &len);
264 proto_tree_add_item(tree, hf_netlogon_lsa_secret, tvb, offset, len, FALSE);
270 lsa_dissect_LSA_SECRET(tvbuff_t *tvb, int offset,
271 packet_info *pinfo, proto_tree *parent_tree,
274 proto_item *item=NULL;
275 proto_tree *tree=NULL;
276 int old_offset=offset;
279 item = proto_tree_add_text(parent_tree, tvb, offset, -1,
281 tree = proto_item_add_subtree(item, ett_NETLOGON_SECURITY_DESCRIPTOR);
284 /* XXX need to figure this one out */
285 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
286 hf_netlogon_lsa_sd_size, NULL);
287 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
288 lsa_dissect_LSA_SECRET_data, NDR_POINTER_UNIQUE,
289 "LSA SECRET data:", -1, 0);
291 proto_item_set_len(item, offset-old_offset);
297 netlogon_dissect_pointer_long(tvbuff_t *tvb, int offset,
298 packet_info *pinfo, proto_tree *tree,
303 di=pinfo->private_data;
304 offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
310 netlogon_dissect_pointer_char(tvbuff_t *tvb, int offset,
311 packet_info *pinfo, proto_tree *tree,
316 di=pinfo->private_data;
317 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
323 netlogon_dissect_pointer_STRING(tvbuff_t *tvb, int offset,
324 packet_info *pinfo, proto_tree *tree,
329 di=pinfo->private_data;
330 if(di->conformant_run){
331 /*just a run to handle conformant arrays, nothing to dissect */
335 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
341 netlogon_dissect_UNICODE_STRING(tvbuff_t *tvb, int offset,
342 packet_info *pinfo, proto_tree *parent_tree,
343 char *drep, int type, int hf_index, int levels)
345 proto_item *item=NULL;
346 proto_tree *tree=NULL;
347 int old_offset=offset;
351 di=pinfo->private_data;
352 if(di->conformant_run){
353 /*just a run to handle conformant arrays, nothing to dissect */
357 name = proto_registrar_get_name(hf_index);
359 item = proto_tree_add_text(parent_tree, tvb, offset, -1,
361 tree = proto_item_add_subtree(item, ett_nt_unicode_string);
364 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
365 dissect_ndr_nt_UNICODE_STRING_str, type,
366 name, hf_index, levels);
368 proto_item_set_len(item, offset-old_offset);
374 netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvbuff_t *tvb, int offset,
375 packet_info *pinfo, proto_tree *parent_tree,
378 proto_item *item=NULL;
379 proto_tree *tree=NULL;
380 int old_offset=offset;
383 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
384 "NETLOGON_SECURITY_DESCRIPTOR:");
385 tree = proto_item_add_subtree(item, ett_NETLOGON_SECURITY_DESCRIPTOR);
388 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
389 hf_netlogon_len, NULL);
391 offset = lsa_dissect_LSA_SECURITY_DESCRIPTOR(tvb, offset,
394 proto_item_set_len(item, offset-old_offset);
399 netlogon_dissect_TYPE_1(tvbuff_t *tvb, int offset,
400 packet_info *pinfo, proto_tree *parent_tree,
403 proto_item *item=NULL;
404 proto_tree *tree=NULL;
405 int old_offset=offset;
408 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
410 tree = proto_item_add_subtree(item, ett_TYPE_1);
413 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
414 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
415 "unknown", hf_netlogon_unknown_string, -1);
417 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
418 hf_netlogon_unknown_long, NULL);
420 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
421 hf_netlogon_unknown_long, NULL);
423 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
424 hf_netlogon_unknown_long, NULL);
426 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
427 hf_netlogon_unknown_long, NULL);
429 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
430 hf_netlogon_unknown_long, NULL);
432 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
433 hf_netlogon_unknown_long, NULL);
435 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
436 hf_netlogon_unknown_long, NULL);
438 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
439 hf_netlogon_unknown_long, NULL);
441 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
442 hf_netlogon_unknown_long, NULL);
444 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
445 hf_netlogon_unknown_long, NULL);
447 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
448 hf_netlogon_unknown_long, NULL);
450 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
451 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
452 "unknown", hf_netlogon_unknown_string, -1);
454 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
455 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
456 "unknown", hf_netlogon_unknown_string, -1);
458 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
459 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
460 "unknown", hf_netlogon_unknown_string, -1);
462 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
463 hf_netlogon_unknown_long, NULL);
465 proto_item_set_len(item, offset-old_offset);
470 netlogon_dissect_TYPE_1_ptr(tvbuff_t *tvb, int offset,
471 packet_info *pinfo, proto_tree *tree,
474 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
475 netlogon_dissect_TYPE_1, NDR_POINTER_PTR,
476 "TYPE_1 pointer: ", -1, 0);
481 netlogon_dissect_TYPE_2(tvbuff_t *tvb, int offset,
482 packet_info *pinfo, proto_tree *parent_tree,
485 proto_item *item=NULL;
486 proto_tree *tree=NULL;
487 int old_offset=offset;
490 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
492 tree = proto_item_add_subtree(item, ett_TYPE_2);
495 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
496 hf_netlogon_unknown_long, NULL);
498 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
499 hf_netlogon_unknown_short, NULL);
501 proto_item_set_len(item, offset-old_offset);
506 netlogon_dissect_CYPHER_BLOCK(tvbuff_t *tvb, int offset,
507 packet_info *pinfo, proto_tree *parent_tree,
510 proto_item *item=NULL;
511 proto_tree *tree=NULL;
515 di=pinfo->private_data;
516 if(di->conformant_run){
517 /*just a run to handle conformant arrays, nothing to dissect.*/
522 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
524 tree = proto_item_add_subtree(item, ett_CYPHER_BLOCK);
527 proto_tree_add_item(tree, hf_netlogon_cypher_block, tvb, offset, 8,
535 netlogon_dissect_8_unknown_bytes(tvbuff_t *tvb, int offset,
536 packet_info *pinfo, proto_tree *parent_tree,
539 proto_item *item=NULL;
540 proto_tree *tree=NULL;
544 di=pinfo->private_data;
545 if(di->conformant_run){
546 /*just a run to handle conformant arrays, nothing to dissect.*/
551 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
552 "unknown bytes not in IDL:");
553 tree = proto_item_add_subtree(item, ett_CYPHER_BLOCK);
562 netlogon_dissect_NETLOGON_CREDENTIAL(tvbuff_t *tvb, int offset,
563 packet_info *pinfo, proto_tree *parent_tree,
566 proto_item *item=NULL;
567 proto_tree *tree=NULL;
571 di=pinfo->private_data;
572 if(di->conformant_run){
573 /*just a run to handle conformant arrays, nothing to dissect.*/
578 item = proto_tree_add_text(parent_tree, tvb, offset, 8,
579 "NETLOGON_CREDENTIAL:");
580 tree = proto_item_add_subtree(item, ett_NETLOGON_CREDENTIAL);
583 proto_tree_add_item(tree, hf_netlogon_credential, tvb, offset, 8,
591 netlogon_dissect_NETLOGON_AUTHENTICATOR(tvbuff_t *tvb, int offset,
592 packet_info *pinfo, proto_tree *parent_tree,
595 proto_item *item=NULL;
596 proto_tree *tree=NULL;
597 int old_offset=offset;
600 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
601 "NETLOGON_AUTHENTICATOR:");
602 tree = proto_item_add_subtree(item, ett_NETLOGON_AUTHENTICATOR);
605 offset = netlogon_dissect_NETLOGON_CREDENTIAL(tvb, offset,
608 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
609 hf_netlogon_timestamp, NULL);
611 proto_item_set_len(item, offset-old_offset);
616 netlogon_dissect_USER_SESSION_KEY(tvbuff_t *tvb, int offset,
617 packet_info *pinfo, proto_tree *parent_tree,
620 proto_item *item=NULL;
621 proto_tree *tree=NULL;
624 di=pinfo->private_data;
625 if(di->conformant_run){
626 /*just a run to handle conformant arrays, nothing to dissect.*/
631 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
632 "USER_SESSION_KEY:");
633 tree = proto_item_add_subtree(item, ett_USER_SESSION_KEY);
636 proto_tree_add_item(tree, hf_netlogon_user_session_key, tvb, offset, 16,
644 netlogon_dissect_ENCRYPTED_LM_OWF_PASSWORD(tvbuff_t *tvb, int offset,
645 packet_info *pinfo, proto_tree *parent_tree,
648 proto_item *item=NULL;
649 proto_tree *tree=NULL;
652 di=pinfo->private_data;
653 if(di->conformant_run){
654 /*just a run to handle conformant arrays, nothing to dissect.*/
659 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
660 "ENCRYPTED_LM_OWF_PASSWORD:");
661 tree = proto_item_add_subtree(item, ett_ENC_LM_OWF_PASSWORD);
664 proto_tree_add_item(tree, hf_netlogon_encrypted_lm_owf_password, tvb, offset, 16,
672 netlogon_dissect_LM_OWF_PASSWORD(tvbuff_t *tvb, int offset,
673 packet_info *pinfo, proto_tree *parent_tree,
676 proto_item *item=NULL;
677 proto_tree *tree=NULL;
680 di=pinfo->private_data;
681 if(di->conformant_run){
682 /*just a run to handle conformant arrays, nothing to dissect.*/
687 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
689 tree = proto_item_add_subtree(item, ett_LM_OWF_PASSWORD);
692 proto_tree_add_item(tree, hf_netlogon_lm_owf_password, tvb, offset, 16,
700 netlogon_dissect_NT_OWF_PASSWORD(tvbuff_t *tvb, int offset,
701 packet_info *pinfo, proto_tree *parent_tree,
704 proto_item *item=NULL;
705 proto_tree *tree=NULL;
708 di=pinfo->private_data;
709 if(di->conformant_run){
710 /*just a run to handle conformant arrays, nothing to dissect.*/
715 item = proto_tree_add_text(parent_tree, tvb, offset, 16,
717 tree = proto_item_add_subtree(item, ett_NT_OWF_PASSWORD);
720 proto_tree_add_item(tree, hf_netlogon_nt_owf_password, tvb, offset, 16,
729 netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvbuff_t *tvb, int offset,
730 packet_info *pinfo, proto_tree *parent_tree,
733 proto_item *item=NULL;
734 proto_tree *tree=NULL;
735 int old_offset=offset;
738 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
739 "NETLOGON_LOGON_IDENTITY_INFO:");
740 tree = proto_item_add_subtree(item, ett_NETLOGON_LOGON_IDENTITY_INFO);
743 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
744 hf_netlogon_logon_dom, 0);
746 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
747 hf_netlogon_param_ctrl, NULL);
749 offset = dissect_ndr_uint64(tvb, offset, pinfo, tree, drep,
750 hf_netlogon_logon_id, NULL);
752 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
753 hf_netlogon_acct_name, 0);
755 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
756 hf_netlogon_computer_name, 0);
758 /* XXX 8 extra bytes here */
759 /* there were 8 extra bytes, either here or in NETWORK_INFO that does not match
760 the idl file. Could be a bug in either the NETLOGON implementation or in the
763 offset = netlogon_dissect_8_unknown_bytes(tvb, offset, pinfo, tree, drep);
769 netlogon_dissect_NETLOGON_INTERACTIVE_INFO(tvbuff_t *tvb, int offset,
770 packet_info *pinfo, proto_tree *parent_tree,
773 proto_item *item=NULL;
774 proto_tree *tree=NULL;
775 int old_offset=offset;
778 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
779 "NETLOGON_INTERACTIVE_INFO:");
780 tree = proto_item_add_subtree(item, ett_NETLOGON_INTERACTIVE_INFO);
783 offset = netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvb, offset,
786 offset = netlogon_dissect_LM_OWF_PASSWORD(tvb, offset,
789 offset = netlogon_dissect_NT_OWF_PASSWORD(tvb, offset,
792 proto_item_set_len(item, offset-old_offset);
797 netlogon_dissect_NETLOGON_NETWORK_INFO(tvbuff_t *tvb, int offset,
798 packet_info *pinfo, proto_tree *parent_tree,
801 proto_item *item=NULL;
802 proto_tree *tree=NULL;
803 int old_offset=offset;
806 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
807 "NETLOGON_NETWORK_INFO:");
808 tree = proto_item_add_subtree(item, ett_NETLOGON_NETWORK_INFO);
811 offset = netlogon_dissect_NETLOGON_LOGON_IDENTITY_INFO(tvb, offset,
814 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
815 hf_netlogon_nt_chal_resp, 0);
817 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
818 hf_netlogon_lm_chal_resp, 0);
820 proto_item_set_len(item, offset-old_offset);
825 netlogon_dissect_GROUP_MEMBERSHIP(tvbuff_t *tvb, int offset,
826 packet_info *pinfo, proto_tree *parent_tree,
829 proto_item *item=NULL;
830 proto_tree *tree=NULL;
831 int old_offset=offset;
834 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
835 "GROUP_MEMBERSHIP:");
836 tree = proto_item_add_subtree(item, ett_GROUP_MEMBERSHIP);
839 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
840 hf_netlogon_user_rid, NULL);
842 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
843 hf_netlogon_attrs, NULL);
849 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY(tvbuff_t *tvb, int offset,
850 packet_info *pinfo, proto_tree *tree,
853 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
854 netlogon_dissect_GROUP_MEMBERSHIP);
860 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO1(tvbuff_t *tvb, int offset,
861 packet_info *pinfo, proto_tree *parent_tree,
864 proto_item *item=NULL;
865 proto_tree *tree=NULL;
866 int old_offset=offset;
870 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
871 "NETLOGON_VALIDATION_SAM_INFO1:");
872 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION_SAM_INFO1);
875 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
876 hf_netlogon_logon_time);
878 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
879 hf_netlogon_logoff_time);
881 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
882 hf_netlogon_kickoff_time);
884 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
885 hf_netlogon_pwd_last_set_time);
887 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
888 hf_netlogon_pwd_can_change_time);
890 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
891 hf_netlogon_pwd_must_change_time);
893 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
894 hf_netlogon_acct_name, 0);
896 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
897 hf_netlogon_full_name, 0);
899 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
900 hf_netlogon_logon_script, 0);
902 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
903 hf_netlogon_profile_path, 0);
905 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
906 hf_netlogon_home_dir, 0);
908 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
909 hf_netlogon_dir_drive, 0);
911 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
912 hf_netlogon_logon_count, NULL);
914 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
915 hf_netlogon_bad_pw_count, NULL);
917 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
918 hf_netlogon_user_rid, NULL);
920 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
921 hf_netlogon_group_rid, NULL);
923 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
924 hf_netlogon_num_rids, NULL);
926 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
927 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY, NDR_POINTER_PTR,
928 "GROUP_MEMBERSHIP_ARRAY", -1, 0);
930 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
931 hf_netlogon_user_flags, NULL);
933 offset = netlogon_dissect_USER_SESSION_KEY(tvb, offset,
936 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
937 hf_netlogon_logon_srv, 0);
939 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
940 hf_netlogon_logon_dom, 0);
942 offset = dissect_ndr_nt_PSID(tvb, offset,
946 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
947 hf_netlogon_unknown_long, NULL);
950 proto_item_set_len(item, offset-old_offset);
955 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO2(tvbuff_t *tvb, int offset,
956 packet_info *pinfo, proto_tree *parent_tree,
959 proto_item *item=NULL;
960 proto_tree *tree=NULL;
961 int old_offset=offset;
965 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
966 "NETLOGON_VALIDATION_SAM_INFO2:");
967 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION_SAM_INFO2);
970 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
971 hf_netlogon_logon_time);
973 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
974 hf_netlogon_logoff_time);
976 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
977 hf_netlogon_kickoff_time);
979 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
980 hf_netlogon_pwd_last_set_time);
982 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
983 hf_netlogon_pwd_can_change_time);
985 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
986 hf_netlogon_pwd_must_change_time);
988 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
989 hf_netlogon_acct_name, 0);
991 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
992 hf_netlogon_full_name, 0);
994 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
995 hf_netlogon_logon_script, 0);
997 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
998 hf_netlogon_profile_path, 0);
1000 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1001 hf_netlogon_home_dir, 0);
1003 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1004 hf_netlogon_dir_drive, 0);
1006 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1007 hf_netlogon_logon_count, NULL);
1009 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1010 hf_netlogon_bad_pw_count, NULL);
1012 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1013 hf_netlogon_user_rid, NULL);
1015 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1016 hf_netlogon_group_rid, NULL);
1018 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1019 hf_netlogon_num_rids, NULL);
1021 /* XXX i am not sure about this pointer being UNIQUE, though I am
1022 pretty convinced that it is NOT PTR as the idl file suggests.
1024 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1025 netlogon_dissect_GROUP_MEMBERSHIP_ARRAY, NDR_POINTER_UNIQUE,
1026 "GROUP_MEMBERSHIP_ARRAY", -1, 0);
1028 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1029 hf_netlogon_user_flags, NULL);
1031 offset = netlogon_dissect_USER_SESSION_KEY(tvb, offset,
1034 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1035 hf_netlogon_logon_srv, 0);
1037 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1038 hf_netlogon_logon_dom, 0);
1040 offset = dissect_ndr_nt_PSID(tvb, offset,
1044 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1045 hf_netlogon_unknown_long, NULL);
1048 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1049 hf_netlogon_num_other_groups, NULL);
1051 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1052 dissect_ndr_nt_SID_AND_ATTRIBUTES_ARRAY, NDR_POINTER_PTR,
1053 "SID_AND_ATTRIBUTES_ARRAY:", -1, 0);
1055 proto_item_set_len(item, offset-old_offset);
1060 netlogon_dissect_TYPE_16(tvbuff_t *tvb, int offset,
1061 packet_info *pinfo, proto_tree *parent_tree,
1064 proto_item *item=NULL;
1065 proto_tree *tree=NULL;
1066 int old_offset=offset;
1069 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1071 tree = proto_item_add_subtree(item, ett_TYPE_16);
1074 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1075 hf_netlogon_unknown_time);
1077 proto_item_set_len(item, offset-old_offset);
1083 netlogon_dissect_NETLOGON_SAM_DOMAIN_INFO(tvbuff_t *tvb, int offset,
1084 packet_info *pinfo, proto_tree *parent_tree,
1087 proto_item *item=NULL;
1088 proto_tree *tree=NULL;
1089 int old_offset=offset;
1092 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1093 "NETLOGON_SAM_DOMAIN_INFO:");
1094 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_DOMAIN_INFO);
1097 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1098 hf_netlogon_unknown_string, 0);
1100 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1101 hf_netlogon_unknown_string, 0);
1103 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1104 hf_netlogon_unknown_time);
1106 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1107 hf_netlogon_unknown_short, NULL);
1109 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1110 hf_netlogon_unknown_short, NULL);
1112 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1113 hf_netlogon_unknown_time);
1115 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1116 hf_netlogon_unknown_time);
1118 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1119 hf_netlogon_unknown_time);
1121 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1122 hf_netlogon_unknown_time);
1124 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1125 hf_netlogon_unknown_string, 0);
1127 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1128 hf_netlogon_unknown_string, 0);
1130 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1131 hf_netlogon_unknown_string, 0);
1133 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1134 hf_netlogon_unknown_string, 0);
1136 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1137 hf_netlogon_unknown_string, 0);
1139 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1140 hf_netlogon_unknown_long, NULL);
1142 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1143 hf_netlogon_unknown_long, NULL);
1145 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1146 hf_netlogon_unknown_long, NULL);
1148 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1149 hf_netlogon_unknown_long, NULL);
1151 proto_item_set_len(item, offset-old_offset);
1157 netlogon_dissect_NETLOGON_SAM_GROUP_INFO(tvbuff_t *tvb, int offset,
1158 packet_info *pinfo, proto_tree *parent_tree,
1161 proto_item *item=NULL;
1162 proto_tree *tree=NULL;
1163 int old_offset=offset;
1166 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1167 "NETLOGON_SAM_GROUP_INFO:");
1168 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_GROUP_INFO);
1171 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1172 hf_netlogon_group_name, 0);
1174 offset = netlogon_dissect_GROUP_MEMBERSHIP(tvb, offset,
1177 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1178 hf_netlogon_group_desc, 0);
1180 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1183 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1184 hf_netlogon_unknown_string, 0);
1186 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1187 hf_netlogon_unknown_string, 0);
1189 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1190 hf_netlogon_unknown_string, 0);
1192 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1193 hf_netlogon_unknown_string, 0);
1195 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1196 hf_netlogon_unknown_long, NULL);
1198 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1199 hf_netlogon_unknown_long, NULL);
1201 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1202 hf_netlogon_unknown_long, NULL);
1204 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1205 hf_netlogon_unknown_long, NULL);
1207 proto_item_set_len(item, offset-old_offset);
1213 netlogon_dissect_TYPE_23(tvbuff_t *tvb, int offset,
1214 packet_info *pinfo, proto_tree *parent_tree,
1217 proto_item *item=NULL;
1218 proto_tree *tree=NULL;
1219 int old_offset=offset;
1222 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1224 tree = proto_item_add_subtree(item, ett_TYPE_23);
1227 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1228 hf_netlogon_unknown_string, 0);
1230 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1231 hf_netlogon_unknown_string, 0);
1233 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1234 hf_netlogon_unknown_string, 0);
1236 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1237 hf_netlogon_unknown_string, 0);
1239 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1240 hf_netlogon_unknown_string, 0);
1242 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1243 hf_netlogon_unknown_string, 0);
1245 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1246 hf_netlogon_unknown_long, NULL);
1248 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1249 hf_netlogon_unknown_long, NULL);
1251 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1252 hf_netlogon_unknown_long, NULL);
1254 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1255 hf_netlogon_unknown_long, NULL);
1257 proto_item_set_len(item, offset-old_offset);
1263 netlogon_dissect_NETLOGON_SAM_ACCOUNT_INFO(tvbuff_t *tvb, int offset,
1264 packet_info *pinfo, proto_tree *parent_tree,
1267 proto_item *item=NULL;
1268 proto_tree *tree=NULL;
1269 int old_offset=offset;
1272 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1273 "NETLOGON_SAM_ACCOUNT_INFO:");
1274 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ACCOUNT_INFO);
1277 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1278 hf_netlogon_acct_name, 0);
1280 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1281 hf_netlogon_full_name, 0);
1283 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1284 hf_netlogon_user_rid, NULL);
1286 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1287 hf_netlogon_group_rid, NULL);
1289 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1290 hf_netlogon_home_dir, 0);
1292 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1293 hf_netlogon_dir_drive, 0);
1295 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1296 hf_netlogon_logon_script, 0);
1298 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1299 hf_netlogon_acct_desc, 0);
1301 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1302 hf_netlogon_workstations, 0);
1304 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1305 hf_netlogon_logon_time);
1307 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1308 hf_netlogon_logoff_time);
1310 offset = dissect_ndr_nt_LOGON_HOURS(tvb, offset, pinfo, tree, drep);
1312 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1313 hf_netlogon_bad_pw_count, NULL);
1315 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1316 hf_netlogon_logon_count, NULL);
1318 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1319 hf_netlogon_pwd_last_set_time);
1321 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1322 hf_netlogon_acct_expiry_time);
1324 offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
1326 offset = netlogon_dissect_LM_OWF_PASSWORD(tvb, offset,
1329 offset = netlogon_dissect_NT_OWF_PASSWORD(tvb, offset,
1332 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1333 hf_netlogon_nt_pwd_present, NULL);
1335 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1336 hf_netlogon_lm_pwd_present, NULL);
1338 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1339 hf_netlogon_pwd_expired, NULL);
1341 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1342 hf_netlogon_comment, 0);
1344 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1345 hf_netlogon_parameters, 0);
1347 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1348 hf_netlogon_country, NULL);
1350 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
1351 hf_netlogon_codepage, NULL);
1353 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1354 hf_netlogon_num_pwd_pairs, NULL);
1356 offset = lsa_dissect_LSA_SECRET(tvb, offset,
1359 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1362 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1363 hf_netlogon_profile_path, 0);
1365 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1366 hf_netlogon_unknown_string, 0);
1368 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1369 hf_netlogon_unknown_string, 0);
1371 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1372 hf_netlogon_unknown_string, 0);
1374 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1375 hf_netlogon_unknown_long, NULL);
1377 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1378 hf_netlogon_unknown_long, NULL);
1380 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1381 hf_netlogon_unknown_long, NULL);
1383 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1384 hf_netlogon_unknown_long, NULL);
1386 proto_item_set_len(item, offset-old_offset);
1392 netlogon_dissect_rid(tvbuff_t *tvb, int offset,
1393 packet_info *pinfo, proto_tree *tree,
1396 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1397 hf_netlogon_user_rid, NULL);
1403 netlogon_dissect_rids_array(tvbuff_t *tvb, int offset,
1404 packet_info *pinfo, proto_tree *parent_tree,
1407 proto_item *item=NULL;
1408 proto_tree *tree=NULL;
1409 int old_offset=offset;
1412 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1414 tree = proto_item_add_subtree(item, ett_rid_array);
1417 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1418 netlogon_dissect_rid);
1420 proto_item_set_len(item, offset-old_offset);
1425 netlogon_dissect_attrib(tvbuff_t *tvb, int offset,
1426 packet_info *pinfo, proto_tree *tree,
1429 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1430 hf_netlogon_attrs, NULL);
1436 netlogon_dissect_attribs_array(tvbuff_t *tvb, int offset,
1437 packet_info *pinfo, proto_tree *parent_tree,
1440 proto_item *item=NULL;
1441 proto_tree *tree=NULL;
1442 int old_offset=offset;
1445 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1447 tree = proto_item_add_subtree(item, ett_attrib_array);
1450 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1451 netlogon_dissect_attrib);
1453 proto_item_set_len(item, offset-old_offset);
1458 netlogon_dissect_NETLOGON_SAM_GROUP_MEM_INFO(tvbuff_t *tvb, int offset,
1459 packet_info *pinfo, proto_tree *parent_tree,
1462 proto_item *item=NULL;
1463 proto_tree *tree=NULL;
1464 int old_offset=offset;
1467 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1468 "NETLOGON_SAM_GROUP_MEM_INFO:");
1469 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_GROUP_MEM_INFO);
1472 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1473 netlogon_dissect_rids_array, NDR_POINTER_PTR,
1476 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1477 netlogon_dissect_attribs_array, NDR_POINTER_PTR,
1480 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1481 hf_netlogon_num_rids, NULL);
1483 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1484 hf_netlogon_unknown_long, NULL);
1486 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1487 hf_netlogon_unknown_long, NULL);
1489 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1490 hf_netlogon_unknown_long, NULL);
1492 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1493 hf_netlogon_unknown_long, NULL);
1495 proto_item_set_len(item, offset-old_offset);
1501 netlogon_dissect_NETLOGON_SAM_ALIAS_INFO(tvbuff_t *tvb, int offset,
1502 packet_info *pinfo, proto_tree *parent_tree,
1505 proto_item *item=NULL;
1506 proto_tree *tree=NULL;
1507 int old_offset=offset;
1510 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1511 "NETLOGON_SAM_ALIAS_INFO:");
1512 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ALIAS_INFO);
1516 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1517 hf_netlogon_alias_name, 0);
1519 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1520 hf_netlogon_alias_rid, NULL);
1522 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1525 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1526 hf_netlogon_acct_desc, 0);
1528 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1529 hf_netlogon_unknown_string, 0);
1531 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1532 hf_netlogon_unknown_string, 0);
1534 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1535 hf_netlogon_unknown_string, 0);
1537 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1538 hf_netlogon_unknown_long, NULL);
1540 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1541 hf_netlogon_unknown_long, NULL);
1543 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1544 hf_netlogon_unknown_long, NULL);
1546 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1547 hf_netlogon_unknown_long, NULL);
1549 proto_item_set_len(item, offset-old_offset);
1555 netlogon_dissect_NETLOGON_SAM_ALIAS_MEM_INFO(tvbuff_t *tvb, int offset,
1556 packet_info *pinfo, proto_tree *parent_tree,
1559 proto_item *item=NULL;
1560 proto_tree *tree=NULL;
1561 int old_offset=offset;
1564 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1565 "NETLOGON_SAM_ALIAS_MEM_INFO:");
1566 tree = proto_item_add_subtree(item, ett_NETLOGON_SAM_ALIAS_MEM_INFO);
1569 offset = dissect_ndr_nt_PSID_ARRAY(tvb, offset, pinfo, tree, drep);
1571 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1572 hf_netlogon_unknown_long, NULL);
1574 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1575 hf_netlogon_unknown_long, NULL);
1577 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1578 hf_netlogon_unknown_long, NULL);
1580 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1581 hf_netlogon_unknown_long, NULL);
1583 proto_item_set_len(item, offset-old_offset);
1588 netlogon_dissect_TYPE_30(tvbuff_t *tvb, int offset,
1589 packet_info *pinfo, proto_tree *parent_tree,
1592 proto_item *item=NULL;
1593 proto_tree *tree=NULL;
1594 int old_offset=offset;
1597 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1599 tree = proto_item_add_subtree(item, ett_TYPE_30);
1602 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1603 hf_netlogon_unknown_long, NULL);
1605 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1606 hf_netlogon_unknown_long, NULL);
1608 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1609 hf_netlogon_unknown_long, NULL);
1611 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1612 hf_netlogon_unknown_long, NULL);
1614 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1615 hf_netlogon_unknown_long, NULL);
1617 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1618 hf_netlogon_unknown_time);
1620 proto_item_set_len(item, offset-old_offset);
1625 netlogon_dissect_element_422(tvbuff_t *tvb, int offset,
1626 packet_info *pinfo, proto_tree *tree,
1629 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1630 hf_netlogon_unknown_long, NULL);
1636 netlogon_dissect_element_422_array(tvbuff_t *tvb, int offset,
1637 packet_info *pinfo, proto_tree *tree,
1640 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1641 netlogon_dissect_element_422);
1648 netlogon_dissect_TYPE_29(tvbuff_t *tvb, int offset,
1649 packet_info *pinfo, proto_tree *parent_tree,
1652 proto_item *item=NULL;
1653 proto_tree *tree=NULL;
1654 int old_offset=offset;
1657 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1659 tree = proto_item_add_subtree(item, ett_TYPE_29);
1662 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1663 hf_netlogon_unknown_long, NULL);
1665 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1666 hf_netlogon_unknown_time);
1668 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
1669 hf_netlogon_unknown_char, NULL);
1671 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1672 hf_netlogon_unknown_long, NULL);
1674 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1675 netlogon_dissect_element_422_array, NDR_POINTER_PTR,
1678 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1679 hf_netlogon_unknown_string, 0);
1681 offset = dissect_ndr_nt_PSID(tvb, offset,
1684 offset = netlogon_dissect_TYPE_30(tvb, offset,
1687 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1688 hf_netlogon_unknown_time);
1690 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1691 hf_netlogon_unknown_time);
1693 offset = netlogon_dissect_NETLOGON_SECURITY_DESCRIPTOR(tvb, offset,
1696 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1697 hf_netlogon_unknown_string, 0);
1699 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1700 hf_netlogon_unknown_string, 0);
1702 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1703 hf_netlogon_unknown_string, 0);
1705 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1706 hf_netlogon_unknown_string, 0);
1708 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1709 hf_netlogon_unknown_long, NULL);
1711 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1712 hf_netlogon_unknown_long, NULL);
1714 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1715 hf_netlogon_unknown_long, NULL);
1717 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1718 hf_netlogon_unknown_long, NULL);
1720 proto_item_set_len(item, offset-old_offset);
1726 netlogon_dissect_TYPE_31(tvbuff_t *tvb, int offset,
1727 packet_info *pinfo, proto_tree *parent_tree,
1730 proto_item *item=NULL;
1731 proto_tree *tree=NULL;
1732 int old_offset=offset;
1735 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1737 tree = proto_item_add_subtree(item, ett_TYPE_31);
1740 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1741 hf_netlogon_unknown_string, 0);
1743 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1744 hf_netlogon_unknown_string, 0);
1746 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1747 hf_netlogon_unknown_long, NULL);
1749 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1750 hf_netlogon_unknown_string, 0);
1752 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1753 hf_netlogon_unknown_string, 0);
1755 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1756 hf_netlogon_unknown_string, 0);
1758 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1759 hf_netlogon_unknown_string, 0);
1761 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1762 hf_netlogon_unknown_string, 0);
1764 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1765 hf_netlogon_unknown_long, NULL);
1767 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1768 hf_netlogon_unknown_long, NULL);
1770 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1771 hf_netlogon_unknown_long, NULL);
1773 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1774 hf_netlogon_unknown_long, NULL);
1776 proto_item_set_len(item, offset-old_offset);
1782 netlogon_dissect_TYPE_32(tvbuff_t *tvb, int offset,
1783 packet_info *pinfo, proto_tree *parent_tree,
1786 proto_item *item=NULL;
1787 proto_tree *tree=NULL;
1788 int old_offset=offset;
1791 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1793 tree = proto_item_add_subtree(item, ett_TYPE_32);
1796 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1797 hf_netlogon_unknown_string, 0);
1799 proto_item_set_len(item, offset-old_offset);
1805 netlogon_dissect_attrs(tvbuff_t *tvb, int offset,
1806 packet_info *pinfo, proto_tree *tree,
1809 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1810 hf_netlogon_attrs, NULL);
1816 netlogon_dissect_attrs_array(tvbuff_t *tvb, int offset,
1817 packet_info *pinfo, proto_tree *tree,
1820 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
1821 netlogon_dissect_attrs);
1828 netlogon_dissect_TYPE_33(tvbuff_t *tvb, int offset,
1829 packet_info *pinfo, proto_tree *parent_tree,
1832 proto_item *item=NULL;
1833 proto_tree *tree=NULL;
1834 int old_offset=offset;
1837 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1839 tree = proto_item_add_subtree(item, ett_TYPE_33);
1843 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1844 hf_netlogon_count, NULL);
1846 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1847 hf_netlogon_unknown_long, NULL);
1849 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1850 netlogon_dissect_attrs_array, NDR_POINTER_PTR,
1851 "ATTRS_ARRAY:", -1, 0);
1853 offset = netlogon_dissect_TYPE_30(tvb, offset,
1856 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1857 hf_netlogon_unknown_long, NULL);
1859 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1860 hf_netlogon_unknown_long, NULL);
1862 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1863 hf_netlogon_unknown_string, 0);
1865 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1866 hf_netlogon_unknown_string, 0);
1868 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1869 hf_netlogon_unknown_string, 0);
1871 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1872 hf_netlogon_unknown_string, 0);
1874 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1875 hf_netlogon_unknown_string, 0);
1877 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1878 hf_netlogon_unknown_long, NULL);
1880 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1881 hf_netlogon_unknown_long, NULL);
1883 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1884 hf_netlogon_unknown_long, NULL);
1886 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1887 hf_netlogon_unknown_long, NULL);
1889 proto_item_set_len(item, offset-old_offset);
1895 netlogon_dissect_TYPE_34(tvbuff_t *tvb, int offset,
1896 packet_info *pinfo, proto_tree *parent_tree,
1899 proto_item *item=NULL;
1900 proto_tree *tree=NULL;
1901 int old_offset=offset;
1904 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1906 tree = proto_item_add_subtree(item, ett_TYPE_34);
1909 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1910 hf_netlogon_unknown_string, 0);
1912 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1913 hf_netlogon_unknown_time);
1915 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1916 hf_netlogon_unknown_string, 0);
1918 offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
1919 hf_netlogon_unknown_time);
1921 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1922 hf_netlogon_unknown_long, NULL);
1924 offset = dissect_ndr_nt_STRING(tvb, offset, pinfo, tree, drep,
1925 hf_netlogon_unknown_string, 0);
1927 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1928 hf_netlogon_unknown_string, 0);
1930 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1931 hf_netlogon_unknown_string, 0);
1933 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1934 hf_netlogon_unknown_string, 0);
1936 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1937 hf_netlogon_unknown_string, 0);
1939 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1940 hf_netlogon_unknown_long, NULL);
1942 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1943 hf_netlogon_unknown_long, NULL);
1945 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1946 hf_netlogon_unknown_long, NULL);
1948 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1949 hf_netlogon_unknown_long, NULL);
1951 proto_item_set_len(item, offset-old_offset);
1956 netlogon_dissect_TYPE_35(tvbuff_t *tvb, int offset,
1957 packet_info *pinfo, proto_tree *parent_tree,
1960 proto_item *item=NULL;
1961 proto_tree *tree=NULL;
1962 int old_offset=offset;
1965 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
1967 tree = proto_item_add_subtree(item, ett_TYPE_35);
1970 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
1971 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
1972 "unknown", hf_netlogon_unknown_string, -1);
1974 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1975 hf_netlogon_unknown_string, 0);
1977 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1978 hf_netlogon_unknown_string, 0);
1980 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1981 hf_netlogon_unknown_string, 0);
1983 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
1984 hf_netlogon_unknown_string, 0);
1986 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1987 hf_netlogon_unknown_long, NULL);
1989 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1990 hf_netlogon_unknown_long, NULL);
1992 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1993 hf_netlogon_unknown_long, NULL);
1995 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
1996 hf_netlogon_unknown_long, NULL);
1998 proto_item_set_len(item, offset-old_offset);
2003 netlogon_dissect_WCHAR_ptr(tvbuff_t *tvb, int offset,
2004 packet_info *pinfo, proto_tree *tree,
2007 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2008 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2009 "unknown string", hf_netlogon_unknown_string, -1);
2015 netlogon_dissect_TYPE_36(tvbuff_t *tvb, int offset,
2016 packet_info *pinfo, proto_tree *parent_tree,
2019 proto_item *item=NULL;
2020 proto_tree *tree=NULL;
2021 int old_offset=offset;
2025 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2027 tree = proto_item_add_subtree(item, ett_TYPE_36);
2031 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2032 hf_netlogon_unknown_char, NULL);
2035 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2036 hf_netlogon_unknown_long, NULL);
2038 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2039 hf_netlogon_unknown_long, NULL);
2041 proto_item_set_len(item, offset-old_offset);
2046 netlogon_dissect_NETLOGON_INFO_1(tvbuff_t *tvb, int offset,
2047 packet_info *pinfo, proto_tree *parent_tree,
2050 proto_item *item=NULL;
2051 proto_tree *tree=NULL;
2052 int old_offset=offset;
2055 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2056 "NETLOGON_INFO_1:");
2057 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_1);
2060 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2061 hf_netlogon_flags, NULL);
2063 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2064 hf_netlogon_status, NULL);
2066 proto_item_set_len(item, offset-old_offset);
2071 netlogon_dissect_NETLOGON_INFO_2(tvbuff_t *tvb, int offset,
2072 packet_info *pinfo, proto_tree *parent_tree,
2075 proto_item *item=NULL;
2076 proto_tree *tree=NULL;
2077 int old_offset=offset;
2080 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2081 "NETLOGON_INFO_2:");
2082 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_2);
2085 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2086 hf_netlogon_unknown_long, NULL);
2088 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2089 hf_netlogon_unknown_long, NULL);
2091 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2092 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2093 "unknown", hf_netlogon_unknown_string, -1);
2095 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2096 hf_netlogon_unknown_long, NULL);
2098 proto_item_set_len(item, offset-old_offset);
2103 netlogon_dissect_NETLOGON_INFO_3(tvbuff_t *tvb, int offset,
2104 packet_info *pinfo, proto_tree *parent_tree,
2107 proto_item *item=NULL;
2108 proto_tree *tree=NULL;
2109 int old_offset=offset;
2112 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2113 "NETLOGON_INFO_3:");
2114 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_3);
2117 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2118 hf_netlogon_flags, NULL);
2120 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2121 hf_netlogon_logon_attempts, NULL);
2123 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2124 hf_netlogon_unknown_long, NULL);
2126 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2127 hf_netlogon_unknown_long, NULL);
2129 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2130 hf_netlogon_unknown_long, NULL);
2132 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2133 hf_netlogon_unknown_long, NULL);
2135 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2136 hf_netlogon_unknown_long, NULL);
2138 proto_item_set_len(item, offset-old_offset);
2143 netlogon_dissect_NETLOGON_INFO_4(tvbuff_t *tvb, int offset,
2144 packet_info *pinfo, proto_tree *parent_tree,
2147 proto_item *item=NULL;
2148 proto_tree *tree=NULL;
2149 int old_offset=offset;
2152 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2153 "NETLOGON_INFO_4:");
2154 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO_4);
2157 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2158 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2159 "unknown", hf_netlogon_trusted_dc_name, -1);
2161 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2162 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2163 "unknown", hf_netlogon_trusted_domain_name, -1);
2165 proto_item_set_len(item, offset-old_offset);
2170 netlogon_dissect_UNICODE_MULTI_byte(tvbuff_t *tvb, int offset,
2171 packet_info *pinfo, proto_tree *tree,
2174 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2175 hf_netlogon_unknown_char, NULL);
2181 netlogon_dissect_UNICODE_MULTI_array(tvbuff_t *tvb, int offset,
2182 packet_info *pinfo, proto_tree *tree,
2185 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2186 netlogon_dissect_UNICODE_MULTI_byte);
2192 netlogon_dissect_BYTE_byte(tvbuff_t *tvb, int offset,
2193 packet_info *pinfo, proto_tree *tree,
2196 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2197 hf_netlogon_unknown_char, NULL);
2203 netlogon_dissect_BYTE_array(tvbuff_t *tvb, int offset,
2204 packet_info *pinfo, proto_tree *tree,
2207 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2208 netlogon_dissect_BYTE_byte);
2214 netlogon_dissect_UNICODE_MULTI(tvbuff_t *tvb, int offset,
2215 packet_info *pinfo, proto_tree *parent_tree,
2218 proto_item *item=NULL;
2219 proto_tree *tree=NULL;
2220 int old_offset=offset;
2223 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2225 tree = proto_item_add_subtree(item, ett_UNICODE_MULTI);
2228 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2229 hf_netlogon_len, NULL);
2231 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2232 netlogon_dissect_UNICODE_MULTI_array, NDR_POINTER_PTR,
2233 "unknown", hf_netlogon_unknown_string, 0);
2235 proto_item_set_len(item, offset-old_offset);
2240 dissect_nt_GUID(tvbuff_t *tvb, int offset,
2241 packet_info *pinfo, proto_tree *parent_tree,
2244 proto_item *item=NULL;
2245 proto_tree *tree=NULL;
2246 int old_offset=offset;
2250 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2252 tree = proto_item_add_subtree(item, ett_GUID);
2255 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2256 hf_netlogon_unknown_long, NULL);
2258 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2259 hf_netlogon_unknown_short, NULL);
2261 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2262 hf_netlogon_unknown_short, NULL);
2265 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2266 hf_netlogon_unknown_char, NULL);
2269 proto_item_set_len(item, offset-old_offset);
2274 netlogon_dissect_DOMAIN_CONTROLLER_INFO(tvbuff_t *tvb, int offset,
2275 packet_info *pinfo, proto_tree *parent_tree,
2278 proto_item *item=NULL;
2279 proto_tree *tree=NULL;
2280 int old_offset=offset;
2283 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2284 "DOMAIN_CONTROLLER_INFO:");
2285 tree = proto_item_add_subtree(item, ett_DOMAIN_CONTROLLER_INFO);
2288 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2289 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2290 "unknown", hf_netlogon_dc_name, -1);
2292 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2293 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2294 "unknown", hf_netlogon_dc_address, -1);
2296 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2297 hf_netlogon_dc_address_type, NULL);
2299 offset = dissect_nt_GUID(tvb, offset,
2302 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2303 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2304 "unknown", hf_netlogon_logon_dom, -1);
2306 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2307 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2308 "unknown", hf_netlogon_dns_forest_name, -1);
2310 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2311 hf_netlogon_flags, NULL);
2313 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2314 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2315 "unknown", hf_netlogon_dc_site_name, -1);
2317 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2318 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2319 "unknown", hf_netlogon_client_site_name, -1);
2321 proto_item_set_len(item, offset-old_offset);
2326 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr(tvbuff_t *tvb, int offset,
2327 packet_info *pinfo, proto_tree *tree,
2330 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2331 netlogon_dissect_DOMAIN_CONTROLLER_INFO, NDR_POINTER_PTR,
2332 "DOMAIN_CONTROLLER_INFO pointer: info", -1, 0);
2338 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr_ptr(tvbuff_t *tvb, int offset,
2339 packet_info *pinfo, proto_tree *tree,
2342 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2343 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_PTR,
2344 "DOMAIN_CONTROLLER_INFO pointer: info", -1, 0);
2350 netlogon_dissect_BLOB_array(tvbuff_t *tvb, int offset,
2351 packet_info *pinfo, proto_tree *tree,
2357 di=pinfo->private_data;
2358 if(di->conformant_run){
2359 /*just a run to handle conformant arrays, nothing to dissect.*/
2363 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2364 hf_netlogon_blob_size, &len);
2366 proto_tree_add_item(tree, hf_netlogon_blob, tvb, offset, len,
2374 netlogon_dissect_BLOB(tvbuff_t *tvb, int offset,
2375 packet_info *pinfo, proto_tree *parent_tree,
2378 proto_item *item=NULL;
2379 proto_tree *tree=NULL;
2380 int old_offset=offset;
2383 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2385 tree = proto_item_add_subtree(item, ett_BLOB);
2388 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2389 hf_netlogon_blob_size, NULL);
2391 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2392 netlogon_dissect_BLOB_array, NDR_POINTER_PTR,
2399 netlogon_dissect_BLOB_ptr(tvbuff_t *tvb, int offset,
2400 packet_info *pinfo, proto_tree *tree,
2403 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2404 netlogon_dissect_BLOB, NDR_POINTER_PTR,
2405 "BLOB pointer:", -1, 0);
2411 netlogon_dissect_TYPE_46(tvbuff_t *tvb, int offset,
2412 packet_info *pinfo, proto_tree *parent_tree,
2415 proto_item *item=NULL;
2416 proto_tree *tree=NULL;
2417 int old_offset=offset;
2420 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2422 tree = proto_item_add_subtree(item, ett_TYPE_46);
2425 offset = netlogon_dissect_BLOB(tvb, offset,
2428 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2429 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2430 "unknown", hf_netlogon_workstation_fqdn, -1);
2432 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2433 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2434 "unknown", hf_netlogon_workstation_site_name, -1);
2436 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2437 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2438 "unknown", hf_netlogon_workstation_os, -1);
2440 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2441 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2442 "unknown", hf_netlogon_unknown_string, -1);
2444 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2445 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2446 "unknown", hf_netlogon_unknown_string, -1);
2448 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2449 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
2450 "unknown", hf_netlogon_unknown_string, -1);
2452 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2453 hf_netlogon_unknown_string, 0);
2455 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2456 hf_netlogon_unknown_string, 0);
2458 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2459 hf_netlogon_unknown_string, 0);
2461 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2462 hf_netlogon_unknown_string, 0);
2464 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2465 hf_netlogon_unknown_long, NULL);
2467 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2468 hf_netlogon_unknown_long, NULL);
2470 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2471 hf_netlogon_unknown_long, NULL);
2473 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2474 hf_netlogon_unknown_long, NULL);
2476 proto_item_set_len(item, offset-old_offset);
2481 netlogon_dissect_TYPE_48(tvbuff_t *tvb, int offset,
2482 packet_info *pinfo, proto_tree *parent_tree,
2485 proto_item *item=NULL;
2486 proto_tree *tree=NULL;
2487 int old_offset=offset;
2490 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2492 tree = proto_item_add_subtree(item, ett_TYPE_48);
2495 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2496 hf_netlogon_unknown_string, 0);
2498 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2499 hf_netlogon_unknown_string, 0);
2501 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2502 hf_netlogon_unknown_string, 0);
2504 offset = dissect_nt_GUID(tvb, offset,
2507 offset = dissect_ndr_nt_PSID(tvb, offset,
2510 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2511 hf_netlogon_unknown_string, 0);
2513 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2514 hf_netlogon_unknown_string, 0);
2516 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2517 hf_netlogon_unknown_string, 0);
2519 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2520 hf_netlogon_unknown_string, 0);
2522 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2523 hf_netlogon_unknown_long, NULL);
2525 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2526 hf_netlogon_unknown_long, NULL);
2528 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2529 hf_netlogon_unknown_long, NULL);
2531 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2532 hf_netlogon_unknown_long, NULL);
2534 offset = netlogon_dissect_BLOB(tvb, offset,
2537 offset = netlogon_dissect_BLOB(tvb, offset,
2540 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2541 hf_netlogon_unknown_string, 0);
2543 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2544 hf_netlogon_unknown_string, 0);
2546 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2547 hf_netlogon_unknown_string, 0);
2549 offset = dissect_ndr_nt_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
2550 hf_netlogon_unknown_string, 0);
2552 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2553 hf_netlogon_unknown_long, NULL);
2555 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2556 hf_netlogon_unknown_long, NULL);
2558 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2559 hf_netlogon_unknown_long, NULL);
2561 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2562 hf_netlogon_unknown_long, NULL);
2564 proto_item_set_len(item, offset-old_offset);
2569 netlogon_dissect_UNICODE_STRING_512(tvbuff_t *tvb, int offset,
2570 packet_info *pinfo, proto_tree *parent_tree,
2573 proto_item *item=NULL;
2574 proto_tree *tree=NULL;
2575 int old_offset=offset;
2579 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2580 "UNICODE_STRING_512:");
2581 tree = proto_item_add_subtree(item, ett_UNICODE_STRING_512);
2585 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2586 hf_netlogon_unknown_short, NULL);
2589 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2590 hf_netlogon_unknown_long, NULL);
2592 proto_item_set_len(item, offset-old_offset);
2597 netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvbuff_t *tvb, int offset,
2598 packet_info *pinfo, proto_tree *tree,
2601 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2602 hf_netlogon_secure_channel_type, NULL);
2608 netlogon_dissect_element_844_byte(tvbuff_t *tvb, int offset,
2609 packet_info *pinfo, proto_tree *tree,
2612 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2613 hf_netlogon_unknown_char, NULL);
2619 netlogon_dissect_element_844_array(tvbuff_t *tvb, int offset,
2620 packet_info *pinfo, proto_tree *tree,
2623 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2624 netlogon_dissect_element_844_byte);
2630 netlogon_dissect_TYPE_50(tvbuff_t *tvb, int offset,
2631 packet_info *pinfo, proto_tree *parent_tree,
2634 proto_item *item=NULL;
2635 proto_tree *tree=NULL;
2636 int old_offset=offset;
2639 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2641 tree = proto_item_add_subtree(item, ett_TYPE_50);
2644 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2645 hf_netlogon_unknown_long, NULL);
2647 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2648 netlogon_dissect_element_844_array, NDR_POINTER_UNIQUE,
2649 "unknown", hf_netlogon_unknown_string, 0);
2651 proto_item_set_len(item, offset-old_offset);
2656 netlogon_dissect_TYPE_50_ptr(tvbuff_t *tvb, int offset,
2657 packet_info *pinfo, proto_tree *tree,
2660 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2661 netlogon_dissect_TYPE_50, NDR_POINTER_PTR,
2662 "TYPE_50 pointer: unknown_TYPE_50", -1, 0);
2668 netlogon_dissect_TYPE_50_ptr_ptr(tvbuff_t *tvb, int offset,
2669 packet_info *pinfo, proto_tree *tree,
2672 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2673 netlogon_dissect_TYPE_50_ptr, NDR_POINTER_PTR,
2674 "TYPE_50* pointer: unknown_TYPE_50", -1, 0);
2680 netlogon_dissect_element_861_byte(tvbuff_t *tvb, int offset,
2681 packet_info *pinfo, proto_tree *tree,
2684 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2685 hf_netlogon_unknown_char, NULL);
2691 netlogon_dissect_element_861_array(tvbuff_t *tvb, int offset,
2692 packet_info *pinfo, proto_tree *tree,
2695 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2696 netlogon_dissect_element_861_byte);
2702 netlogon_dissect_TYPE_51(tvbuff_t *tvb, int offset,
2703 packet_info *pinfo, proto_tree *parent_tree,
2706 proto_item *item=NULL;
2707 proto_tree *tree=NULL;
2708 int old_offset=offset;
2711 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2713 tree = proto_item_add_subtree(item, ett_TYPE_51);
2716 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2717 hf_netlogon_unknown_long, NULL);
2719 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2720 netlogon_dissect_element_861_array, NDR_POINTER_UNIQUE,
2721 "unknown", hf_netlogon_unknown_string, 0);
2723 proto_item_set_len(item, offset-old_offset);
2728 netlogon_dissect_element_865_byte(tvbuff_t *tvb, int offset,
2729 packet_info *pinfo, proto_tree *tree,
2732 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2733 hf_netlogon_unknown_char, NULL);
2739 netlogon_dissect_element_865_array(tvbuff_t *tvb, int offset,
2740 packet_info *pinfo, proto_tree *tree,
2743 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2744 netlogon_dissect_element_865_byte);
2750 netlogon_dissect_element_866_byte(tvbuff_t *tvb, int offset,
2751 packet_info *pinfo, proto_tree *tree,
2754 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
2755 hf_netlogon_unknown_char, NULL);
2761 netlogon_dissect_element_866_array(tvbuff_t *tvb, int offset,
2762 packet_info *pinfo, proto_tree *tree,
2765 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
2766 netlogon_dissect_element_866_byte);
2772 netlogon_dissect_TYPE_52(tvbuff_t *tvb, int offset,
2773 packet_info *pinfo, proto_tree *parent_tree,
2776 proto_item *item=NULL;
2777 proto_tree *tree=NULL;
2778 int old_offset=offset;
2781 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2783 tree = proto_item_add_subtree(item, ett_TYPE_52);
2786 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2787 hf_netlogon_unknown_long, NULL);
2789 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2790 netlogon_dissect_element_865_array, NDR_POINTER_UNIQUE,
2791 "unknown", hf_netlogon_unknown_string, 0);
2793 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2794 netlogon_dissect_element_866_array, NDR_POINTER_UNIQUE,
2795 "unknown", hf_netlogon_unknown_string, 0);
2797 proto_item_set_len(item, offset-old_offset);
2802 netlogon_dissect_TYPE_52_ptr(tvbuff_t *tvb, int offset,
2803 packet_info *pinfo, proto_tree *tree,
2806 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2807 netlogon_dissect_TYPE_52, NDR_POINTER_PTR,
2808 "TYPE_52 pointer: unknown_TYPE_52", -1, 0);
2813 netlogon_dissect_TYPE_52_ptr_ptr(tvbuff_t *tvb, int offset,
2814 packet_info *pinfo, proto_tree *tree,
2817 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2818 netlogon_dissect_TYPE_52_ptr, NDR_POINTER_PTR,
2819 "TYPE_52* pointer: unknown_TYPE_52", -1, 0);
2824 netlogon_dissect_NETLOGON_LEVEL(tvbuff_t *tvb, int offset,
2825 packet_info *pinfo, proto_tree *parent_tree,
2828 proto_item *item=NULL;
2829 proto_tree *tree=NULL;
2830 int old_offset=offset;
2834 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2836 tree = proto_item_add_subtree(item, ett_NETLOGON_LEVEL);
2839 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2840 hf_netlogon_level, &level);
2845 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2846 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2847 "INTERACTIVE_INFO pointer:", -1, 0);
2850 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2851 netlogon_dissect_NETLOGON_NETWORK_INFO, NDR_POINTER_PTR,
2852 "NETWORK_INFO pointer:", -1, 0);
2855 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2856 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2857 "INTERACTIVE_INFO pointer:", -1, 0);
2860 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2861 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2862 "INTERACTIVE_INFO pointer:", -1, 0);
2865 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2866 netlogon_dissect_NETLOGON_NETWORK_INFO, NDR_POINTER_PTR,
2867 "NETWORK_INFO pointer:", -1, 0);
2870 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2871 netlogon_dissect_NETLOGON_INTERACTIVE_INFO, NDR_POINTER_PTR,
2872 "INTERACTIVE_INFO pointer:", -1, 0);
2876 proto_item_set_len(item, offset-old_offset);
2881 netlogon_dissect_NETLOGON_VALIDATION(tvbuff_t *tvb, int offset,
2882 packet_info *pinfo, proto_tree *parent_tree,
2885 proto_item *item=NULL;
2886 proto_tree *tree=NULL;
2887 int old_offset=offset;
2891 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2892 "NETLOGON_VALIDATION:");
2893 tree = proto_item_add_subtree(item, ett_NETLOGON_VALIDATION);
2896 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2897 hf_netlogon_level, &level);
2899 /* XXX i am not sure about these pointers being UNIQUE, though I am
2900 pretty convinced that they are NOT PTR as the idl file suggests.
2905 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2906 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO1, NDR_POINTER_UNIQUE,
2907 "NETLOGON_VALIDATION_SAM_INFO1 pointer:", -1, 0);
2910 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2911 netlogon_dissect_NETLOGON_VALIDATION_SAM_INFO2, NDR_POINTER_UNIQUE,
2912 "NETLOGON_VALIDATION_SAM_INFO2 pointer:", -1, 0);
2915 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2916 netlogon_dissect_pointer_STRING, NDR_POINTER_UNIQUE,
2917 "STRING pointer:", -1, 0);
2920 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
2921 netlogon_dissect_BLOB_ptr, NDR_POINTER_UNIQUE,
2922 "BLOB pointer:", -1, 0);
2926 proto_item_set_len(item, offset-old_offset);
2932 netlogon_dissect_TYPE_19(tvbuff_t *tvb, int offset,
2933 packet_info *pinfo, proto_tree *parent_tree,
2936 proto_item *item=NULL;
2937 proto_tree *tree=NULL;
2938 int old_offset=offset;
2942 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
2944 tree = proto_item_add_subtree(item, ett_TYPE_19);
2947 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
2948 hf_netlogon_level, &level);
2953 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2954 hf_netlogon_unknown_long, NULL);
2957 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2958 hf_netlogon_unknown_long, NULL);
2961 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2962 hf_netlogon_unknown_long, NULL);
2965 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2966 hf_netlogon_unknown_long, NULL);
2969 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2970 hf_netlogon_unknown_long, NULL);
2973 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2974 hf_netlogon_unknown_long, NULL);
2977 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2978 hf_netlogon_unknown_long, NULL);
2981 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2982 hf_netlogon_unknown_long, NULL);
2985 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2986 hf_netlogon_unknown_long, NULL);
2989 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2990 hf_netlogon_unknown_long, NULL);
2993 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2994 hf_netlogon_unknown_long, NULL);
2997 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
2998 hf_netlogon_unknown_long, NULL);
3001 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3002 hf_netlogon_unknown_long, NULL);
3005 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3006 hf_netlogon_unknown_long, NULL);
3009 offset = dissect_ndr_nt_PSID(tvb, offset,
3013 offset = dissect_ndr_nt_PSID(tvb, offset,
3017 offset = dissect_ndr_nt_PSID(tvb, offset,
3021 offset = dissect_ndr_nt_PSID(tvb, offset,
3025 offset = dissect_ndr_nt_PSID(tvb, offset,
3029 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3030 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
3031 "unknown", hf_netlogon_unknown_string, -1);
3034 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3035 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
3036 "unknown", hf_netlogon_unknown_string, -1);
3040 proto_item_set_len(item, offset-old_offset);
3046 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO(tvbuff_t *tvb, int offset,
3047 packet_info *pinfo, proto_tree *parent_tree,
3050 proto_item *item=NULL;
3051 proto_tree *tree=NULL;
3052 int old_offset=offset;
3056 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3057 "NETLOGON_CONTROL_QUERY_INFO:");
3058 tree = proto_item_add_subtree(item, ett_NETLOGON_CONTROL_QUERY_INFO);
3061 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3062 hf_netlogon_level_long, &level);
3067 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3068 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
3069 "unknown", hf_netlogon_unknown_string, -1);
3072 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3073 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
3074 "unknown", hf_netlogon_unknown_string, -1);
3077 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3078 hf_netlogon_unknown_long, NULL);
3081 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3082 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
3083 "unknown", hf_netlogon_unknown_string, -1);
3087 proto_item_set_len(item, offset-old_offset);
3093 netlogon_dissect_TYPE_44(tvbuff_t *tvb, int offset,
3094 packet_info *pinfo, proto_tree *parent_tree,
3097 proto_item *item=NULL;
3098 proto_tree *tree=NULL;
3099 int old_offset=offset;
3103 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3105 tree = proto_item_add_subtree(item, ett_TYPE_44);
3108 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3109 hf_netlogon_level_long, &level);
3114 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3115 hf_netlogon_unknown_long, NULL);
3119 proto_item_set_len(item, offset-old_offset);
3124 netlogon_dissect_TYPE_20(tvbuff_t *tvb, int offset,
3125 packet_info *pinfo, proto_tree *parent_tree,
3128 proto_item *item=NULL;
3129 proto_tree *tree=NULL;
3130 int old_offset=offset;
3134 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3136 tree = proto_item_add_subtree(item, ett_TYPE_20);
3139 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
3140 hf_netlogon_level, &level);
3145 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3146 netlogon_dissect_NETLOGON_SAM_DOMAIN_INFO, NDR_POINTER_PTR,
3147 "NETLOGON_SAM_DOMAIN_INFO pointer:", -1, 0);
3150 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3151 netlogon_dissect_NETLOGON_SAM_GROUP_INFO, NDR_POINTER_PTR,
3152 "NETLOGON_SAM_GROUP_INFO pointer:", -1, 0);
3155 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3156 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3157 "TYPE_23 pointer:", -1, 0);
3160 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3161 netlogon_dissect_NETLOGON_SAM_ACCOUNT_INFO, NDR_POINTER_PTR,
3162 "NETLOGON_SAM_ACCOUNT_INFO pointer:", -1, 0);
3165 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3166 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3167 "TYPE_23 pointer:", -1, 0);
3170 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3171 netlogon_dissect_NETLOGON_SAM_GROUP_MEM_INFO, NDR_POINTER_PTR,
3172 "NETLOGON_SAM_GROUP_MEM_INFO pointer:", -1, 0);
3175 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3176 netlogon_dissect_NETLOGON_SAM_ALIAS_INFO, NDR_POINTER_PTR,
3177 "NETLOGON_SAM_ALIAS_INFO pointer:", -1, 0);
3180 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3181 netlogon_dissect_TYPE_23, NDR_POINTER_PTR,
3182 "TYPE_23 pointer:", -1, 0);
3185 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3186 netlogon_dissect_NETLOGON_SAM_ALIAS_MEM_INFO, NDR_POINTER_PTR,
3187 "NETLOGON_SAM_ALIAS_MEM_INFO pointer:", -1, 0);
3190 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3191 netlogon_dissect_TYPE_29, NDR_POINTER_PTR,
3192 "TYPE_29 pointer:", -1, 0);
3195 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3196 netlogon_dissect_TYPE_31, NDR_POINTER_PTR,
3197 "TYPE_31 pointer:", -1, 0);
3200 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3201 netlogon_dissect_TYPE_33, NDR_POINTER_PTR,
3202 "TYPE_33 pointer:", -1, 0);
3205 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3206 netlogon_dissect_TYPE_34, NDR_POINTER_PTR,
3207 "TYPE_34 pointer:", -1, 0);
3210 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3211 netlogon_dissect_TYPE_35, NDR_POINTER_PTR,
3212 "TYPE_35 pointer:", -1, 0);
3215 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3216 netlogon_dissect_TYPE_35, NDR_POINTER_PTR,
3217 "TYPE_35 pointer:", -1, 0);
3220 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3221 netlogon_dissect_TYPE_16, NDR_POINTER_PTR,
3222 "TYPE_16 pointer:", -1, 0);
3226 proto_item_set_len(item, offset-old_offset);
3231 netlogon_dissect_SAM_DELTA(tvbuff_t *tvb, int offset,
3232 packet_info *pinfo, proto_tree *parent_tree,
3235 proto_item *item=NULL;
3236 proto_tree *tree=NULL;
3237 int old_offset=offset;
3240 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3242 tree = proto_item_add_subtree(item, ett_SAM_DELTA);
3245 offset = netlogon_dissect_TYPE_19(tvb, offset,
3248 offset = netlogon_dissect_TYPE_20(tvb, offset,
3251 proto_item_set_len(item, offset-old_offset);
3256 netlogon_dissect_SAM_DELTA_array(tvbuff_t *tvb, int offset,
3257 packet_info *pinfo, proto_tree *tree,
3260 offset = dissect_ndr_ucarray(tvb, offset, pinfo, tree, drep,
3261 netlogon_dissect_SAM_DELTA);
3267 netlogon_dissect_SAM_DELTA_ARRAY(tvbuff_t *tvb, int offset,
3268 packet_info *pinfo, proto_tree *parent_tree,
3271 proto_item *item=NULL;
3272 proto_tree *tree=NULL;
3273 int old_offset=offset;
3276 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3277 "SAM_DELTA_ARRAY:");
3278 tree = proto_item_add_subtree(item, ett_SAM_DELTA_ARRAY);
3281 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3282 hf_netlogon_num_deltas, NULL);
3284 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3285 netlogon_dissect_SAM_DELTA_array, NDR_POINTER_UNIQUE,
3288 proto_item_set_len(item, offset-old_offset);
3293 netlogon_dissect_SAM_DELTA_ARRAY_ptr(tvbuff_t *tvb, int offset,
3294 packet_info *pinfo, proto_tree *tree,
3297 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3298 netlogon_dissect_SAM_DELTA_ARRAY, NDR_POINTER_PTR,
3299 "SAM_DELTA_ARRAY pointer: deltas", -1, 0);
3305 netlogon_dissect_LOGONSRV_HANDLE(tvbuff_t *tvb, int offset,
3306 packet_info *pinfo, proto_tree *tree,
3309 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3310 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3311 "Handle", hf_netlogon_logonsrv_handle, 0);
3317 netlogon_dissect_NETLOGON_INFO(tvbuff_t *tvb, int offset,
3318 packet_info *pinfo, proto_tree *parent_tree,
3321 proto_item *item=NULL;
3322 proto_tree *tree=NULL;
3323 int old_offset=offset;
3327 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3329 tree = proto_item_add_subtree(item, ett_NETLOGON_INFO);
3332 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3333 hf_netlogon_level_long, &level);
3338 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3339 netlogon_dissect_NETLOGON_INFO_1, NDR_POINTER_PTR,
3340 "NETLOGON_INFO_1 pointer:", -1, 0);
3343 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3344 netlogon_dissect_NETLOGON_INFO_2, NDR_POINTER_PTR,
3345 "NETLOGON_INFO_2 pointer:", -1, 0);
3348 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3349 netlogon_dissect_NETLOGON_INFO_3, NDR_POINTER_PTR,
3350 "NETLOGON_INFO_3 pointer:", -1, 0);
3353 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3354 netlogon_dissect_NETLOGON_INFO_4, NDR_POINTER_PTR,
3355 "NETLOGON_INFO_4 pointer:", -1, 0);
3359 proto_item_set_len(item, offset-old_offset);
3364 netlogon_dissect_TYPE_45(tvbuff_t *tvb, int offset,
3365 packet_info *pinfo, proto_tree *parent_tree,
3368 proto_item *item=NULL;
3369 proto_tree *tree=NULL;
3370 int old_offset=offset;
3374 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3376 tree = proto_item_add_subtree(item, ett_TYPE_45);
3379 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3380 hf_netlogon_level_long, &level);
3385 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3386 netlogon_dissect_TYPE_46, NDR_POINTER_PTR,
3387 "TYPE_46 pointer:", -1, 0);
3390 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3391 netlogon_dissect_TYPE_46, NDR_POINTER_PTR,
3392 "TYPE_46 pointer:", -1, 0);
3396 proto_item_set_len(item, offset-old_offset);
3401 netlogon_dissect_TYPE_47(tvbuff_t *tvb, int offset,
3402 packet_info *pinfo, proto_tree *parent_tree,
3405 proto_item *item=NULL;
3406 proto_tree *tree=NULL;
3407 int old_offset=offset;
3411 item = proto_tree_add_text(parent_tree, tvb, offset, 0,
3413 tree = proto_item_add_subtree(item, ett_TYPE_47);
3416 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3417 hf_netlogon_level_long, &level);
3422 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3423 netlogon_dissect_TYPE_48, NDR_POINTER_PTR,
3424 "TYPE_48 pointer:", -1, 0);
3427 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3428 netlogon_dissect_UNICODE_MULTI, NDR_POINTER_PTR,
3429 "UNICODE_MULTI pointer:", -1, 0);
3433 proto_item_set_len(item, offset-old_offset);
3439 netlogon_dissect_function_00_rqst(tvbuff_t *tvb, int offset,
3440 packet_info *pinfo, proto_tree *tree, char *drep)
3442 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3445 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3446 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3447 "unknown string", hf_netlogon_unknown_string, -1);
3449 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3450 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3451 "unknown string", hf_netlogon_unknown_string, -1);
3458 netlogon_dissect_function_00_reply(tvbuff_t *tvb, int offset,
3459 packet_info *pinfo, proto_tree *tree, char *drep)
3461 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3462 netlogon_dissect_TYPE_1_ptr, NDR_POINTER_REF,
3463 "TYPE_1* pointer: unknown_TYPE_1", -1, 0);
3465 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3466 hf_netlogon_rc, NULL);
3472 netlogon_dissect_function_01_rqst(tvbuff_t *tvb, int offset,
3473 packet_info *pinfo, proto_tree *tree, char *drep)
3475 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3478 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3479 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3480 "unknown string", hf_netlogon_unknown_string, -1);
3482 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3483 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_REF,
3484 "unknown string", hf_netlogon_unknown_string, -1);
3491 netlogon_dissect_function_01_reply(tvbuff_t *tvb, int offset,
3492 packet_info *pinfo, proto_tree *tree, char *drep)
3494 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3495 netlogon_dissect_TYPE_2, NDR_POINTER_REF,
3496 "TYPE_2 pointer: unknown_TYPE_2", -1, 0);
3498 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3499 hf_netlogon_rc, NULL);
3505 netlogon_dissect_netlogonsamlogon_rqst(tvbuff_t *tvb, int offset,
3506 packet_info *pinfo, proto_tree *tree, char *drep)
3508 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3511 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3512 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3513 "Computer Name", hf_netlogon_computer_name, 0);
3515 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3516 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3517 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3519 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3520 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3521 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3523 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3524 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_REF,
3525 "NETLOGON_LEVEL pointer: id_ctr", -1, 0);
3532 netlogon_dissect_netlogonsamlogon_reply(tvbuff_t *tvb, int offset,
3533 packet_info *pinfo, proto_tree *tree, char *drep)
3535 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3536 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3537 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3539 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3540 netlogon_dissect_NETLOGON_VALIDATION, NDR_POINTER_REF,
3541 "NETLOGON_VALIDATION pointer: ctr", -1, 0);
3543 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3544 netlogon_dissect_pointer_char, NDR_POINTER_REF,
3545 "BOOLEAN pointer: Authoritative", hf_netlogon_authoritative, 0);
3547 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3548 hf_netlogon_rc, NULL);
3554 netlogon_dissect_netlogonsamlogoff_rqst(tvbuff_t *tvb, int offset,
3555 packet_info *pinfo, proto_tree *tree, char *drep)
3557 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3560 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3561 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3562 "unknown string", hf_netlogon_unknown_string, 0);
3564 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3565 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3566 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3568 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3569 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3570 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3572 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3573 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_REF,
3574 "NETLOGON_LEVEL pointer: id_ctr", -1, 0);
3581 netlogon_dissect_netlogonsamlogoff_reply(tvbuff_t *tvb, int offset,
3582 packet_info *pinfo, proto_tree *tree, char *drep)
3585 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3586 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_UNIQUE,
3587 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3589 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3590 hf_netlogon_rc, NULL);
3596 netlogon_dissect_netserverreqchallenge_rqst(tvbuff_t *tvb, int offset,
3597 packet_info *pinfo, proto_tree *tree, char *drep)
3599 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3602 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3603 NDR_POINTER_REF, hf_netlogon_client_name, 0);
3605 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3606 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3607 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
3614 netlogon_dissect_netserverreqchallenge_reply(tvbuff_t *tvb, int offset,
3615 packet_info *pinfo, proto_tree *tree, char *drep)
3617 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3618 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3619 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
3621 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3622 hf_netlogon_rc, NULL);
3628 netlogon_dissect_netserverauthenticate_rqst(tvbuff_t *tvb, int offset,
3629 packet_info *pinfo, proto_tree *tree, char *drep)
3631 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3634 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3635 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
3637 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
3640 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3641 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
3643 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3644 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3645 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
3652 netlogon_dissect_netserverauthenticate_reply(tvbuff_t *tvb, int offset,
3653 packet_info *pinfo, proto_tree *tree, char *drep)
3655 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3656 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
3657 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
3659 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3660 hf_netlogon_rc, NULL);
3666 netlogon_dissect_netserverpasswordset_rqst(tvbuff_t *tvb, int offset,
3667 packet_info *pinfo, proto_tree *tree, char *drep)
3669 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3672 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3673 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
3675 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
3678 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3679 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
3681 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3682 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3683 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
3685 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3686 netlogon_dissect_ENCRYPTED_LM_OWF_PASSWORD, NDR_POINTER_REF,
3687 "ENCRYPTED_LM_OWF_PASSWORD pointer: hashed_pwd", -1, 0);
3694 netlogon_dissect_netserverpasswordset_reply(tvbuff_t *tvb, int offset,
3695 packet_info *pinfo, proto_tree *tree, char *drep)
3697 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3698 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3699 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
3701 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3702 hf_netlogon_rc, NULL);
3708 netlogon_dissect_netsamdeltas_rqst(tvbuff_t *tvb, int offset,
3709 packet_info *pinfo, proto_tree *tree, char *drep)
3711 /* XXX idl file has LOGONSRV_HANDLE here, ms capture has string srv_name */
3712 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3713 NDR_POINTER_REF, hf_netlogon_logon_srv, 0);
3715 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3716 NDR_POINTER_REF, hf_netlogon_cli_name, 0);
3718 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3719 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3720 "NETLOGON_AUTHENTICATOR pointer: client_creds", -1, 0);
3722 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3723 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3724 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3726 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3727 hf_netlogon_database_id, NULL);
3729 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3730 netlogon_dissect_TYPE_16, NDR_POINTER_REF,
3731 "TYPE_16 pointer: dom_mod_count", -1, 0);
3733 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3734 hf_netlogon_max_size, NULL);
3740 netlogon_dissect_netsamdeltas_reply(tvbuff_t *tvb, int offset,
3741 packet_info *pinfo, proto_tree *tree, char *drep)
3743 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3744 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3745 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3747 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3748 netlogon_dissect_TYPE_16, NDR_POINTER_REF,
3749 "TYPE_16 pointer: dom_mod_count", -1, 0);
3751 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3752 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
3753 "SAM_DELTA_ARRAY_ptr pointer: deltas", -1, 0);
3755 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3756 hf_netlogon_rc, NULL);
3762 netlogon_dissect_function_08_rqst(tvbuff_t *tvb, int offset,
3763 packet_info *pinfo, proto_tree *tree, char *drep)
3765 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3766 NDR_POINTER_REF, hf_netlogon_logon_srv, 0);
3768 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3769 NDR_POINTER_REF, hf_netlogon_cli_name, 0);
3771 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3772 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3773 "NETLOGON_AUTHENTICATOR pointer: client_creds", -1, 0);
3775 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3776 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3777 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3779 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3780 hf_netlogon_unknown_long, NULL);
3782 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3783 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3784 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3786 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3787 hf_netlogon_unknown_long, NULL);
3793 netlogon_dissect_function_08_reply(tvbuff_t *tvb, int offset,
3794 packet_info *pinfo, proto_tree *tree, char *drep)
3796 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3797 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3798 "NETLOGON_AUTHENTICATOR pointer: server_creds", -1, 0);
3800 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3801 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3802 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3804 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3805 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
3806 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
3808 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3809 hf_netlogon_rc, NULL);
3815 netlogon_dissect_function_09_rqst(tvbuff_t *tvb, int offset,
3816 packet_info *pinfo, proto_tree *tree, char *drep)
3818 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3821 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3822 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3824 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3825 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3826 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3828 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3829 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3830 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3832 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3833 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3834 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3836 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3837 hf_netlogon_unknown_long, NULL);
3839 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3840 hf_netlogon_unknown_long, NULL);
3842 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3843 hf_netlogon_unknown_long, NULL);
3849 netlogon_dissect_function_09_reply(tvbuff_t *tvb, int offset,
3850 packet_info *pinfo, proto_tree *tree, char *drep)
3852 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3853 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3854 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3856 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3857 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
3858 "BYTE_array pointer: unknown_BYTE", -1, 0);
3860 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3861 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3862 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3864 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3865 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3866 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3868 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3869 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3870 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3872 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3873 hf_netlogon_rc, NULL);
3879 netlogon_dissect_function_0a_rqst(tvbuff_t *tvb, int offset,
3880 packet_info *pinfo, proto_tree *tree, char *drep)
3882 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3885 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3886 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3888 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3889 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3890 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3892 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3893 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3894 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3896 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3897 hf_netlogon_unknown_long, NULL);
3899 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3900 hf_netlogon_unknown_long, NULL);
3902 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3903 hf_netlogon_unknown_long, NULL);
3910 netlogon_dissect_function_0a_reply(tvbuff_t *tvb, int offset,
3911 packet_info *pinfo, proto_tree *tree, char *drep)
3913 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3914 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
3915 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
3917 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3918 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
3919 "BYTE_array pointer: unknown_BYTE", -1, 0);
3921 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3922 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3923 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3925 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3926 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3927 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3929 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3930 netlogon_dissect_pointer_long, NDR_POINTER_REF,
3931 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
3933 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3934 netlogon_dissect_TYPE_36, NDR_POINTER_REF,
3935 "TYPE_36 pointer: unknown_TYPE_36", -1, 0);
3937 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3938 hf_netlogon_rc, NULL);
3944 netlogon_dissect_function_0b_rqst(tvbuff_t *tvb, int offset,
3945 packet_info *pinfo, proto_tree *tree, char *drep)
3948 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
3949 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
3951 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3952 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
3953 "unknown string", hf_netlogon_unknown_string, 0);
3955 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3956 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3957 "WCHAR* pointer: unknown string", -1, 0);
3963 netlogon_dissect_function_0b_reply(tvbuff_t *tvb, int offset,
3964 packet_info *pinfo, proto_tree *tree, char *drep)
3966 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3967 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
3968 "WCHAR* pointer: unknown string", -1, 0);
3970 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3971 hf_netlogon_rc, NULL);
3977 netlogon_dissect_netlogoncontrol_rqst(tvbuff_t *tvb, int offset,
3978 packet_info *pinfo, proto_tree *tree, char *drep)
3980 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
3983 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3984 hf_netlogon_code, NULL);
3986 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
3987 hf_netlogon_level, NULL);
3994 netlogon_dissect_netlogoncontrol_reply(tvbuff_t *tvb, int offset,
3995 packet_info *pinfo, proto_tree *tree, char *drep)
3997 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
3998 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
3999 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
4001 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4002 hf_netlogon_rc, NULL);
4008 netlogon_dissect_function_0d_rqst(tvbuff_t *tvb, int offset,
4009 packet_info *pinfo, proto_tree *tree, char *drep)
4011 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4014 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4015 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4016 "unknown string", hf_netlogon_unknown_string, 0);
4018 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4019 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
4020 "WCHAR* pointer: unknown string", -1, 0);
4026 netlogon_dissect_function_0d_reply(tvbuff_t *tvb, int offset,
4027 packet_info *pinfo, proto_tree *tree, char *drep)
4029 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4030 netlogon_dissect_WCHAR_ptr, NDR_POINTER_REF,
4031 "WCHAR* pointer: unknown string", -1, 0);
4033 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4034 hf_netlogon_rc, NULL);
4040 netlogon_dissect_netlogoncontrol2_rqst(tvbuff_t *tvb, int offset,
4041 packet_info *pinfo, proto_tree *tree, char *drep)
4043 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4046 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4047 hf_netlogon_code, NULL);
4049 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4050 hf_netlogon_level, NULL);
4052 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4053 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO, NDR_POINTER_REF,
4054 "NETLOGON_CONTROL_QUERY_INFO pointer: unknown_NETLOGON_CONTROL_QUERY_INFO", -1, 0);
4061 netlogon_dissect_netlogoncontrol2_reply(tvbuff_t *tvb, int offset,
4062 packet_info *pinfo, proto_tree *tree, char *drep)
4064 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4065 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
4066 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
4068 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4069 hf_netlogon_rc, NULL);
4075 netlogon_dissect_netserverauthenticate2_rqst(tvbuff_t *tvb, int offset,
4076 packet_info *pinfo, proto_tree *tree, char *drep)
4078 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4081 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4082 NDR_POINTER_REF, hf_netlogon_acct_name, 0);
4084 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4087 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4088 NDR_POINTER_REF, hf_netlogon_computer_name, 0);
4090 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4091 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4092 "NETLOGON_CREDENTIAL pointer: client_chal", -1, 0);
4094 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4095 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4096 "ULONG pointer: neg_flags", hf_netlogon_unknown_long, 0);
4102 netlogon_dissect_netserverauthenticate2_reply(tvbuff_t *tvb, int offset,
4103 packet_info *pinfo, proto_tree *tree, char *drep)
4105 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4106 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4107 "NETLOGON_CREDENTIAL pointer: server_chal", -1, 0);
4109 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4110 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4111 "ULONG pointer: neg_flags", hf_netlogon_unknown_long, 0);
4113 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4114 hf_netlogon_rc, NULL);
4120 netlogon_dissect_netdatabasesync2_rqst(tvbuff_t *tvb, int offset,
4121 packet_info *pinfo, proto_tree *tree, char *drep)
4123 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4126 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4127 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4129 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4130 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4131 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4133 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4134 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4135 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4137 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4138 hf_netlogon_unknown_long, NULL);
4140 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4141 hf_netlogon_unknown_short, NULL);
4143 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4144 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4145 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4147 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4148 hf_netlogon_unknown_long, NULL);
4155 netlogon_dissect_netdatabasesync2_reply(tvbuff_t *tvb, int offset,
4156 packet_info *pinfo, proto_tree *tree, char *drep)
4158 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4159 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4160 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4162 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4163 netlogon_dissect_pointer_long, NDR_POINTER_REF,
4164 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4166 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4167 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
4168 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
4170 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4171 hf_netlogon_rc, NULL);
4177 netlogon_dissect_function_11_rqst(tvbuff_t *tvb, int offset,
4178 packet_info *pinfo, proto_tree *tree, char *drep)
4180 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4181 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4183 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4184 NDR_POINTER_REF, hf_netlogon_unknown_string, 0);
4186 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4187 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4188 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4190 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4191 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4192 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4194 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4195 netlogon_dissect_BYTE_array, NDR_POINTER_REF,
4196 "BYTE pointer: unknown_BYTE", -1, 0);
4198 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4199 hf_netlogon_unknown_long, NULL);
4206 netlogon_dissect_function_11_reply(tvbuff_t *tvb, int offset,
4207 packet_info *pinfo, proto_tree *tree, char *drep)
4209 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4210 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4211 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4213 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4214 netlogon_dissect_SAM_DELTA_ARRAY_ptr, NDR_POINTER_REF,
4215 "SAM_DELTA_ARRAY* pointer: unknown_SAM_DELTA_ARRAY", -1, 0);
4217 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4218 hf_netlogon_rc, NULL);
4224 netlogon_dissect_function_12_rqst(tvbuff_t *tvb, int offset,
4225 packet_info *pinfo, proto_tree *tree, char *drep)
4227 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4230 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4231 hf_netlogon_unknown_long, NULL);
4233 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4234 hf_netlogon_level, NULL);
4236 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4237 netlogon_dissect_NETLOGON_CONTROL_QUERY_INFO, NDR_POINTER_REF,
4238 "NETLOGON_CONTROL_QUERY_INFO pointer: unknown_NETLOGON_CONTROL_QUERY_INFO", -1, 0);
4245 netlogon_dissect_function_12_reply(tvbuff_t *tvb, int offset,
4246 packet_info *pinfo, proto_tree *tree, char *drep)
4248 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4249 netlogon_dissect_NETLOGON_INFO, NDR_POINTER_REF,
4250 "NETLOGON_INFO pointer: unknown_NETLOGON_INFO", -1, 0);
4252 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4253 hf_netlogon_rc, NULL);
4259 netlogon_dissect_nettrusteddomainlist_rqst(tvbuff_t *tvb, int offset,
4260 packet_info *pinfo, proto_tree *tree, char *drep)
4262 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4270 netlogon_dissect_nettrusteddomainlist_reply(tvbuff_t *tvb, int offset,
4271 packet_info *pinfo, proto_tree *tree, char *drep)
4273 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4274 netlogon_dissect_UNICODE_MULTI, NDR_POINTER_REF,
4275 "UNICODE_MULTI pointer: trust_dom_name_list", -1, 0);
4277 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4278 hf_netlogon_rc, NULL);
4284 netlogon_dissect_dsrgetdcname2_rqst(tvbuff_t *tvb, int offset,
4285 packet_info *pinfo, proto_tree *tree, char *drep)
4287 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4290 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4291 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4292 "Domain", hf_netlogon_logon_dom, 0);
4294 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4295 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4296 "GUID pointer: domain_guid", -1, 0);
4298 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4299 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4300 "GUID pointer: site_guid", -1, 0);
4302 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4303 hf_netlogon_flags, NULL);
4310 netlogon_dissect_dsrgetdcname2_reply(tvbuff_t *tvb, int offset,
4311 packet_info *pinfo, proto_tree *tree, char *drep)
4313 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4314 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_REF,
4315 "DOMAIN_CONTROLLER_INFO* pointer: info", -1, 0);
4317 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4318 hf_netlogon_rc, NULL);
4324 netlogon_dissect_function_15_rqst(tvbuff_t *tvb, int offset,
4325 packet_info *pinfo, proto_tree *tree, char *drep)
4327 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4330 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4331 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4332 "unknown string", hf_netlogon_unknown_string, 0);
4334 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4337 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4338 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4339 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4341 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4342 hf_netlogon_unknown_long, NULL);
4349 netlogon_dissect_function_15_reply(tvbuff_t *tvb, int offset,
4350 packet_info *pinfo, proto_tree *tree, char *drep)
4352 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4353 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4354 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4356 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4357 netlogon_dissect_TYPE_44, NDR_POINTER_PTR,
4358 "TYPE_44 pointer: unknown_TYPE_44", -1, 0);
4360 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4361 hf_netlogon_rc, NULL);
4367 netlogon_dissect_function_16_rqst(tvbuff_t *tvb, int offset,
4368 packet_info *pinfo, proto_tree *tree, char *drep)
4370 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4373 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4374 hf_netlogon_unknown_long, NULL);
4376 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4377 hf_netlogon_unknown_long, NULL);
4384 netlogon_dissect_function_16_reply(tvbuff_t *tvb, int offset,
4385 packet_info *pinfo, proto_tree *tree, char *drep)
4387 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4388 hf_netlogon_rc, NULL);
4394 netlogon_dissect_function_17_rqst(tvbuff_t *tvb, int offset,
4395 packet_info *pinfo, proto_tree *tree, char *drep)
4397 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4400 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4401 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4402 "unknown string", hf_netlogon_unknown_string, 0);
4409 netlogon_dissect_function_17_reply(tvbuff_t *tvb, int offset,
4410 packet_info *pinfo, proto_tree *tree, char *drep)
4412 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4413 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4414 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4416 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4417 hf_netlogon_rc, NULL);
4423 netlogon_dissect_function_18_rqst(tvbuff_t *tvb, int offset,
4424 packet_info *pinfo, proto_tree *tree, char *drep)
4426 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4429 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4430 hf_netlogon_unknown_long, NULL);
4432 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4433 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4434 "BYTE pointer: unknown_BYTE", -1, 0);
4436 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4437 hf_netlogon_unknown_long, NULL);
4443 netlogon_dissect_BYTE_16_array(tvbuff_t *tvb, int offset,
4444 packet_info *pinfo, proto_tree *tree, char *drep)
4449 offset = dissect_ndr_uint8(tvb, offset, pinfo, tree, drep,
4450 hf_netlogon_unknown_char, NULL);
4457 netlogon_dissect_function_18_reply(tvbuff_t *tvb, int offset,
4458 packet_info *pinfo, proto_tree *tree, char *drep)
4460 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4461 netlogon_dissect_BYTE_16_array, NDR_POINTER_PTR,
4462 "BYTE pointer: unknown_BYTE", -1, 0);
4464 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4465 hf_netlogon_rc, NULL);
4471 netlogon_dissect_function_19_rqst(tvbuff_t *tvb, int offset,
4472 packet_info *pinfo, proto_tree *tree, char *drep)
4474 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4477 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4478 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4479 "unknown string", hf_netlogon_unknown_string, 0);
4481 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4482 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4483 "BYTE pointer: unknown_BYTE", -1, 0);
4485 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4486 hf_netlogon_unknown_long, NULL);
4493 netlogon_dissect_function_19_reply(tvbuff_t *tvb, int offset,
4494 packet_info *pinfo, proto_tree *tree, char *drep)
4496 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4497 netlogon_dissect_BYTE_16_array, NDR_POINTER_PTR,
4498 "BYTE pointer: unknown_BYTE", -1, 0);
4500 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4501 hf_netlogon_rc, NULL);
4507 netlogon_dissect_netserverauthenticate3_rqst(tvbuff_t *tvb, int offset,
4508 packet_info *pinfo, proto_tree *tree, char *drep)
4510 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4513 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4514 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4515 "Acct Name", hf_netlogon_acct_name, 0);
4517 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4520 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4521 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4522 "Computer Name", hf_netlogon_computer_name, 0);
4524 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4525 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4526 "NETLOGON_CREDENTIAL pointer: authenticator", -1, 0);
4528 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4529 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4530 "ULONG pointer: negotiate_flags", hf_netlogon_unknown_long, 0);
4537 netlogon_dissect_netserverauthenticate3_reply(tvbuff_t *tvb, int offset,
4538 packet_info *pinfo, proto_tree *tree, char *drep)
4540 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4541 netlogon_dissect_NETLOGON_CREDENTIAL, NDR_POINTER_REF,
4542 "NETLOGON_CREDENTIAL pointer: unknown_NETLOGON_CREDENTIAL", -1, 0);
4544 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4545 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4546 "ULONG pointer: negotiate_flags", hf_netlogon_unknown_long, 0);
4548 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4549 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4550 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4552 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4553 hf_netlogon_rc, NULL);
4559 netlogon_dissect_dsrgetdcname_rqst(tvbuff_t *tvb, int offset,
4560 packet_info *pinfo, proto_tree *tree, char *drep)
4562 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4565 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4566 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4567 "Domain", hf_netlogon_logon_dom, 0);
4569 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4570 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4571 "GUID pointer: domain_guid", -1, 0);
4573 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4574 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4575 "Site Name", hf_netlogon_site_name, 0);
4577 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4578 hf_netlogon_flags, NULL);
4585 netlogon_dissect_dsrgetdcname_reply(tvbuff_t *tvb, int offset,
4586 packet_info *pinfo, proto_tree *tree, char *drep)
4588 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4589 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr, NDR_POINTER_REF,
4590 "DOMAIN_CONTROLLER_INFO* pointer: info", -1, 0);
4592 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4593 hf_netlogon_rc, NULL);
4599 netlogon_dissect_dsrgetsitename_rqst(tvbuff_t *tvb, int offset,
4600 packet_info *pinfo, proto_tree *tree, char *drep)
4602 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4610 netlogon_dissect_dsrgetsitename_reply(tvbuff_t *tvb, int offset,
4611 packet_info *pinfo, proto_tree *tree, char *drep)
4614 offset = netlogon_dissect_UNICODE_STRING(tvb, offset, pinfo, tree, drep,
4615 NDR_POINTER_REF, hf_netlogon_site_name, 0);
4617 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4618 hf_netlogon_rc, NULL);
4624 netlogon_dissect_function_1d_rqst(tvbuff_t *tvb, int offset,
4625 packet_info *pinfo, proto_tree *tree, char *drep)
4627 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4630 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4631 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4632 "Computer Name", hf_netlogon_computer_name, 0);
4634 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4637 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4638 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4639 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4641 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4642 hf_netlogon_unknown_long, NULL);
4644 offset = netlogon_dissect_TYPE_45(tvb, offset,
4652 netlogon_dissect_function_1d_reply(tvbuff_t *tvb, int offset,
4653 packet_info *pinfo, proto_tree *tree, char *drep)
4655 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4656 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4657 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4659 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4660 netlogon_dissect_TYPE_47, NDR_POINTER_PTR,
4661 "TYPE_47 pointer: unknown_TYPE_47", -1, 0);
4663 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4664 hf_netlogon_rc, NULL);
4670 netlogon_dissect_function_1e_rqst(tvbuff_t *tvb, int offset,
4671 packet_info *pinfo, proto_tree *tree, char *drep)
4673 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4676 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4677 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4678 "unknown string", hf_netlogon_unknown_string, 0);
4680 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4681 hf_netlogon_unknown_short, NULL);
4683 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4684 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4685 "unknown string", hf_netlogon_unknown_string, 0);
4687 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4690 offset = netlogon_dissect_UNICODE_STRING_512(tvb, offset,
4698 netlogon_dissect_function_1e_reply(tvbuff_t *tvb, int offset,
4699 packet_info *pinfo, proto_tree *tree, char *drep)
4701 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4702 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4703 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4705 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4706 hf_netlogon_rc, NULL);
4712 netlogon_dissect_netserverpasswordset2_rqst(tvbuff_t *tvb, int offset,
4713 packet_info *pinfo, proto_tree *tree, char *drep)
4715 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4718 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4719 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4720 "Acct Name", hf_netlogon_acct_name, 0);
4722 offset = netlogon_dissect_NETLOGON_SECURE_CHANNEL_TYPE(tvb, offset,
4725 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4726 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4727 "Computer Name", hf_netlogon_computer_name, 0);
4729 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4730 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4731 "NETLOGON_AUTHENTICATOR pointer: client_cred", -1, 0);
4738 netlogon_dissect_netserverpasswordset2_reply(tvbuff_t *tvb, int offset,
4739 packet_info *pinfo, proto_tree *tree, char *drep)
4741 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4742 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_REF,
4743 "NETLOGON_AUTHENTICATOR pointer: server_cred", -1, 0);
4745 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4746 netlogon_dissect_LM_OWF_PASSWORD, NDR_POINTER_REF,
4747 "LM_OWF_PASSWORD pointer: server_pwd", -1, 0);
4749 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4750 hf_netlogon_rc, NULL);
4756 netlogon_dissect_function_20_rqst(tvbuff_t *tvb, int offset,
4757 packet_info *pinfo, proto_tree *tree, char *drep)
4759 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4762 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4763 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
4764 "unknown string", hf_netlogon_unknown_string, -1);
4766 offset = netlogon_dissect_NETLOGON_AUTHENTICATOR(tvb, offset,
4769 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4770 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4771 "BYTE pointer: unknown_BYTE", -1, 0);
4773 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4774 hf_netlogon_unknown_long, NULL);
4781 netlogon_dissect_function_20_reply(tvbuff_t *tvb, int offset,
4782 packet_info *pinfo, proto_tree *tree, char *drep)
4784 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4785 netlogon_dissect_NETLOGON_AUTHENTICATOR, NDR_POINTER_PTR,
4786 "NETLOGON_AUTHENTICATOR pointer: unknown_NETLOGON_AUTHENTICATOR", -1, 0);
4788 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4789 hf_netlogon_rc, NULL);
4795 netlogon_dissect_function_21_rqst(tvbuff_t *tvb, int offset,
4796 packet_info *pinfo, proto_tree *tree, char *drep)
4798 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4801 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4802 hf_netlogon_unknown_long, NULL);
4804 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4805 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4806 "BYTE pointer: unknown_BYTE", -1, 0);
4813 netlogon_dissect_function_21_reply(tvbuff_t *tvb, int offset,
4814 packet_info *pinfo, proto_tree *tree, char *drep)
4816 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4817 netlogon_dissect_TYPE_50_ptr_ptr, NDR_POINTER_REF,
4818 "TYPE_50** pointer: unknown_TYPE_50", -1, 0);
4820 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4821 hf_netlogon_rc, NULL);
4827 netlogon_dissect_function_22_rqst(tvbuff_t *tvb, int offset,
4828 packet_info *pinfo, proto_tree *tree, char *drep)
4830 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4833 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4834 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4835 "unknown string", hf_netlogon_unknown_string, 0);
4837 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4838 hf_netlogon_unknown_long, NULL);
4840 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4841 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4842 "unknown string", hf_netlogon_unknown_string, 0);
4844 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4845 dissect_nt_GUID, NDR_POINTER_UNIQUE,
4846 "GUID pointer: unknown_GUID", -1, 0);
4848 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4849 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4850 "unknown string", hf_netlogon_unknown_string, 0);
4852 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4853 hf_netlogon_unknown_long, NULL);
4860 netlogon_dissect_function_22_reply(tvbuff_t *tvb, int offset,
4861 packet_info *pinfo, proto_tree *tree, char *drep)
4863 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4864 netlogon_dissect_DOMAIN_CONTROLLER_INFO_ptr_ptr, NDR_POINTER_REF,
4865 "DOMAIN_CONTROLLER_INFO** pointer: unknown_DOMAIN_CONTROLLER_INFO", -1, 0);
4867 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4868 hf_netlogon_rc, NULL);
4874 netlogon_dissect_function_23_rqst(tvbuff_t *tvb, int offset,
4875 packet_info *pinfo, proto_tree *tree, char *drep)
4877 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4885 netlogon_dissect_function_23_reply(tvbuff_t *tvb, int offset,
4886 packet_info *pinfo, proto_tree *tree, char *drep)
4888 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4889 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
4890 "unknown string", hf_netlogon_unknown_string, -1);
4892 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4893 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
4894 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
4896 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4897 hf_netlogon_rc, NULL);
4903 netlogon_dissect_function_24_rqst(tvbuff_t *tvb, int offset,
4904 packet_info *pinfo, proto_tree *tree, char *drep)
4906 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4914 netlogon_dissect_function_24_reply(tvbuff_t *tvb, int offset,
4915 packet_info *pinfo, proto_tree *tree, char *drep)
4917 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4918 netlogon_dissect_TYPE_51, NDR_POINTER_PTR,
4919 "TYPE_51 pointer: unknown_TYPE_51", -1, 0);
4921 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4922 hf_netlogon_rc, NULL);
4928 netlogon_dissect_function_25_rqst(tvbuff_t *tvb, int offset,
4929 packet_info *pinfo, proto_tree *tree, char *drep)
4931 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
4934 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4935 hf_netlogon_unknown_long, NULL);
4937 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4938 netlogon_dissect_BYTE_array, NDR_POINTER_PTR,
4939 "BYTE pointer: unknown_BYTE", -1, 0);
4946 netlogon_dissect_function_25_reply(tvbuff_t *tvb, int offset,
4947 packet_info *pinfo, proto_tree *tree, char *drep)
4949 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4950 netlogon_dissect_TYPE_52_ptr_ptr, NDR_POINTER_REF,
4951 "TYPE_52** pointer: unknown_TYPE_52", -1, 0);
4953 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4954 hf_netlogon_rc, NULL);
4961 netlogon_dissect_function_26_rqst(tvbuff_t *tvb, int offset,
4962 packet_info *pinfo, proto_tree *tree, char *drep)
4964 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4965 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4966 "unknown string", hf_netlogon_unknown_string, 0);
4973 netlogon_dissect_function_26_reply(tvbuff_t *tvb, int offset,
4974 packet_info *pinfo, proto_tree *tree, char *drep)
4976 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4977 netlogon_dissect_TYPE_50_ptr_ptr, NDR_POINTER_REF,
4978 "TYPE_50** pointer: unknown_TYPE_50", -1, 0);
4980 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
4981 hf_netlogon_rc, NULL);
4987 netlogon_dissect_function_27_rqst(tvbuff_t *tvb, int offset,
4988 packet_info *pinfo, proto_tree *tree, char *drep)
4990 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4991 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4992 "unknown string", hf_netlogon_unknown_string, 0);
4994 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
4995 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
4996 "unknown string", hf_netlogon_unknown_string, 0);
4998 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
4999 hf_netlogon_unknown_short, NULL);
5001 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5002 netlogon_dissect_NETLOGON_LEVEL, NDR_POINTER_PTR,
5003 "NETLOGON_LEVEL pointer: unknown_NETLOGON_LEVEL", -1, 0);
5005 offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
5006 hf_netlogon_unknown_short, NULL);
5008 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5009 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
5010 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
5016 netlogon_dissect_function_27_reply(tvbuff_t *tvb, int offset,
5017 packet_info *pinfo, proto_tree *tree, char *drep)
5019 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5020 netlogon_dissect_NETLOGON_VALIDATION, NDR_POINTER_PTR,
5021 "NETLOGON_VALIDATION pointer: unknown_NETLOGON_VALIDATION", -1, 0);
5023 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5024 netlogon_dissect_pointer_char, NDR_POINTER_PTR,
5025 "BOOLEAN pointer: unknown_BOOLEAN", hf_netlogon_unknown_char, 0);
5027 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5028 netlogon_dissect_pointer_long, NDR_POINTER_PTR,
5029 "ULONG pointer: unknown_ULONG", hf_netlogon_unknown_long, 0);
5031 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
5032 hf_netlogon_rc, NULL);
5038 netlogon_dissect_dsrrolegetprimarydomaininformation_rqst(tvbuff_t *tvb, int offset,
5039 packet_info *pinfo, proto_tree *tree, char *drep)
5041 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
5044 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
5045 hf_netlogon_unknown_long, NULL);
5052 netlogon_dissect_dsrrolegetprimarydomaininformation_reply(tvbuff_t *tvb, int offset,
5053 packet_info *pinfo, proto_tree *tree, char *drep)
5055 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5056 netlogon_dissect_TYPE_51, NDR_POINTER_PTR,
5057 "TYPE_51 pointer: unknown_TYPE_51", -1, 0);
5059 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
5060 hf_netlogon_rc, NULL);
5066 netlogon_dissect_dsrderegisterdnshostrecords_rqst(tvbuff_t *tvb, int offset,
5067 packet_info *pinfo, proto_tree *tree, char *drep)
5069 offset = netlogon_dissect_LOGONSRV_HANDLE(tvb, offset,
5072 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5073 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_UNIQUE,
5074 "Domain", hf_netlogon_logon_dom, 0);
5076 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5077 dissect_nt_GUID, NDR_POINTER_UNIQUE,
5078 "GUID pointer: domain_guid", -1, 0);
5080 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5081 dissect_nt_GUID, NDR_POINTER_UNIQUE,
5082 "GUID pointer: dsa_guid", -1, 0);
5084 offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
5085 dissect_ndr_nt_UNICODE_STRING_str, NDR_POINTER_PTR,
5086 "dns_host", hf_netlogon_dns_host, -1);
5093 netlogon_dissect_dsrderegisterdnshostrecords_reply(tvbuff_t *tvb, int offset,
5094 packet_info *pinfo, proto_tree *tree, char *drep)
5096 offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
5097 hf_netlogon_rc, NULL);
5104 static dcerpc_sub_dissector dcerpc_netlogon_dissectors[] = {
5105 { NETLOGON_FUNCTION_00, "FUNCTION_00",
5106 netlogon_dissect_function_00_rqst,
5107 netlogon_dissect_function_00_reply },
5108 { NETLOGON_FUNCTION_01, "FUNCTION_01",
5109 netlogon_dissect_function_01_rqst,
5110 netlogon_dissect_function_01_reply },
5111 { NETLOGON_NETLOGONSAMLOGON, "NETLOGONSAMLOGON",
5112 netlogon_dissect_netlogonsamlogon_rqst,
5113 netlogon_dissect_netlogonsamlogon_reply },
5114 { NETLOGON_NETLOGONSAMLOGOFF, "NETLOGONSAMLOGOFF",
5115 netlogon_dissect_netlogonsamlogoff_rqst,
5116 netlogon_dissect_netlogonsamlogoff_reply },
5117 { NETLOGON_NETSERVERREQCHALLENGE, "NETSERVERREQCHALLENGE",
5118 netlogon_dissect_netserverreqchallenge_rqst,
5119 netlogon_dissect_netserverreqchallenge_reply },
5120 { NETLOGON_NETSERVERAUTHENTICATE, "NETSERVERAUTHENTICATE",
5121 netlogon_dissect_netserverauthenticate_rqst,
5122 netlogon_dissect_netserverauthenticate_reply },
5123 { NETLOGON_NETSERVERPASSWORDSET, "NETSERVERPASSWORDSET",
5124 netlogon_dissect_netserverpasswordset_rqst,
5125 netlogon_dissect_netserverpasswordset_reply },
5126 { NETLOGON_NETSAMDELTAS, "NETSAMDELTAS",
5127 netlogon_dissect_netsamdeltas_rqst,
5128 netlogon_dissect_netsamdeltas_reply },
5129 { NETLOGON_FUNCTION_08, "FUNCTION_08",
5130 netlogon_dissect_function_08_rqst,
5131 netlogon_dissect_function_08_reply },
5132 { NETLOGON_FUNCTION_09, "FUNCTION_09",
5133 netlogon_dissect_function_09_rqst,
5134 netlogon_dissect_function_09_reply },
5135 { NETLOGON_FUNCTION_0A, "FUNCTION_0A",
5136 netlogon_dissect_function_0a_rqst,
5137 netlogon_dissect_function_0a_reply },
5138 { NETLOGON_FUNCTION_0B, "FUNCTION_0B",
5139 netlogon_dissect_function_0b_rqst,
5140 netlogon_dissect_function_0b_reply },
5141 { NETLOGON_NETLOGONCONTROL, "NETLOGONCONTROL",
5142 netlogon_dissect_netlogoncontrol_rqst,
5143 netlogon_dissect_netlogoncontrol_reply },
5144 { NETLOGON_FUNCTION_0D, "FUNCTION_0D",
5145 netlogon_dissect_function_0d_rqst,
5146 netlogon_dissect_function_0d_reply },
5147 { NETLOGON_NETLOGONCONTROL2, "NETLOGONCONTROL2",
5148 netlogon_dissect_netlogoncontrol2_rqst,
5149 netlogon_dissect_netlogoncontrol2_reply },
5150 { NETLOGON_NETSERVERAUTHENTICATE2, "NETSERVERAUTHENTICATE2",
5151 netlogon_dissect_netserverauthenticate2_rqst,
5152 netlogon_dissect_netserverauthenticate2_reply },
5153 { NETLOGON_NETDATABASESYNC2, "NETDATABASESYNC2",
5154 netlogon_dissect_netdatabasesync2_rqst,
5155 netlogon_dissect_netdatabasesync2_reply },
5156 { NETLOGON_FUNCTION_11, "FUNCTION_11",
5157 netlogon_dissect_function_11_rqst,
5158 netlogon_dissect_function_11_reply },
5159 { NETLOGON_FUNCTION_12, "FUNCTION_12",
5160 netlogon_dissect_function_12_rqst,
5161 netlogon_dissect_function_12_reply },
5162 { NETLOGON_NETTRUSTEDDOMAINLIST, "NETTRUSTEDDOMAINLIST",
5163 netlogon_dissect_nettrusteddomainlist_rqst,
5164 netlogon_dissect_nettrusteddomainlist_reply },
5165 { NETLOGON_DSRGETDCNAME2, "DSRGETDCNAME2",
5166 netlogon_dissect_dsrgetdcname2_rqst,
5167 netlogon_dissect_dsrgetdcname2_reply },
5168 { NETLOGON_FUNCTION_15, "FUNCTION_15",
5169 netlogon_dissect_function_15_rqst,
5170 netlogon_dissect_function_15_reply },
5171 { NETLOGON_FUNCTION_16, "FUNCTION_16",
5172 netlogon_dissect_function_16_rqst,
5173 netlogon_dissect_function_16_reply },
5174 { NETLOGON_FUNCTION_17, "FUNCTION_17",
5175 netlogon_dissect_function_17_rqst,
5176 netlogon_dissect_function_17_reply },
5177 { NETLOGON_FUNCTION_18, "FUNCTION_18",
5178 netlogon_dissect_function_18_rqst,
5179 netlogon_dissect_function_18_reply },
5180 { NETLOGON_FUNCTION_19, "FUNCTION_19",
5181 netlogon_dissect_function_19_rqst,
5182 netlogon_dissect_function_19_reply },
5183 { NETLOGON_NETSERVERAUTHENTICATE3, "NETSERVERAUTHENTICATE3",
5184 netlogon_dissect_netserverauthenticate3_rqst,
5185 netlogon_dissect_netserverauthenticate3_reply },
5186 { NETLOGON_DSRGETDCNAME, "DSRGETDCNAME",
5187 netlogon_dissect_dsrgetdcname_rqst,
5188 netlogon_dissect_dsrgetdcname_reply },
5189 { NETLOGON_DSRGETSITENAME, "DSRGETSITENAME",
5190 netlogon_dissect_dsrgetsitename_rqst,
5191 netlogon_dissect_dsrgetsitename_reply },
5192 { NETLOGON_FUNCTION_1D, "FUNCTION_1D",
5193 netlogon_dissect_function_1d_rqst,
5194 netlogon_dissect_function_1d_reply },
5195 { NETLOGON_FUNCTION_1E, "FUNCTION_1E",
5196 netlogon_dissect_function_1e_rqst,
5197 netlogon_dissect_function_1e_reply },
5198 { NETLOGON_NETSERVERPASSWORDSET2, "NETSERVERPASSWORDSET2",
5199 netlogon_dissect_netserverpasswordset2_rqst,
5200 netlogon_dissect_netserverpasswordset2_reply },
5201 { NETLOGON_FUNCTION_20, "FUNCTION_20",
5202 netlogon_dissect_function_20_rqst,
5203 netlogon_dissect_function_20_reply },
5204 { NETLOGON_FUNCTION_21, "FUNCTION_21",
5205 netlogon_dissect_function_21_rqst,
5206 netlogon_dissect_function_21_reply },
5207 { NETLOGON_FUNCTION_22, "FUNCTION_22",
5208 netlogon_dissect_function_22_rqst,
5209 netlogon_dissect_function_22_reply },
5210 { NETLOGON_FUNCTION_23, "FUNCTION_23",
5211 netlogon_dissect_function_23_rqst,
5212 netlogon_dissect_function_23_reply },
5213 { NETLOGON_FUNCTION_24, "FUNCTION_24",
5214 netlogon_dissect_function_24_rqst,
5215 netlogon_dissect_function_24_reply },
5216 { NETLOGON_FUNCTION_25, "FUNCTION_25",
5217 netlogon_dissect_function_25_rqst,
5218 netlogon_dissect_function_25_reply },
5219 { NETLOGON_FUNCTION_26, "FUNCTION_26",
5220 netlogon_dissect_function_26_rqst,
5221 netlogon_dissect_function_26_reply },
5222 { NETLOGON_FUNCTION_27, "FUNCTION_27",
5223 netlogon_dissect_function_27_rqst,
5224 netlogon_dissect_function_27_reply },
5225 { NETLOGON_DSRROLEGETPRIMARYDOMAININFORMATION, "DSRROLEGETPRIMARYDOMAININFORMATION",
5226 netlogon_dissect_dsrrolegetprimarydomaininformation_rqst,
5227 netlogon_dissect_dsrrolegetprimarydomaininformation_reply },
5228 { NETLOGON_DSRDEREGISTERDNSHOSTRECORDS, "DSRDEREGISTERDNSHOSTRECORDS",
5229 netlogon_dissect_dsrderegisterdnshostrecords_rqst,
5230 netlogon_dissect_dsrderegisterdnshostrecords_reply },
5231 {0, NULL, NULL, NULL },
5234 static void netlogon_init(void)
5236 /* Initialise DCERPC/SMB data structures */
5242 proto_register_dcerpc_netlogon(void)
5245 static hf_register_info hf[] = {
5246 { &hf_netlogon_rc, {
5247 "Return code", "netlogon.rc", FT_UINT32, BASE_HEX,
5248 VALS(NT_errors), 0x0, "Netlogon return code", HFILL }},
5250 { &hf_netlogon_param_ctrl, {
5251 "Param Ctrl", "netlogon.param_ctrl", FT_UINT32, BASE_HEX,
5252 NULL, 0x0, "Param ctrl", HFILL }},
5254 { &hf_netlogon_logon_id, {
5255 "Logon ID", "netlogon.logon_id", FT_UINT64, BASE_DEC,
5256 NULL, 0x0, "Logon ID", HFILL }},
5258 { &hf_netlogon_count, {
5259 "Count", "netlogon.count", FT_UINT16, BASE_DEC,
5260 NULL, 0x0, "", HFILL }},
5262 { &hf_netlogon_credential, {
5263 "Credential", "netlogon.credential", FT_BYTES, BASE_HEX,
5264 NULL, 0x0, "Netlogon credential", HFILL }},
5266 { &hf_netlogon_cypher_block, {
5267 "Cypher Block", "netlogon.cypher_block", FT_BYTES, BASE_HEX,
5268 NULL, 0x0, "Netlogon cypher block", HFILL }},
5270 { &hf_netlogon_lm_owf_password, {
5271 "LM Pwd", "netlogon.lm_owf_pwd", FT_BYTES, BASE_HEX,
5272 NULL, 0x0, "LanManager OWF Password", HFILL }},
5274 { &hf_netlogon_user_session_key, {
5275 "User Session Key", "netlogon.user_session_key", FT_BYTES, BASE_HEX,
5276 NULL, 0x0, "User Session Key", HFILL }},
5278 { &hf_netlogon_encrypted_lm_owf_password, {
5279 "Encrypted LM Pwd", "netlogon.lm_owf_pwd.encrypted", FT_BYTES, BASE_HEX,
5280 NULL, 0x0, "Encrypted LanManager OWF Password", HFILL }},
5282 { &hf_netlogon_nt_owf_password, {
5283 "NT Pwd", "netlogon.nt_owf_pwd", FT_BYTES, BASE_HEX,
5284 NULL, 0x0, "NT OWF Password", HFILL }},
5286 { &hf_netlogon_blob, {
5287 "BLOB", "netlogon.blob", FT_BYTES, BASE_HEX,
5288 NULL, 0x0, "BLOB", HFILL }},
5290 { &hf_netlogon_len, {
5291 "Len", "netlogon.len", FT_UINT32, BASE_DEC,
5292 NULL, 0, "Length", HFILL }},
5294 { &hf_netlogon_status, {
5295 "Status", "netlogon.status", FT_UINT32, BASE_DEC,
5296 NULL, 0, "Status", HFILL }},
5298 { &hf_netlogon_attrs, {
5299 "Attributes", "netlogon.attrs", FT_UINT32, BASE_HEX,
5300 NULL, 0, "Attributes", HFILL }},
5302 { &hf_netlogon_unknown_string,
5303 { "Unknown string", "netlogon.unknown_string", FT_STRING, BASE_NONE,
5304 NULL, 0, "Unknown string. If you know what this is, contact ethereal developers.", HFILL }},
5305 { &hf_netlogon_unknown_long,
5306 { "Unknown long", "netlogon.unknown.long", FT_UINT32, BASE_HEX,
5307 NULL, 0x0, "Unknown long. If you know what this is, contact ethereal developers.", HFILL }},
5308 { &hf_netlogon_unknown_short,
5309 { "Unknown short", "netlogon.unknown.short", FT_UINT16, BASE_HEX,
5310 NULL, 0x0, "Unknown short. If you know what this is, contact ethereal developers.", HFILL }},
5312 { &hf_netlogon_unknown_char,
5313 { "Unknown char", "netlogon.unknown.char", FT_UINT8, BASE_HEX,
5314 NULL, 0x0, "Unknown char. If you know what this is, contact ethereal developers.", HFILL }},
5316 { &hf_netlogon_unknown_time,
5317 { "Unknown time", "netlogon.unknown.time", FT_ABSOLUTE_TIME, BASE_NONE,
5318 NULL, 0x0, "Unknown time. If you know what this is, contact ethereal developers.", HFILL }},
5320 { &hf_netlogon_acct_expiry_time,
5321 { "Acct Expiry Time", "netlogon.acct.expiry_time", FT_ABSOLUTE_TIME, BASE_NONE,
5322 NULL, 0x0, "When this account will expire", HFILL }},
5324 { &hf_netlogon_nt_pwd_present,
5325 { "NT PWD Present", "netlogon.nt_pwd_present", FT_UINT8, BASE_HEX,
5326 NULL, 0x0, "Is NT password present for this account?", HFILL }},
5328 { &hf_netlogon_lm_pwd_present,
5329 { "LM PWD Present", "netlogon.lm_pwd_present", FT_UINT8, BASE_HEX,
5330 NULL, 0x0, "Is LanManager password present for this account?", HFILL }},
5332 { &hf_netlogon_pwd_expired,
5333 { "PWD Expired", "netlogon.pwd_expired", FT_UINT8, BASE_HEX,
5334 NULL, 0x0, "Whether this password has expired or not", HFILL }},
5336 { &hf_netlogon_num_pwd_pairs,
5337 { "Num PWD Pairs", "netlogon.num_pwd_pairs", FT_UINT8, BASE_DEC,
5338 NULL, 0x0, "Number of password pairs. Password history length?", HFILL }},
5340 { &hf_netlogon_authoritative,
5341 { "Authoritative", "netlogon.authoritative", FT_UINT8, BASE_DEC,
5342 NULL, 0x0, "", HFILL }},
5344 { &hf_netlogon_nt_chal_resp,
5345 { "NT Chal resp", "netlogon.nt_chal_resp", FT_BYTES, BASE_HEX,
5346 NULL, 0, "Challenge response for NT authentication", HFILL }},
5348 { &hf_netlogon_lm_chal_resp,
5349 { "LM Chal resp", "netlogon.lm_chal_resp", FT_BYTES, BASE_HEX,
5350 NULL, 0, "Challenge response for LM authentication", HFILL }},
5352 { &hf_netlogon_lsa_secret,
5353 { "LSA Secret", "netlogon.lsa.secret", FT_BYTES, BASE_HEX,
5354 NULL, 0, "", HFILL }},
5356 { &hf_netlogon_acct_name,
5357 { "Acct Name", "netlogon.acct_name", FT_STRING, BASE_NONE,
5358 NULL, 0, "Account Name", HFILL }},
5360 { &hf_netlogon_acct_desc,
5361 { "Acct Desc", "netlogon.acct_desc", FT_STRING, BASE_NONE,
5362 NULL, 0, "Account Description", HFILL }},
5364 { &hf_netlogon_group_desc,
5365 { "Group Desc", "netlogon.group_desc", FT_STRING, BASE_NONE,
5366 NULL, 0, "Group Description", HFILL }},
5368 { &hf_netlogon_full_name,
5369 { "Full Name", "netlogon.full_name", FT_STRING, BASE_NONE,
5370 NULL, 0, "Full Name", HFILL }},
5372 { &hf_netlogon_comment,
5373 { "Comment", "netlogon.comment", FT_STRING, BASE_NONE,
5374 NULL, 0, "Comment", HFILL }},
5376 { &hf_netlogon_parameters,
5377 { "Parameters", "netlogon.parameters", FT_STRING, BASE_NONE,
5378 NULL, 0, "Parameters", HFILL }},
5380 { &hf_netlogon_logon_script,
5381 { "Logon Script", "netlogon.logon_script", FT_STRING, BASE_NONE,
5382 NULL, 0, "Logon Script", HFILL }},
5384 { &hf_netlogon_profile_path,
5385 { "Profile Path", "netlogon.profile_path", FT_STRING, BASE_NONE,
5386 NULL, 0, "Profile Path", HFILL }},
5388 { &hf_netlogon_home_dir,
5389 { "Home Dir", "netlogon.home_dir", FT_STRING, BASE_NONE,
5390 NULL, 0, "Home Directory", HFILL }},
5392 { &hf_netlogon_dir_drive,
5393 { "Dir Drive", "netlogon.dir_drive", FT_STRING, BASE_NONE,
5394 NULL, 0, "Drive letter for home directory", HFILL }},
5396 { &hf_netlogon_logon_srv,
5397 { "Server", "netlogon.server", FT_STRING, BASE_NONE,
5398 NULL, 0, "Server", HFILL }},
5400 { &hf_netlogon_logon_dom,
5401 { "Domain", "netlogon.domain", FT_STRING, BASE_NONE,
5402 NULL, 0, "Domain", HFILL }},
5404 { &hf_netlogon_computer_name,
5405 { "Computer Name", "netlogon.computer_name", FT_STRING, BASE_NONE,
5406 NULL, 0, "Computer Name", HFILL }},
5408 { &hf_netlogon_site_name,
5409 { "Site Name", "netlogon.site_name", FT_STRING, BASE_NONE,
5410 NULL, 0, "Site Name", HFILL }},
5412 { &hf_netlogon_dc_name,
5413 { "DC Name", "netlogon.dc.name", FT_STRING, BASE_NONE,
5414 NULL, 0, "DC Name", HFILL }},
5416 { &hf_netlogon_dc_site_name,
5417 { "DC Site Name", "netlogon.dc.site_name", FT_STRING, BASE_NONE,
5418 NULL, 0, "DC Site Name", HFILL }},
5420 { &hf_netlogon_dns_forest_name,
5421 { "DNS Forest Name", "netlogon.dns.forest_name", FT_STRING, BASE_NONE,
5422 NULL, 0, "DNS Forest Name", HFILL }},
5424 { &hf_netlogon_dc_address,
5425 { "DC Address", "netlogon.dc.address", FT_STRING, BASE_NONE,
5426 NULL, 0, "DC Address", HFILL }},
5428 { &hf_netlogon_dc_address_type,
5429 { "DC Address Type", "netlogon.dc.address_type", FT_UINT32, BASE_DEC,
5430 NULL, 0, "DC Address Type", HFILL }},
5432 { &hf_netlogon_client_name,
5433 { "Client Name", "netlogon.client.name", FT_STRING, BASE_NONE,
5434 NULL, 0, "Client Name", HFILL }},
5436 { &hf_netlogon_client_site_name,
5437 { "Client Site Name", "netlogon.client.site_name", FT_STRING, BASE_NONE,
5438 NULL, 0, "Client Site Name", HFILL }},
5440 { &hf_netlogon_workstation_site_name,
5441 { "Wkst Site Name", "netlogon.wkst.site_name", FT_STRING, BASE_NONE,
5442 NULL, 0, "Workstation Site Name", HFILL }},
5444 { &hf_netlogon_workstation_os,
5445 { "Wkst OS", "netlogon.wkst.os", FT_STRING, BASE_NONE,
5446 NULL, 0, "Workstation OS", HFILL }},
5448 { &hf_netlogon_workstations,
5449 { "Workstations", "netlogon.wksts", FT_STRING, BASE_NONE,
5450 NULL, 0, "Workstations", HFILL }},
5452 { &hf_netlogon_workstation_fqdn,
5453 { "Wkst FQDN", "netlogon.wkst.fqdn", FT_STRING, BASE_NONE,
5454 NULL, 0, "Workstation FQDN", HFILL }},
5456 { &hf_netlogon_group_name,
5457 { "Group Name", "netlogon.group_name", FT_STRING, BASE_NONE,
5458 NULL, 0, "Group Name", HFILL }},
5460 { &hf_netlogon_alias_name,
5461 { "Alias Name", "netlogon.alias_name", FT_STRING, BASE_NONE,
5462 NULL, 0, "Alias Name", HFILL }},
5464 { &hf_netlogon_cli_name,
5465 { "CLI Name", "netlogon.cli_name", FT_STRING, BASE_NONE,
5466 NULL, 0, "CLI Name", HFILL }},
5468 { &hf_netlogon_dns_host,
5469 { "DNS Host", "netlogon.dns_host", FT_STRING, BASE_NONE,
5470 NULL, 0, "DNS Host", HFILL }},
5472 { &hf_netlogon_trusted_domain_name,
5473 { "Trusted Domain", "netlogon.trusted_domain", FT_STRING, BASE_NONE,
5474 NULL, 0, "Trusted Domain Name", HFILL }},
5476 { &hf_netlogon_trusted_dc_name,
5477 { "Trusted DC", "netlogon.trusted_dc", FT_STRING, BASE_NONE,
5478 NULL, 0, "Trusted DC", HFILL }},
5480 { &hf_netlogon_logonsrv_handle,
5481 { "Handle", "netlogon.handle", FT_STRING, BASE_NONE,
5482 NULL, 0, "Logon Srv Handle", HFILL }},
5484 { &hf_netlogon_logon_count,
5485 { "Logon Count", "netlogon.logon_count", FT_UINT16, BASE_DEC,
5486 NULL, 0x0, "Number of successful logins", HFILL }},
5488 { &hf_netlogon_bad_pw_count,
5489 { "Bad PW Count", "netlogon.bad_pw_count", FT_UINT16, BASE_DEC,
5490 NULL, 0x0, "Number of failed logins", HFILL }},
5492 { &hf_netlogon_country,
5493 { "Country", "netlogon.country", FT_UINT16, BASE_DEC,
5494 VALS(ms_country_codes), 0x0, "Country setting for this account", HFILL }},
5496 { &hf_netlogon_codepage,
5497 { "Codepage", "netlogon.codepage", FT_UINT16, BASE_DEC,
5498 NULL, 0x0, "Codepage setting for this account", HFILL }},
5500 { &hf_netlogon_level,
5501 { "Level", "netlogon.level", FT_UINT16, BASE_DEC,
5502 NULL, 0x0, "Which option of the union is represented here", HFILL }},
5504 { &hf_netlogon_secure_channel_type,
5505 { "Sec Chn Type", "netlogon.sec_chn_type", FT_UINT16, BASE_DEC,
5506 NULL, 0x0, "Secure Channel Type", HFILL }},
5508 { &hf_netlogon_blob_size,
5509 { "Size", "netlogon.blob.size", FT_UINT32, BASE_DEC,
5510 NULL, 0x0, "Size in bytes of BLOB", HFILL }},
5512 { &hf_netlogon_code,
5513 { "Code", "netlogon.code", FT_UINT32, BASE_HEX,
5514 NULL, 0x0, "Code", HFILL }},
5516 { &hf_netlogon_level_long,
5517 { "Level", "netlogon.level32", FT_UINT32, BASE_DEC,
5518 NULL, 0x0, "Which option of the union is represented here", HFILL }},
5520 { &hf_netlogon_timestamp,
5521 { "Timestamp", "netlogon.timestamp", FT_UINT32, BASE_HEX,
5522 NULL, 0x0, "Some sort of timestamp", HFILL }},
5524 { &hf_netlogon_user_rid,
5525 { "User RID", "netlogon.rid", FT_UINT32, BASE_DEC,
5526 NULL, 0x0, "", HFILL }},
5528 { &hf_netlogon_alias_rid,
5529 { "Alias RID", "netlogon.alias_rid", FT_UINT32, BASE_DEC,
5530 NULL, 0x0, "", HFILL }},
5532 { &hf_netlogon_group_rid,
5533 { "Group RID", "netlogon.group_rid", FT_UINT32, BASE_DEC,
5534 NULL, 0x0, "", HFILL }},
5536 { &hf_netlogon_num_rids,
5537 { "Num RIDs", "netlogon.num_rids", FT_UINT32, BASE_DEC,
5538 NULL, 0x0, "Number of RIDs", HFILL }},
5540 { &hf_netlogon_num_other_groups,
5541 { "Num Other Groups", "netlogon.num_other_groups", FT_UINT32, BASE_DEC,
5542 NULL, 0x0, "", HFILL }},
5544 { &hf_netlogon_flags,
5545 { "Flags", "netlogon.flags", FT_UINT32, BASE_HEX,
5546 NULL, 0x0, "", HFILL }},
5548 { &hf_netlogon_user_flags,
5549 { "User Flags", "netlogon.user_flags", FT_UINT32, BASE_HEX,
5550 NULL, 0x0, "", HFILL }},
5552 { &hf_netlogon_database_id,
5553 { "Database Id", "netlogon.database_id", FT_UINT32, BASE_DEC,
5554 NULL, 0x0, "Database Id", HFILL }},
5556 { &hf_netlogon_max_size,
5557 { "Max Size", "netlogon.max_size", FT_UINT32, BASE_DEC,
5558 NULL, 0x0, "Max Size of database", HFILL }},
5560 { &hf_netlogon_num_deltas,
5561 { "Num Deltas", "netlogon.num_deltas", FT_UINT32, BASE_DEC,
5562 NULL, 0x0, "Number of SAM Deltas in array", HFILL }},
5564 { &hf_netlogon_logon_attempts,
5565 { "Logon Attempts", "netlogon.logon_attempts", FT_UINT32, BASE_DEC,
5566 NULL, 0x0, "Number of logon attempts", HFILL }},
5568 { &hf_netlogon_lsa_sd_size,
5569 { "Size", "netlogon.lsa_sd_size", FT_UINT32, BASE_DEC,
5570 NULL, 0x0, "Size of lsa security descriptor", HFILL }},
5572 { &hf_netlogon_logon_time,
5573 { "Logon Time", "netlogon.logon_time", FT_ABSOLUTE_TIME, BASE_NONE,
5574 NULL, 0, "Time for last time this user logged on", HFILL }},
5576 { &hf_netlogon_kickoff_time,
5577 { "Kickoff Time", "netlogon.kickoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
5578 NULL, 0, "Time when this user will be kicked off", HFILL }},
5580 { &hf_netlogon_logoff_time,
5581 { "Logoff Time", "netlogon.logoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
5582 NULL, 0, "Time for last time this user logged off", HFILL }},
5584 { &hf_netlogon_pwd_last_set_time,
5585 { "PWD Last Set", "netlogon.pwd_last_set_time", FT_ABSOLUTE_TIME, BASE_NONE,
5586 NULL, 0, "Last time this users password was changed", HFILL }},
5588 { &hf_netlogon_pwd_can_change_time,
5589 { "PWD Can Change", "netlogon.pwd_can_change_time", FT_ABSOLUTE_TIME, BASE_NONE,
5590 NULL, 0, "When this users password may be changed", HFILL }},
5592 { &hf_netlogon_pwd_must_change_time,
5593 { "PWD Must Change", "netlogon.pwd_must_change_time", FT_ABSOLUTE_TIME, BASE_NONE,
5594 NULL, 0, "When this users password must be changed", HFILL }},
5598 static gint *ett[] = {
5599 &ett_dcerpc_netlogon,
5600 &ett_NETLOGON_SECURITY_DESCRIPTOR,
5604 &ett_NETLOGON_AUTHENTICATOR,
5605 &ett_NETLOGON_LOGON_IDENTITY_INFO,
5606 &ett_NETLOGON_INTERACTIVE_INFO,
5607 &ett_NETLOGON_NETWORK_INFO,
5608 &ett_NETLOGON_VALIDATION_SAM_INFO1,
5609 &ett_NETLOGON_VALIDATION_SAM_INFO2,
5611 &ett_NETLOGON_SAM_DOMAIN_INFO,
5612 &ett_NETLOGON_SAM_GROUP_INFO,
5614 &ett_NETLOGON_SAM_ACCOUNT_INFO,
5615 &ett_NETLOGON_SAM_GROUP_MEM_INFO,
5616 &ett_NETLOGON_SAM_ALIAS_INFO,
5617 &ett_NETLOGON_SAM_ALIAS_MEM_INFO,
5626 &ett_SAM_DELTA_ARRAY,
5628 &ett_NETLOGON_INFO_1,
5629 &ett_NETLOGON_INFO_2,
5630 &ett_NETLOGON_INFO_3,
5631 &ett_NETLOGON_INFO_4,
5633 &ett_DOMAIN_CONTROLLER_INFO,
5636 &ett_UNICODE_STRING_512,
5640 &ett_NETLOGON_LEVEL,
5641 &ett_NETLOGON_VALIDATION,
5643 &ett_NETLOGON_CONTROL_QUERY_INFO,
5649 &ett_NETLOGON_CREDENTIAL,
5651 &ett_ENC_LM_OWF_PASSWORD,
5652 &ett_LM_OWF_PASSWORD,
5653 &ett_NT_OWF_PASSWORD,
5654 &ett_GROUP_MEMBERSHIP,
5655 &ett_USER_SESSION_KEY,
5661 proto_dcerpc_netlogon = proto_register_protocol(
5662 "Microsoft Network Logon", "NETLOGON", "rpc_netlogon");
5664 proto_register_field_array(proto_dcerpc_netlogon, hf,
5666 proto_register_subtree_array(ett, array_length(ett));
5668 register_init_routine(netlogon_init);
5672 proto_reg_handoff_dcerpc_netlogon(void)
5674 /* Register protocol as dcerpc */
5676 dcerpc_init_uuid(proto_dcerpc_netlogon, ett_dcerpc_netlogon,
5677 &uuid_dcerpc_netlogon, ver_dcerpc_netlogon,
5678 dcerpc_netlogon_dissectors);