Ethereal-dev: [Ethereal-dev] [packet-dcerpc-samr.c] Multiple fixes
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Jean-Baptiste Marchand <Jean-Baptiste.Marchand@xxxxxx>
Date: Sun, 27 Jun 2004 23:06:49 +0200
Hello, the attached patch contains many small fixes for the samr dissector, based on test trafic generated with Samba 4 smbtorture utility and Samba 4 samr.idl. Jean-Baptiste -- Jean-Baptiste.Marchand@xxxxxx HSC - http://www.hsc.fr/
Index: packet-dcerpc-samr.c
===================================================================
RCS file: /cvsroot/ethereal/packet-dcerpc-samr.c,v
retrieving revision 1.110
diff -u -r1.110 packet-dcerpc-samr.c
--- packet-dcerpc-samr.c 26 Jun 2004 03:40:12 -0000 1.110
+++ packet-dcerpc-samr.c 27 Jun 2004 20:44:30 -0000
@@ -75,6 +75,7 @@
static int hf_samr_script = -1;
static int hf_samr_workstations = -1;
static int hf_samr_profile = -1;
+static int hf_samr_callback = -1;
static int hf_samr_server = -1;
static int hf_samr_domain = -1;
static int hf_samr_controller = -1;
@@ -112,12 +113,16 @@
static int hf_samr_country = -1;
static int hf_samr_codepage = -1;
static int hf_samr_comment = -1;
-static int hf_samr_parameters = -1;
static int hf_samr_nt_pwd_set = -1;
static int hf_samr_lm_pwd_set = -1;
static int hf_samr_pwd_expired = -1;
static int hf_samr_revision = -1;
static int hf_samr_info_type = -1;
+static int hf_samr_primary_group_rid = -1;
+static int hf_samr_group_num_of_members = -1;
+static int hf_samr_group_desc = -1;
+static int hf_samr_alias_num_of_members = -1;
+static int hf_samr_alias_desc = -1;
static int hf_samr_unknown_hyper = -1;
static int hf_samr_unknown_long = -1;
@@ -158,6 +163,7 @@
static gint ett_samr_user_info_3 = -1;
static gint ett_samr_user_info_5 = -1;
static gint ett_samr_user_info_6 = -1;
+static gint ett_samr_user_info_10 = -1;
static gint ett_samr_user_info_18 = -1;
static gint ett_samr_user_info_19 = -1;
static gint ett_samr_buffer_buffer = -1;
@@ -1465,7 +1471,7 @@
offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
dissect_ndr_counted_string_ptr, NDR_POINTER_REF,
- "Account Name", hf_samr_acct_name);
+ "Alias Name", hf_samr_alias_name);
offset = dissect_nt_access_mask(
tvb, offset, pinfo, tree, drep, hf_samr_access,
@@ -1528,11 +1534,11 @@
guint8 *drep)
{
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_name, 0);
+ tree, drep, hf_samr_alias_name, 0);
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_samr_rid, NULL);
+ hf_samr_alias_num_of_members, NULL);
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_desc, 0);
+ tree, drep, hf_samr_alias_desc, 0);
return offset;
}
@@ -1561,11 +1567,11 @@
break;
case 2:
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_name, 0);
+ tree, drep, hf_samr_alias_name, 0);
break;
case 3:
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_desc, 0);
+ tree, drep, hf_samr_alias_desc, 0);
break;
}
@@ -1626,10 +1632,6 @@
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
- offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
- samr_dissect_ALIAS_INFO_ptr, NDR_POINTER_REF,
- "ALIAS_INFO", -1);
-
offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
hf_samr_rc, NULL);
return offset;
@@ -2165,13 +2167,13 @@
guint8 *drep)
{
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_name, 0);
+ tree, drep, hf_samr_group_name, 0);
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_samr_rid, NULL);
+ hf_samr_unknown_long, NULL);
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_samr_attrib, NULL);
+ hf_samr_group_num_of_members, NULL);
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_desc, 0);
+ tree, drep, hf_samr_group_desc, 0);
return offset;
}
@@ -2200,7 +2202,7 @@
break;
case 2:
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_name, 0);
+ tree, drep, hf_samr_group_name, 0);
break;
case 3:
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
@@ -2208,7 +2210,7 @@
break;
case 4:
offset = dissect_ndr_counted_string(tvb, offset, pinfo,
- tree, drep, hf_samr_acct_desc, 0);
+ tree, drep, hf_samr_group_desc, 0);
break;
}
@@ -2606,6 +2608,59 @@
}
static int
+samr_dissect_create_group_in_domain_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_samr_hnd, NULL, NULL, FALSE, FALSE);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ dissect_ndr_counted_string_ptr, NDR_POINTER_REF,
+ "Group Name", hf_samr_group_name);
+
+ offset = dissect_nt_access_mask(
+ tvb, offset, pinfo, tree, drep, hf_samr_access,
+ &samr_group_access_mask_info, NULL);
+
+ return offset;
+
+
+}
+
+static int
+samr_dissect_create_group_in_domain_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *tree,
+ guint8 *drep)
+{
+ e_ctx_hnd policy_hnd;
+ proto_item *hnd_item;
+ guint32 status;
+
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_samr_hnd, &policy_hnd, &hnd_item,
+ TRUE, FALSE);
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
+ hf_samr_rid, NULL);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_samr_rc, &status);
+
+ if (status == 0) {
+ dcerpc_smb_store_pol_name(&policy_hnd, pinfo,
+ "CreateGroup handle");
+
+ if (hnd_item != NULL)
+ proto_item_append_text(hnd_item, ": CreateGroup handle");
+ }
+ return offset;
+
+
+}
+
+
+static int
samr_dissect_lookup_domain_rqst(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
@@ -2891,9 +2946,6 @@
samr_dissect_pointer_long, NDR_POINTER_REF,
"Resume Handle:", hf_samr_resume_hnd);
- offset = dissect_ndr_nt_acct_ctrl(
- tvb, offset, pinfo, tree, drep);
-
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
hf_samr_pref_maxsize, NULL);
@@ -2938,9 +2990,6 @@
offset = dissect_ndr_nt_acct_ctrl(
tvb, offset, pinfo, tree, drep);
- offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_samr_pref_maxsize, NULL);
-
return offset;
}
@@ -3010,13 +3059,18 @@
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_acct_name, 0);
+
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_full_name, 0);
- offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
+ hf_samr_primary_group_rid, 0);
+
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_home, 0);
+ hf_samr_acct_desc, 0);
+
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_script, 0);
+ hf_samr_comment, 0);
proto_item_set_len(item, offset-old_offset);
return offset;
@@ -3038,13 +3092,13 @@
}
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_acct_name, 0);
+ hf_samr_comment, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_full_name, 0);
+ hf_samr_unknown_string, 0);
offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
- hf_samr_bad_pwd_count, NULL);
+ hf_samr_country, NULL);
offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
- hf_samr_logon_count, NULL);
+ hf_samr_codepage, NULL);
proto_item_set_len(item, offset-old_offset);
return offset;
@@ -3072,7 +3126,7 @@
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
hf_samr_rid, NULL);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
- hf_samr_group, NULL);
+ hf_samr_primary_group_rid, NULL);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_home, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
@@ -3080,7 +3134,7 @@
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_script, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_acct_desc, 0);
+ hf_samr_profile, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_workstations, 0);
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
@@ -3095,9 +3149,9 @@
hf_samr_pwd_must_change_time);
offset = dissect_ndr_nt_LOGON_HOURS(tvb, offset, pinfo, tree, drep);
offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
- hf_samr_logon_count, NULL);
- offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
hf_samr_bad_pwd_count, NULL);
+ offset = dissect_ndr_uint16 (tvb, offset, pinfo, tree, drep,
+ hf_samr_logon_count, NULL);
offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
proto_item_set_len(item, offset-old_offset);
@@ -3126,11 +3180,7 @@
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
hf_samr_rid, NULL);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
- hf_samr_group, NULL);
- offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
- hf_samr_country, NULL);
- offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep,
- hf_samr_codepage, NULL);
+ hf_samr_primary_group_rid, NULL);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_home, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
@@ -3185,6 +3235,31 @@
}
static int
+samr_dissect_USER_INFO_10(tvbuff_t *tvb, int offset,
+ packet_info *pinfo, proto_tree *parent_tree,
+ guint8 *drep)
+{
+ proto_item *item=NULL;
+ proto_tree *tree=NULL;
+ int old_offset=offset;
+
+ if(parent_tree){
+ item = proto_tree_add_text(parent_tree, tvb, offset, -1,
+ "USER_INFO_10:");
+ tree = proto_item_add_subtree(item, ett_samr_user_info_10);
+ }
+
+ offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
+ hf_samr_home, 0);
+ offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
+ hf_samr_home_drive, 0);
+
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+
+static int
samr_dissect_USER_INFO_18(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *parent_tree,
guint8 *drep)
@@ -3320,10 +3395,10 @@
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
hf_samr_logoff_time);
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
- hf_samr_kickoff_time);
- offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
hf_samr_pwd_last_set_time);
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
+ hf_samr_acct_expiry_time);
+ offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
hf_samr_pwd_can_change_time);
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
hf_samr_pwd_must_change_time);
@@ -3346,7 +3421,7 @@
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_comment, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
- hf_samr_parameters, 0);
+ hf_samr_callback, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
hf_samr_unknown_string, 0);
offset = dissect_ndr_counted_string(tvb, offset, pinfo, tree, drep,
@@ -3357,7 +3432,7 @@
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
hf_samr_rid, NULL);
offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep,
- hf_samr_group, NULL);
+ hf_samr_primary_group_rid, NULL);
offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
hf_samr_unknown_long, NULL);
@@ -3524,31 +3599,31 @@
break;
case 7:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_full_name, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_acct_name, 0);
break;
case 8:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_acct_desc, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_full_name, 0);
break;
case 9:
offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
- hf_samr_unknown_long, NULL);
+ hf_samr_primary_group_rid, NULL);
break;
case 10:
- offset = samr_dissect_USER_INFO_6(
+ offset = samr_dissect_USER_INFO_10(
tvb, offset, pinfo, tree, drep);
break;
case 11:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_home, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_script, 0);
break;
case 12:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_home_drive, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_profile, 0);
break;
case 13:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_script, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_acct_desc, 0);
break;
case 14:
offset = dissect_ndr_counted_string(
@@ -3560,7 +3635,7 @@
break;
case 17:
offset = dissect_ndr_nt_NTTIME(tvb, offset, pinfo, tree, drep,
- hf_samr_unknown_time);
+ hf_samr_acct_expiry_time);
break;
case 18:
offset = samr_dissect_USER_INFO_18(
@@ -3572,7 +3647,7 @@
break;
case 20:
offset = dissect_ndr_counted_string(
- tvb, offset, pinfo, tree, drep, hf_samr_profile, 0);
+ tvb, offset, pinfo, tree, drep, hf_samr_callback, 0);
break;
case 21:
offset = samr_dissect_USER_INFO_21(
@@ -4197,6 +4272,9 @@
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_samr_hnd, NULL, NULL, FALSE, FALSE);
+
offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
hf_samr_rc, NULL);
@@ -4271,6 +4349,9 @@
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_samr_hnd, NULL, NULL, FALSE, FALSE);
+
offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
hf_samr_rc, NULL);
@@ -4534,7 +4615,7 @@
}
static int
-samr_dissect_create_group_in_domain_rqst(tvbuff_t *tvb, int offset,
+samr_dissect_create_user_in_domain_rqst(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
@@ -4547,13 +4628,13 @@
offset = dissect_nt_access_mask(
tvb, offset, pinfo, tree, drep, hf_samr_access,
- &samr_group_access_mask_info, NULL);
+ &samr_user_access_mask_info, NULL);
return offset;
}
static int
-samr_dissect_create_group_in_domain_reply(tvbuff_t *tvb, int offset,
+samr_dissect_create_user_in_domain_reply(tvbuff_t *tvb, int offset,
packet_info *pinfo, proto_tree *tree,
guint8 *drep)
{
@@ -4574,7 +4655,7 @@
hf_samr_rc, &status);
if (status == 0) {
- pol_name = g_strdup_printf("CreateGroup(rid 0x%x)", rid);
+ pol_name = g_strdup_printf("CreateUser(rid 0x%x)", rid);
dcerpc_smb_store_pol_name(&policy_hnd, pinfo, pol_name);
@@ -4587,6 +4668,53 @@
return offset;
}
+
+static int
+samr_dissect_enum_users_in_domain_rqst(tvbuff_t *tvb, int offset,
+ packet_info *pinfo,
+ proto_tree *tree, guint8 *drep)
+{
+ offset = dissect_nt_policy_hnd(tvb, offset, pinfo, tree, drep,
+ hf_samr_hnd, NULL, NULL, FALSE, FALSE);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ samr_dissect_pointer_long, NDR_POINTER_REF,
+ "Resume Handle", hf_samr_resume_hnd);
+
+ offset = dissect_ndr_nt_acct_ctrl(tvb, offset, pinfo, tree, drep);
+
+ offset = dissect_ndr_uint32 (tvb, offset, pinfo, tree, drep,
+ hf_samr_pref_maxsize, NULL);
+
+ return offset;
+}
+
+
+static int
+samr_dissect_enum_users_in_domain_reply(tvbuff_t *tvb, int offset,
+ packet_info *pinfo,
+ proto_tree *tree, guint8 *drep)
+{
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ samr_dissect_pointer_long, NDR_POINTER_REF,
+ "Resume Handle:", hf_samr_resume_hnd);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ samr_dissect_IDX_AND_NAME_ARRAY_ptr, NDR_POINTER_REF,
+ "IDX_AND_NAME_ARRAY:", hf_samr_acct_name);
+
+ offset = dissect_ndr_pointer(tvb, offset, pinfo, tree, drep,
+ samr_dissect_pointer_long, NDR_POINTER_REF,
+ "Entries:", hf_samr_entries);
+
+ offset = dissect_ntstatus(tvb, offset, pinfo, tree, drep,
+ hf_samr_rc, NULL);
+
+ return offset;
+}
+
+
+
static int
samr_dissect_query_information_domain_rqst(tvbuff_t *tvb, int offset,
packet_info *pinfo,
@@ -4774,17 +4902,17 @@
samr_dissect_set_information_domain_rqst,
samr_dissect_set_information_domain_reply },
{ SAMR_CREATE_DOM_GROUP, "SamrCreateGroupInDomain",
- samr_dissect_create_alias_in_domain_rqst,
- samr_dissect_create_alias_in_domain_reply },
+ samr_dissect_create_group_in_domain_rqst,
+ samr_dissect_create_group_in_domain_reply },
{ SAMR_ENUM_DOM_GROUPS, "SamrEnumerateGroupsInDomain",
samr_dissect_enum_dom_groups_rqst,
samr_dissect_enum_dom_groups_reply },
{ SAMR_CREATE_USER_IN_DOMAIN, "SamrCreateUserInDomain",
- samr_dissect_create_group_in_domain_rqst,
- samr_dissect_create_group_in_domain_reply },
+ samr_dissect_create_user_in_domain_rqst,
+ samr_dissect_create_user_in_domain_reply },
{ SAMR_ENUM_DOM_USERS, "SamrEnumerateUsersInDomain",
- samr_dissect_enum_dom_groups_rqst,
- samr_dissect_enum_dom_groups_reply },
+ samr_dissect_enum_users_in_domain_rqst,
+ samr_dissect_enum_users_in_domain_reply },
{ SAMR_CREATE_DOM_ALIAS, "SamrCreateAliasInDomain",
samr_dissect_create_alias_in_domain_rqst,
samr_dissect_create_alias_in_domain_reply },
@@ -5010,7 +5138,7 @@
{ &hf_samr_alias_name,
{ "Alias Name", "samr.alias_name", FT_STRING, BASE_NONE,
- NULL, 0, "Name of Alias", HFILL }},
+ NULL, 0, "Name of Alias (Local Group)", HFILL }},
{ &hf_samr_group_name,
{ "Group Name", "samr.group_name", FT_STRING, BASE_NONE,
@@ -5061,12 +5189,8 @@
NULL, 0, "Account Description", HFILL }},
{ &hf_samr_comment,
- { "Comment", "samr.comment", FT_STRING, BASE_NONE,
- NULL, 0, "Comment", HFILL }},
-
- { &hf_samr_parameters,
- { "Parameters", "samr.parameters", FT_STRING, BASE_NONE,
- NULL, 0, "Parameters", HFILL }},
+ { "Account Comment", "samr.comment", FT_STRING, BASE_NONE,
+ NULL, 0, "Account Comment", HFILL }},
{ &hf_samr_unknown_string,
{ "Unknown string", "samr.unknown_string", FT_STRING, BASE_NONE,
@@ -5169,13 +5293,13 @@
{ "Unknown time", "samr.unknown_time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, "Unknown NT TIME, contact ethereal developers if you know what this is", HFILL }},
{ &hf_samr_logon_time,
- { "Logon Time", "samr.logon_time", FT_ABSOLUTE_TIME, BASE_NONE,
+ { "Last Logon Time", "samr.logon_time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, "Time for last time this user logged on", HFILL }},
{ &hf_samr_kickoff_time,
{ "Kickoff Time", "samr.kickoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, "Time when this user will be kicked off", HFILL }},
{ &hf_samr_logoff_time,
- { "Logoff Time", "samr.logoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
+ { "Last Logoff Time", "samr.logoff_time", FT_ABSOLUTE_TIME, BASE_NONE,
NULL, 0, "Time for last time this user logged off", HFILL }},
{ &hf_samr_pwd_last_set_time,
{ "PWD Last Set", "samr.pwd_last_set_time", FT_ABSOLUTE_TIME, BASE_NONE,
@@ -5217,6 +5341,26 @@
{ &hf_samr_codepage, {
"Codepage", "samr.codepage", FT_UINT16, BASE_DEC,
NULL, 0, "Codepage setting for this user", HFILL }},
+ { &hf_samr_primary_group_rid,
+ { "Primary group RID", "samr.primary_group_rid", FT_UINT32,
+ BASE_DEC, NULL, 0x0, "RID of the user primary group", HFILL }},
+ { &hf_samr_callback,
+ { "Callback", "samr.callback", FT_STRING, BASE_NONE,
+ NULL, 0, "Callback for this user", HFILL }},
+ { &hf_samr_alias_desc,
+ { "Alias Desc", "samr.alias.desc", FT_STRING, BASE_NONE,
+ NULL, 0, "Alias (Local Group) Description", HFILL }},
+ { &hf_samr_alias_num_of_members,
+ { "Num of Members in Alias", "samr.alias.num_of_members",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Number of members in Alias (Local Group)", HFILL }},
+ { &hf_samr_group_desc,
+ { "Group Desc", "samr.group.desc", FT_STRING, BASE_NONE,
+ NULL, 0, "Group Description", HFILL }},
+ { &hf_samr_group_num_of_members,
+ { "Num of Members in Group", "samr.group.num_of_members",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "Number of members in Group", HFILL }},
/* Object specific access rights */
@@ -5412,7 +5556,7 @@
{ &hf_samr_sd_size,
{ "Size", "sam.sd_size", FT_UINT32, BASE_DEC,
- NULL, 0x0, "Size of SAM security descriptor", HFILL }}
+ NULL, 0x0, "Size of SAM security descriptor", HFILL }},
};
@@ -5449,6 +5593,7 @@
&ett_samr_user_info_3,
&ett_samr_user_info_5,
&ett_samr_user_info_6,
+ &ett_samr_user_info_10,
&ett_samr_user_info_18,
&ett_samr_user_info_19,
&ett_samr_buffer_buffer,
- Follow-Ups:
- Re: [Ethereal-dev] [packet-dcerpc-samr.c] Multiple fixes
- From: Guy Harris
- Re: [Ethereal-dev] [packet-dcerpc-samr.c] Multiple fixes
- Prev by Date: Re: [Ethereal-dev] Auto scroll in live capture
- Next by Date: Re: [Ethereal-dev] [packet-dcerpc-srvsvc.c] Displaying info levels in COL_INFO
- Previous by thread: [Ethereal-dev] Re: [Ethereal-users] A problem on a Sony Vaio Laptop X1RSP - WinXP SP1
- Next by thread: Re: [Ethereal-dev] [packet-dcerpc-samr.c] Multiple fixes
- Index(es):





