diff options
author | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2009-10-04 04:14:49 +0000 |
---|---|---|
committer | Ronnie Sahlberg <ronnie_sahlberg@ozemail.com.au> | 2009-10-04 04:14:49 +0000 |
commit | 061284dbbdd349669929829c93d0b73780fe80eb (patch) | |
tree | 4e868bf6f76a1032837d6249c5099a845640757d /epan/dissectors/packet-dcerpc-samr.c | |
parent | 50cec935790a7347a5633743065906ce4a870f47 (diff) |
merge some changes to samr from the samba idl
svn path=/trunk/; revision=30272
Diffstat (limited to 'epan/dissectors/packet-dcerpc-samr.c')
-rw-r--r-- | epan/dissectors/packet-dcerpc-samr.c | 1149 |
1 files changed, 812 insertions, 337 deletions
diff --git a/epan/dissectors/packet-dcerpc-samr.c b/epan/dissectors/packet-dcerpc-samr.c index 2677fffcdc..af9454460c 100644 --- a/epan/dissectors/packet-dcerpc-samr.c +++ b/epan/dissectors/packet-dcerpc-samr.c @@ -34,7 +34,7 @@ static gint ett_dcerpc_samr = -1; static gint ett_samr_lsa_String = -1; static gint ett_samr_lsa_Strings = -1; static gint ett_samr_samr_AcctFlags = -1; -static gint ett_samr_samr_ServerAccessMask = -1; +static gint ett_samr_samr_ConnectAccessMask = -1; static gint ett_samr_samr_UserAccessMask = -1; static gint ett_samr_samr_DomainAccessMask = -1; static gint ett_samr_samr_GroupAccessMask = -1; @@ -107,7 +107,6 @@ static gint ett_samr_samr_DispInfoAscii = -1; static gint ett_samr_samr_DispInfo = -1; static gint ett_samr_samr_PwInfo = -1; static gint ett_samr_samr_ChangeReject = -1; -static gint ett_samr_samr_SupportedFeatures = -1; static gint ett_samr_samr_ConnectInfo1 = -1; static gint ett_samr_samr_ConnectInfo = -1; static gint ett_samr_samr_ValidateFieldsPresent = -1; @@ -131,7 +130,6 @@ static gint hf_samr_samr_DomainInfo_oem = -1; static gint hf_samr_samr_DispInfoAscii_entries = -1; static gint hf_samr_samr_QueryAliasInfo_level = -1; static gint hf_samr_samr_DispEntryFullGroup_idx = -1; -static gint hf_samr_samr_ConnectInfo1_revision = -1; static gint hf_samr_samr_QueryGroupInfo_info = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT = -1; static gint hf_samr_samr_UserInfo21_primary_gid = -1; @@ -168,7 +166,6 @@ static gint hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_OPEN_ACCOUNT = -1; static gint hf_samr_samr_Connect4_system_name = -1; static gint hf_samr_samr_QueryDisplayInfo3_buf_size = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS = -1; -static gint hf_samr_samr_Connect5_info = -1; static gint hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE = -1; static gint hf_samr_samr_UserInfo20_parameters = -1; @@ -192,6 +189,7 @@ static gint hf_samr_samr_UserInfo5_bad_password_count = -1; static gint hf_samr_samr_DomainInfo_info5 = -1; static gint hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER = -1; static gint hf_samr_samr_UserInfo_info6 = -1; +static gint hf_samr_samr_Connect5_info_out = -1; static gint hf_samr_samr_UserInfo3_logon_script = -1; static gint hf_samr_samr_SetUserInfo_level = -1; static gint hf_samr_samr_UserInfo21_last_logon = -1; @@ -281,9 +279,9 @@ static gint hf_samr_samr_UserInfo21_comment = -1; static gint hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_SET_INFO_2 = -1; static gint hf_samr_samr_UserInfo_info14 = -1; static gint hf_samr_samr_CreateUser2_access_granted = -1; +static gint hf_samr_samr_ConnectInfo1_client_version = -1; static gint hf_samr_samr_UserInfo5_acct_flags = -1; static gint hf_samr_samr_AcctFlags_ACB_NOT_DELEGATED = -1; -static gint hf_samr_samr_SupportedFeatures_SAMR_FEATURES_DONT_CONCAT_RIDS = -1; static gint hf_samr_samr_SetDsrmPassword_name = -1; static gint hf_samr_samr_Connect_system_name = -1; static gint hf_samr_samr_DomInfo1_min_password_age = -1; @@ -291,7 +289,6 @@ static gint hf_samr_samr_LookupRids_num_rids = -1; static gint hf_samr_samr_GroupInfoDescription_description = -1; static gint hf_samr_samr_QueryUserInfo_level = -1; static gint hf_samr_samr_GroupAttrs_SE_GROUP_LOGON_ID = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS = -1; static gint hf_samr_samr_DispEntryGeneral_account_name = -1; static gint hf_samr_samr_AcctFlags_ACB_HOMDIRREQ = -1; static gint hf_samr_samr_CryptPasswordEx_data = -1; @@ -332,13 +329,14 @@ static gint hf_samr_samr_DomInfo1_min_password_length = -1; static gint hf_samr_samr_ValidatePasswordReq3_pwd_must_change_at_next_logon = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS = -1; static gint hf_samr_samr_GetDisplayEnumerationIndex_idx = -1; +static gint hf_samr_samr_Connect5_level_out = -1; static gint hf_samr_samr_UserInfo5_last_logon = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN = -1; static gint hf_samr_samr_ChangePasswordUser2_server = -1; static gint hf_samr_samr_SetDomainInfo_info = -1; static gint hf_samr_samr_SamArray_count = -1; static gint hf_samr_samr_UserInfo24_password = -1; static gint hf_samr_samr_DispEntryFull_idx = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER = -1; static gint hf_samr_samr_DispEntryFull_acct_flags = -1; static gint hf_samr_samr_GetAliasMembership_sids = -1; static gint hf_samr_samr_UserInfo_info1 = -1; @@ -378,6 +376,7 @@ static gint hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_LOGONINFO = -1; static gint hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET = -1; static gint hf_samr_samr_DomGeneralInformation_domain_name = -1; static gint hf_samr_samr_CreateUser2_account_name = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN = -1; static gint hf_samr_samr_LookupDomain_sid = -1; static gint hf_samr_samr_AddAliasMember_sid = -1; static gint hf_samr_samr_QueryAliasInfo_info = -1; @@ -439,7 +438,9 @@ static gint hf_samr_samr_ChangePasswordUser3_account = -1; static gint hf_samr_samr_DomInfo8_sequence_num = -1; static gint hf_samr_samr_ValidatePasswordInfo_pwd_history = -1; static gint hf_samr_samr_Connect3_unknown = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN = -1; static gint hf_samr_samr_GetDisplayEnumerationIndex2_idx = -1; +static gint hf_samr_samr_ConnectInfo1_unknown2 = -1; static gint hf_samr_lsa_String_name = -1; static gint hf_samr_samr_AliasInfoAll_name = -1; static gint hf_samr_samr_GroupInfo_description = -1; @@ -473,6 +474,7 @@ static gint hf_samr_samr_UserInfo17_acct_expiry = -1; static gint hf_samr_samr_DomInfo1_password_history_length = -1; static gint hf_samr_samr_QueryUserInfo_info = -1; static gint hf_samr_samr_DomGeneralInformation_primary = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER = -1; static gint hf_samr_samr_UserInfo5_home_drive = -1; static gint hf_samr_samr_RemoveMemberFromForeignDomain_sid = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE = -1; @@ -495,7 +497,6 @@ static gint hf_samr_samr_GroupInfoAll_description = -1; static gint hf_samr_samr_UserInfo3_logon_count = -1; static gint hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY = -1; static gint hf_samr_samr_GroupInfo_name = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER = -1; static gint hf_samr_samr_UserInfo3_force_password_change = -1; static gint hf_samr_samr_ChangePasswordUser_nt_present = -1; static gint hf_samr_samr_UserInfo21_home_directory = -1; @@ -523,7 +524,6 @@ static gint hf_samr_samr_DispEntryFull_account_name = -1; static gint hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_LENGTH = -1; static gint hf_samr_samr_CreateUser2_acct_flags = -1; static gint hf_samr_lsa_String_name_len = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER = -1; static gint hf_samr_samr_EnumDomainAliases_acct_flags = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE = -1; static gint hf_samr_samr_DomainInfo_info1 = -1; @@ -545,6 +545,7 @@ static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_ACCT_FLAGS = -1; static gint hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_GROUPS = -1; static gint hf_samr_samr_RemoveMultipleMembersFromAlias_sids = -1; static gint hf_samr_samr_OemChangePasswordUser2_account = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS = -1; static gint hf_samr_samr_UserInfo_info4 = -1; static gint hf_samr_samr_QueryDisplayInfo2_info = -1; static gint hf_samr_samr_DomInfo1_password_properties = -1; @@ -552,7 +553,6 @@ static gint hf_samr_samr_UserInfo21_logon_script = -1; static gint hf_samr_samr_AcctFlags_ACB_AUTOLOCK = -1; static gint hf_samr_samr_GetBootKeyInformation_unknown = -1; static gint hf_samr_samr_RidWithAttribute_attributes = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN = -1; static gint hf_samr_samr_CryptPassword_data = -1; static gint hf_samr_samr_AliasInfo_name = -1; static gint hf_samr_samr_DomainAccessMask_SAMR_DOMAIN_ACCESS_CREATE_USER = -1; @@ -601,6 +601,7 @@ static gint hf_samr_samr_GroupInfoAll_attributes = -1; static gint hf_samr_samr_Types_count = -1; static gint hf_samr_samr_GetMembersBuffer_count = -1; static gint hf_samr_samr_DomainInfo_info7 = -1; +static gint hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER = -1; static gint hf_samr_samr_EnumDomains_num_entries = -1; static gint hf_samr_samr_DomainInfo_state = -1; static gint hf_samr_samr_UserInfo21_parameters = -1; @@ -614,27 +615,26 @@ static gint hf_samr_samr_GetAliasMembership_rids = -1; static gint hf_samr_samr_UserInfo6_account_name = -1; static gint hf_samr_connect_access_mask = -1; static gint hf_samr_samr_UserInfo_info3 = -1; +static gint hf_samr_samr_Connect5_level_in = -1; static gint hf_samr_samr_DomInfo12_lockout_window = -1; static gint hf_samr_samr_RidToSid_sid = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_SEC_DESC = -1; static gint hf_samr_samr_GetUserPwInfo_info = -1; static gint hf_samr_samr_EnumDomainUsers_acct_flags = -1; static gint hf_samr_samr_DomainInfo_info6 = -1; -static gint hf_samr_samr_Connect5_level = -1; static gint hf_samr_samr_CreateDomAlias_alias_name = -1; static gint hf_samr_samr_EnumDomainUsers_sam = -1; static gint hf_samr_samr_DispInfo_info5 = -1; static gint hf_samr_samr_GetGroupsForUser_rids = -1; static gint hf_samr_samr_UserInfo3_last_logoff = -1; -static gint hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER = -1; static gint hf_samr_samr_ValidatePasswordRepCtr_info = -1; static gint hf_samr_samr_SetGroupInfo_level = -1; static gint hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD = -1; static gint hf_samr_samr_SetUserInfo2_level = -1; static gint hf_samr_samr_UserInfo5_acct_expiry = -1; +static gint hf_samr_samr_Connect5_info_in = -1; static gint hf_samr_samr_UserInfo21_nt_password_set = -1; static gint hf_samr_samr_UserInfo_info20 = -1; -static gint hf_samr_samr_ConnectInfo1_features = -1; static gint hf_samr_alias_handle = -1; static gint hf_samr_samr_UserInfo5_account_name = -1; static gint hf_samr_samr_DispInfoFull_entries = -1; @@ -647,10 +647,10 @@ static gint hf_samr_samr_DispInfoAscii_count = -1; static gint hf_samr_samr_GetMembersInAlias_sids = -1; static gint hf_samr_samr_QueryDisplayInfo3_info = -1; static gint hf_samr_samr_OemChangePasswordUser2_hash = -1; -static gint hf_samr_samr_Connect4_revision = -1; static gint hf_samr_samr_QueryUserInfo2_level = -1; static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT = -1; static gint hf_samr_samr_ValidatePasswordReq3_clear_lockout = -1; +static gint hf_samr_samr_Connect4_client_version = -1; static gint hf_samr_samr_GetDisplayEnumerationIndex_level = -1; static gint hf_samr_samr_UserInfo5_workstations = -1; static gint hf_samr_samr_DispEntryFullGroup_account_name = -1; @@ -709,6 +709,13 @@ const value_string samr_lsa_SidType_vals[] = { { SID_NAME_COMPUTER, "SID_NAME_COMPUTER" }, { 0, NULL } }; +const value_string samr_samr_RejectReason_vals[] = { + { SAMR_REJECT_OTHER, "SAMR_REJECT_OTHER" }, + { SAMR_REJECT_TOO_SHORT, "SAMR_REJECT_TOO_SHORT" }, + { SAMR_REJECT_IN_HISTORY, "SAMR_REJECT_IN_HISTORY" }, + { SAMR_REJECT_COMPLEXITY, "SAMR_REJECT_COMPLEXITY" }, +{ 0, NULL } +}; static const true_false_string samr_AcctFlags_ACB_DISABLED_tfs = { "ACB_DISABLED is SET", "ACB_DISABLED is NOT SET", @@ -789,29 +796,29 @@ static const true_false_string samr_AcctFlags_ACB_NO_AUTH_DATA_REQD_tfs = { "ACB_NO_AUTH_DATA_REQD is SET", "ACB_NO_AUTH_DATA_REQD is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER_tfs = { - "SAMR_SERVER_ACCESS_CONNECT_TO_SERVER is SET", - "SAMR_SERVER_ACCESS_CONNECT_TO_SERVER is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER_tfs = { + "SAMR_ACCESS_CONNECT_TO_SERVER is SET", + "SAMR_ACCESS_CONNECT_TO_SERVER is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER_tfs = { - "SAMR_SERVER_ACCESS_SHUTDOWN_SERVER is SET", - "SAMR_SERVER_ACCESS_SHUTDOWN_SERVER is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER_tfs = { + "SAMR_ACCESS_SHUTDOWN_SERVER is SET", + "SAMR_ACCESS_SHUTDOWN_SERVER is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER_tfs = { - "SAMR_SERVER_ACCESS_INITIALIZE_SERVER is SET", - "SAMR_SERVER_ACCESS_INITIALIZE_SERVER is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER_tfs = { + "SAMR_ACCESS_INITIALIZE_SERVER is SET", + "SAMR_ACCESS_INITIALIZE_SERVER is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN_tfs = { - "SAMR_SERVER_ACCESS_CREATE_DOMAIN is SET", - "SAMR_SERVER_ACCESS_CREATE_DOMAIN is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN_tfs = { + "SAMR_ACCESS_CREATE_DOMAIN is SET", + "SAMR_ACCESS_CREATE_DOMAIN is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS_tfs = { - "SAMR_SERVER_ACCESS_ENUM_DOMAINS is SET", - "SAMR_SERVER_ACCESS_ENUM_DOMAINS is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS_tfs = { + "SAMR_ACCESS_ENUM_DOMAINS is SET", + "SAMR_ACCESS_ENUM_DOMAINS is NOT SET", }; -static const true_false_string samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN_tfs = { - "SAMR_SERVER_ACCESS_OPEN_DOMAIN is SET", - "SAMR_SERVER_ACCESS_OPEN_DOMAIN is NOT SET", +static const true_false_string samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN_tfs = { + "SAMR_ACCESS_LOOKUP_DOMAIN is SET", + "SAMR_ACCESS_LOOKUP_DOMAIN is NOT SET", }; static const true_false_string samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC_tfs = { "SAMR_USER_ACCESS_GET_NAME_ETC is SET", @@ -1132,6 +1139,32 @@ const value_string samr_samr_AliasInfoEnum_vals[] = { static int samr_dissect_element_AliasInfo_all(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_AliasInfo_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_AliasInfo_description(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +const value_string samr_samr_UserInfoLevel_vals[] = { + { UserGeneralInformation, "UserGeneralInformation" }, + { UserPreferencesInformation, "UserPreferencesInformation" }, + { UserLogonInformation, "UserLogonInformation" }, + { UserLogonHoursInformation, "UserLogonHoursInformation" }, + { UserAccountInformation, "UserAccountInformation" }, + { UserNameInformation, "UserNameInformation" }, + { UserAccountNameInformation, "UserAccountNameInformation" }, + { UserFullNameInformation, "UserFullNameInformation" }, + { UserPrimaryGroupInformation, "UserPrimaryGroupInformation" }, + { UserHomeInformation, "UserHomeInformation" }, + { UserScriptInformation, "UserScriptInformation" }, + { UserProfileInformation, "UserProfileInformation" }, + { UserAdminCommentInformation, "UserAdminCommentInformation" }, + { UserWorkStationsInformation, "UserWorkStationsInformation" }, + { UserControlInformation, "UserControlInformation" }, + { UserExpiresInformation, "UserExpiresInformation" }, + { UserInternal1Information, "UserInternal1Information" }, + { UserParametersInformation, "UserParametersInformation" }, + { UserAllInformation, "UserAllInformation" }, + { UserInternal4Information, "UserInternal4Information" }, + { UserInternal5Information, "UserInternal5Information" }, + { UserInternal4InformationNew, "UserInternal4InformationNew" }, + { UserInternal5InformationNew, "UserInternal5InformationNew" }, +{ 0, NULL } +}; static int samr_dissect_element_UserInfo1_account_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_UserInfo1_full_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_UserInfo1_primary_gid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1443,33 +1476,17 @@ static int samr_dissect_element_DispInfo_info4(tvbuff_t *tvb _U_, int offset _U_ static int samr_dissect_element_DispInfo_info5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_PwInfo_min_password_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_PwInfo_password_properties(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -const value_string samr_samr_ExtendedFailureReason_vals[] = { - { SAMR_PWD_CHANGE_NO_ERROR, "SAMR_PWD_CHANGE_NO_ERROR" }, - { SAMR_PWD_CHANGE_PASSWORD_TOO_SHORT, "SAMR_PWD_CHANGE_PASSWORD_TOO_SHORT" }, - { SAMR_PWD_CHANGE_PWD_IN_HISTORY, "SAMR_PWD_CHANGE_PWD_IN_HISTORY" }, - { SAMR_PWD_CHANGE_USERNAME_IN_PASSWORD, "SAMR_PWD_CHANGE_USERNAME_IN_PASSWORD" }, - { SAMR_PWD_CHANGE_FULLNAME_IN_PASSWORD, "SAMR_PWD_CHANGE_FULLNAME_IN_PASSWORD" }, - { SAMR_PWD_CHANGE_NOT_COMPLEX, "SAMR_PWD_CHANGE_NOT_COMPLEX" }, - { SAMR_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT, "SAMR_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT" }, - { SAMR_PWD_CHANGE_FAILED_BY_FILTER, "SAMR_PWD_CHANGE_FAILED_BY_FILTER" }, - { SAMR_PWD_CHANGE_PASSWORD_TOO_LONG, "SAMR_PWD_CHANGE_PASSWORD_TOO_LONG" }, +const value_string samr_samr_ConnectVersion_vals[] = { + { SAMR_CONNECT_PRE_W2K, "SAMR_CONNECT_PRE_W2K" }, + { SAMR_CONNECT_W2K, "SAMR_CONNECT_W2K" }, + { SAMR_CONNECT_AFTER_W2K, "SAMR_CONNECT_AFTER_W2K" }, { 0, NULL } }; static int samr_dissect_element_ChangeReject_reason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangeReject_unknown1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangeReject_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -const value_string samr_samr_ConnectRevision_vals[] = { - { CONNECTION_REVISION_PRE_W2K, "CONNECTION_REVISION_PRE_W2K" }, - { CONNECTION_REVISION_W2K, "CONNECTION_REVISION_W2K" }, - { CONNECTION_REVISION_XP, "CONNECTION_REVISION_XP" }, -{ 0, NULL } -}; -static const true_false_string samr_SupportedFeatures_SAMR_FEATURES_DONT_CONCAT_RIDS_tfs = { - "SAMR_FEATURES_DONT_CONCAT_RIDS is SET", - "SAMR_FEATURES_DONT_CONCAT_RIDS is NOT SET", -}; -static int samr_dissect_element_ConnectInfo1_revision(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -static int samr_dissect_element_ConnectInfo1_features(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ConnectInfo1_client_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ConnectInfo1_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ConnectInfo_info1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static const true_false_string samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET_tfs = { "SAMR_VALIDATE_FIELD_PASSWORD_LAST_SET is SET", @@ -1505,12 +1522,14 @@ const value_string samr_samr_ValidationStatus_vals[] = { { SAMR_VALIDATION_STATUS_SUCCESS, "SAMR_VALIDATION_STATUS_SUCCESS" }, { SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE, "SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE" }, { SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT, "SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT" }, + { SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED, "SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED" }, { SAMR_VALIDATION_STATUS_BAD_PASSWORD, "SAMR_VALIDATION_STATUS_BAD_PASSWORD" }, { SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT, "SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT" }, { SAMR_VALIDATION_STATUS_PWD_TOO_SHORT, "SAMR_VALIDATION_STATUS_PWD_TOO_SHORT" }, { SAMR_VALIDATION_STATUS_PWD_TOO_LONG, "SAMR_VALIDATION_STATUS_PWD_TOO_LONG" }, { SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH, "SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH" }, { SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT, "SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT" }, + { SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR, "SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR" }, { 0, NULL } }; static int samr_dissect_element_ValidationBlob_length(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1564,6 +1583,7 @@ static int samr_dissect_element_QuerySecurity_handle_(tvbuff_t *tvb _U_, int off static int samr_dissect_element_QuerySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_QuerySecurity_sdbuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_QuerySecurity_sdbuf_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_QuerySecurity_sdbuf__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Shutdown_connect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Shutdown_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_LookupDomain_connect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1747,6 +1767,7 @@ static int samr_dissect_element_QueryUserInfo_user_handle_(tvbuff_t *tvb _U_, in static int samr_dissect_element_QueryUserInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_QueryUserInfo_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetUserInfo_user_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetUserInfo_user_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetUserInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1902,7 +1923,7 @@ static int samr_dissect_element_Connect3_connect_handle(tvbuff_t *tvb _U_, int o static int samr_dissect_element_Connect3_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect4_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect4_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -static int samr_dissect_element_Connect4_revision(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect4_client_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect4_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect4_connect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect4_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1923,14 +1944,20 @@ static int samr_dissect_element_ChangePasswordUser3_password3(tvbuff_t *tvb _U_, static int samr_dissect_element_ChangePasswordUser3_password3_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangePasswordUser3_dominfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangePasswordUser3_dominfo_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ChangePasswordUser3_dominfo__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangePasswordUser3_reject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ChangePasswordUser3_reject_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ChangePasswordUser3_reject__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect5_system_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect5_system_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect5_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -static int samr_dissect_element_Connect5_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -static int samr_dissect_element_Connect5_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); -static int samr_dissect_element_Connect5_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_level_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_info_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_info_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_info_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_Connect5_info_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect5_connect_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_Connect5_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_RidToSid_domain_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1938,6 +1965,7 @@ static int samr_dissect_element_RidToSid_domain_handle_(tvbuff_t *tvb _U_, int o static int samr_dissect_element_RidToSid_rid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_RidToSid_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_RidToSid_sid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_RidToSid_sid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetDsrmPassword_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetDsrmPassword_name_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_SetDsrmPassword_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); @@ -1945,17 +1973,19 @@ static int samr_dissect_element_SetDsrmPassword_hash(tvbuff_t *tvb _U_, int offs static int samr_dissect_element_SetDsrmPassword_hash_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ValidatePassword_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ValidatePassword_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ValidatePassword_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static int samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); +static int samr_dissect_element_ValidatePassword_rep__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_); static void samr_connect_specific_rights(tvbuff_t *tvb, gint offset, proto_tree *tree, guint32 access) { - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN, tvb, offset, 4, access); - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS, tvb, offset, 4, access); - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN, tvb, offset, 4, access); - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER, tvb, offset, 4, access); - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER, tvb, offset, 4, access); - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER, tvb, offset, 4, access); + proto_tree_add_boolean(tree, hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER, tvb, offset, 4, access); } struct access_mask_info samr_connect_access_mask_info = { "SAMR Connect", /* Name of specific rights */ @@ -2241,6 +2271,7 @@ samr_dissect_struct_lsa_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -2261,6 +2292,11 @@ samr_dissect_struct_lsa_String(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -2307,6 +2343,7 @@ samr_dissect_struct_lsa_Strings(tvbuff_t *tvb _U_, int offset _U_, packet_info * { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -2325,6 +2362,11 @@ samr_dissect_struct_lsa_Strings(tvbuff_t *tvb _U_, int offset _U_, packet_info * proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -2357,6 +2399,28 @@ samr_dissect_enum_lsa_SidType(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi } +/* IDL: enum { */ +/* IDL: SAMR_REJECT_OTHER=0, */ +/* IDL: SAMR_REJECT_TOO_SHORT=1, */ +/* IDL: SAMR_REJECT_IN_HISTORY=2, */ +/* IDL: SAMR_REJECT_COMPLEXITY=5, */ +/* IDL: } */ + +int +samr_dissect_enum_RejectReason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +{ + guint32 parameter=0; + if(param){ + parameter=(guint32)*param; + } + offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + if(param){ + *param=(guint32)parameter; + } + return offset; +} + + /* IDL: bitmap { */ /* IDL: ACB_DISABLED = 0x00000001 , */ /* IDL: ACB_HOMDIRREQ = 0x00000002 , */ @@ -2569,89 +2633,14 @@ samr_dissect_bitmap_AcctFlags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi /* IDL: bitmap { */ -/* IDL: SAMR_SERVER_ACCESS_CONNECT_TO_SERVER = 0x00000001 , */ -/* IDL: SAMR_SERVER_ACCESS_SHUTDOWN_SERVER = 0x00000002 , */ -/* IDL: SAMR_SERVER_ACCESS_INITIALIZE_SERVER = 0x00000004 , */ -/* IDL: SAMR_SERVER_ACCESS_CREATE_DOMAIN = 0x00000008 , */ -/* IDL: SAMR_SERVER_ACCESS_ENUM_DOMAINS = 0x00000010 , */ -/* IDL: SAMR_SERVER_ACCESS_OPEN_DOMAIN = 0x00000020 , */ +/* IDL: SAMR_ACCESS_CONNECT_TO_SERVER = 0x00000001 , */ +/* IDL: SAMR_ACCESS_SHUTDOWN_SERVER = 0x00000002 , */ +/* IDL: SAMR_ACCESS_INITIALIZE_SERVER = 0x00000004 , */ +/* IDL: SAMR_ACCESS_CREATE_DOMAIN = 0x00000008 , */ +/* IDL: SAMR_ACCESS_ENUM_DOMAINS = 0x00000010 , */ +/* IDL: SAMR_ACCESS_LOOKUP_DOMAIN = 0x00000020 , */ /* IDL: } */ -int -samr_dissect_bitmap_ServerAccessMask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - - guint32 flags; - ALIGN_TO_4_BYTES; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE); - tree = proto_item_add_subtree(item,ett_samr_samr_ServerAccessMask); - } - - offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags); - proto_item_append_text(item, ": "); - - if (!flags) - proto_item_append_text(item, "(No values set)"); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER, tvb, offset-4, 4, flags); - if (flags&( 0x00000001 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_CONNECT_TO_SERVER"); - if (flags & (~( 0x00000001 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000001 )); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER, tvb, offset-4, 4, flags); - if (flags&( 0x00000002 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_SHUTDOWN_SERVER"); - if (flags & (~( 0x00000002 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000002 )); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER, tvb, offset-4, 4, flags); - if (flags&( 0x00000004 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_INITIALIZE_SERVER"); - if (flags & (~( 0x00000004 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000004 )); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN, tvb, offset-4, 4, flags); - if (flags&( 0x00000008 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_CREATE_DOMAIN"); - if (flags & (~( 0x00000008 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000008 )); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS, tvb, offset-4, 4, flags); - if (flags&( 0x00000010 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_ENUM_DOMAINS"); - if (flags & (~( 0x00000010 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000010 )); - - proto_tree_add_boolean(tree, hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN, tvb, offset-4, 4, flags); - if (flags&( 0x00000020 )){ - proto_item_append_text(item, "SAMR_SERVER_ACCESS_OPEN_DOMAIN"); - if (flags & (~( 0x00000020 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000020 )); - - if (flags) { - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); - } - - return offset; -} - /* IDL: bitmap { */ /* IDL: SAMR_USER_ACCESS_GET_NAME_ETC = 0x00000001 , */ @@ -2727,6 +2716,7 @@ samr_dissect_struct_SamEntry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -2745,6 +2735,11 @@ samr_dissect_struct_SamEntry(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -2791,6 +2786,7 @@ samr_dissect_struct_SamArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -2809,6 +2805,11 @@ samr_dissect_struct_SamArray(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -2973,6 +2974,7 @@ samr_dissect_struct_DomInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -2997,6 +2999,11 @@ samr_dissect_struct_DomInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -3038,6 +3045,7 @@ samr_dissect_struct_DomainStateInformation(tvbuff_t *tvb _U_, int offset _U_, pa { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -3054,6 +3062,11 @@ samr_dissect_struct_DomainStateInformation(tvbuff_t *tvb _U_, int offset _U_, pa proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -3165,6 +3178,7 @@ samr_dissect_struct_DomGeneralInformation(tvbuff_t *tvb _U_, int offset _U_, pac { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3201,6 +3215,11 @@ samr_dissect_struct_DomGeneralInformation(tvbuff_t *tvb _U_, int offset _U_, pac proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -3222,6 +3241,7 @@ samr_dissect_struct_DomInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -3238,6 +3258,11 @@ samr_dissect_struct_DomInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -3259,6 +3284,7 @@ samr_dissect_struct_DomOEMInformation(tvbuff_t *tvb _U_, int offset _U_, packet_ { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3275,6 +3301,11 @@ samr_dissect_struct_DomOEMInformation(tvbuff_t *tvb _U_, int offset _U_, packet_ proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -3296,6 +3327,7 @@ samr_dissect_struct_DomInfo5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3312,6 +3344,11 @@ samr_dissect_struct_DomInfo5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -3333,6 +3370,7 @@ samr_dissect_struct_DomInfo6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3349,6 +3387,11 @@ samr_dissect_struct_DomInfo6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -3370,6 +3413,7 @@ samr_dissect_struct_DomInfo7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -3386,6 +3430,11 @@ samr_dissect_struct_DomInfo7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -3416,6 +3465,7 @@ samr_dissect_struct_DomInfo8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -3434,6 +3484,11 @@ samr_dissect_struct_DomInfo8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -3482,6 +3537,7 @@ samr_dissect_struct_DomGeneralInformation2(tvbuff_t *tvb _U_, int offset _U_, pa { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -3504,6 +3560,11 @@ samr_dissect_struct_DomGeneralInformation2(tvbuff_t *tvb _U_, int offset _U_, pa proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -3543,6 +3604,7 @@ samr_dissect_struct_DomInfo12(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -3563,6 +3625,11 @@ samr_dissect_struct_DomInfo12(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -3611,6 +3678,7 @@ samr_dissect_struct_DomInfo13(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -3633,6 +3701,11 @@ samr_dissect_struct_DomInfo13(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -3656,11 +3729,11 @@ samr_dissect_struct_DomInfo13(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi int samr_dissect_enum_DomainInformationClass(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -3784,6 +3857,7 @@ samr_dissect_DomainInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint16 level; @@ -3847,6 +3921,11 @@ samr_dissect_DomainInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -3892,6 +3971,7 @@ samr_dissect_struct_Ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3910,6 +3990,11 @@ samr_dissect_struct_Ids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -3956,6 +4041,7 @@ samr_dissect_struct_Types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -3974,6 +4060,11 @@ samr_dissect_struct_Types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4116,6 +4207,7 @@ samr_dissect_struct_GroupInfoAll(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4138,6 +4230,11 @@ samr_dissect_struct_GroupInfoAll(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4159,6 +4256,7 @@ samr_dissect_struct_GroupInfoAttributes(tvbuff_t *tvb _U_, int offset _U_, packe { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -4175,6 +4273,11 @@ samr_dissect_struct_GroupInfoAttributes(tvbuff_t *tvb _U_, int offset _U_, packe proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -4196,6 +4299,7 @@ samr_dissect_struct_GroupInfoDescription(tvbuff_t *tvb _U_, int offset _U_, pack { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4212,6 +4316,11 @@ samr_dissect_struct_GroupInfoDescription(tvbuff_t *tvb _U_, int offset _U_, pack proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4227,11 +4336,11 @@ samr_dissect_struct_GroupInfoDescription(tvbuff_t *tvb _U_, int offset _U_, pack int samr_dissect_enum_GroupInfoEnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -4292,8 +4401,9 @@ samr_dissect_GroupInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; - guint16 level; + guint1632 level; old_offset = offset; if (parent_tree) { @@ -4301,7 +4411,7 @@ samr_dissect_GroupInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_item_add_subtree(item, ett_samr_samr_GroupInfo); } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, &level); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, &level); ALIGN_TO_5_BYTES; switch(level) { @@ -4327,6 +4437,11 @@ samr_dissect_GroupInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4455,6 +4570,7 @@ samr_dissect_struct_GetMembersBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_i { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4475,6 +4591,11 @@ samr_dissect_struct_GetMembersBuffer(tvbuff_t *tvb _U_, int offset _U_, packet_i proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4514,6 +4635,7 @@ samr_dissect_struct_AliasInfoAll(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4534,6 +4656,11 @@ samr_dissect_struct_AliasInfoAll(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4547,11 +4674,11 @@ samr_dissect_struct_AliasInfoAll(tvbuff_t *tvb _U_, int offset _U_, packet_info int samr_dissect_enum_AliasInfoEnum(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -4594,8 +4721,9 @@ samr_dissect_AliasInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; - guint16 level; + guint1632 level; old_offset = offset; if (parent_tree) { @@ -4603,7 +4731,7 @@ samr_dissect_AliasInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ tree = proto_item_add_subtree(item, ett_samr_samr_AliasInfo); } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, &level); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, &level); ALIGN_TO_5_BYTES; switch(level) { @@ -4621,9 +4749,55 @@ samr_dissect_AliasInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_ } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } +/* IDL: enum { */ +/* IDL: UserGeneralInformation=1, */ +/* IDL: UserPreferencesInformation=2, */ +/* IDL: UserLogonInformation=3, */ +/* IDL: UserLogonHoursInformation=4, */ +/* IDL: UserAccountInformation=5, */ +/* IDL: UserNameInformation=6, */ +/* IDL: UserAccountNameInformation=7, */ +/* IDL: UserFullNameInformation=8, */ +/* IDL: UserPrimaryGroupInformation=9, */ +/* IDL: UserHomeInformation=10, */ +/* IDL: UserScriptInformation=11, */ +/* IDL: UserProfileInformation=12, */ +/* IDL: UserAdminCommentInformation=13, */ +/* IDL: UserWorkStationsInformation=14, */ +/* IDL: UserControlInformation=16, */ +/* IDL: UserExpiresInformation=17, */ +/* IDL: UserInternal1Information=18, */ +/* IDL: UserParametersInformation=20, */ +/* IDL: UserAllInformation=21, */ +/* IDL: UserInternal4Information=23, */ +/* IDL: UserInternal5Information=24, */ +/* IDL: UserInternal4InformationNew=25, */ +/* IDL: UserInternal5InformationNew=26, */ +/* IDL: } */ + +int +samr_dissect_enum_UserInfoLevel(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +{ + guint1632 parameter=0; + if(param){ + parameter=(guint1632)*param; + } + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + if(param){ + *param=(guint32)parameter; + } + return offset; +} + + /* IDL: struct { */ /* IDL: lsa_String account_name; */ /* IDL: lsa_String full_name; */ @@ -4677,6 +4851,7 @@ samr_dissect_struct_UserInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4701,6 +4876,11 @@ samr_dissect_struct_UserInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4749,6 +4929,7 @@ samr_dissect_struct_UserInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4771,6 +4952,11 @@ samr_dissect_struct_UserInfo2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -4817,6 +5003,7 @@ samr_dissect_struct_LogonHours(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -4835,6 +5022,11 @@ samr_dissect_struct_LogonHours(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5009,6 +5201,7 @@ samr_dissect_struct_UserInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5059,6 +5252,11 @@ samr_dissect_struct_UserInfo3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5080,6 +5278,7 @@ samr_dissect_struct_UserInfo4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5096,6 +5295,11 @@ samr_dissect_struct_UserInfo4(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5270,6 +5474,7 @@ samr_dissect_struct_UserInfo5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5320,6 +5525,11 @@ samr_dissect_struct_UserInfo5(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5350,6 +5560,7 @@ samr_dissect_struct_UserInfo6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5368,6 +5579,11 @@ samr_dissect_struct_UserInfo6(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5389,6 +5605,7 @@ samr_dissect_struct_UserInfo7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5405,6 +5622,11 @@ samr_dissect_struct_UserInfo7(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5426,6 +5648,7 @@ samr_dissect_struct_UserInfo8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5442,6 +5665,11 @@ samr_dissect_struct_UserInfo8(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5463,6 +5691,7 @@ samr_dissect_struct_UserInfo9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -5479,6 +5708,11 @@ samr_dissect_struct_UserInfo9(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -5509,6 +5743,7 @@ samr_dissect_struct_UserInfo10(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5527,6 +5762,11 @@ samr_dissect_struct_UserInfo10(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5548,6 +5788,7 @@ samr_dissect_struct_UserInfo11(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5564,6 +5805,11 @@ samr_dissect_struct_UserInfo11(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5585,6 +5831,7 @@ samr_dissect_struct_UserInfo12(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5601,6 +5848,11 @@ samr_dissect_struct_UserInfo12(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5622,6 +5874,7 @@ samr_dissect_struct_UserInfo13(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5638,6 +5891,11 @@ samr_dissect_struct_UserInfo13(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5659,6 +5917,7 @@ samr_dissect_struct_UserInfo14(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5675,6 +5934,11 @@ samr_dissect_struct_UserInfo14(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -5696,6 +5960,7 @@ samr_dissect_struct_UserInfo16(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -5712,6 +5977,11 @@ samr_dissect_struct_UserInfo16(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -5733,6 +6003,7 @@ samr_dissect_struct_UserInfo17(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -5749,6 +6020,11 @@ samr_dissect_struct_UserInfo17(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -5770,6 +6046,7 @@ samr_dissect_struct_UserInfo20(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -5786,6 +6063,11 @@ samr_dissect_struct_UserInfo20(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -6421,6 +6703,7 @@ samr_dissect_struct_UserInfo21(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -6503,6 +6786,11 @@ samr_dissect_struct_UserInfo21(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -6549,6 +6837,7 @@ samr_dissect_struct_CryptPassword(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + return offset; } @@ -6579,6 +6868,7 @@ samr_dissect_struct_UserInfo23(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -6597,6 +6887,11 @@ samr_dissect_struct_UserInfo23(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -6644,6 +6939,7 @@ samr_dissect_struct_UserInfo24(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + return offset; } @@ -6690,6 +6986,7 @@ samr_dissect_struct_CryptPasswordEx(tvbuff_t *tvb _U_, int offset _U_, packet_in proto_item_set_len(item, offset-old_offset); + return offset; } @@ -6720,6 +7017,7 @@ samr_dissect_struct_UserInfo25(tvbuff_t *tvb _U_, int offset _U_, packet_info *p { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -6738,6 +7036,11 @@ samr_dissect_struct_UserInfo25(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -6785,6 +7088,7 @@ samr_dissect_struct_UserInfo26(tvbuff_t *tvb _U_, int offset _U_, packet_info *p proto_item_set_len(item, offset-old_offset); + return offset; } @@ -6995,6 +7299,7 @@ samr_dissect_UserInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint16 level; @@ -7098,6 +7403,11 @@ samr_dissect_UserInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7143,6 +7453,7 @@ samr_dissect_struct_Password(tvbuff_t *tvb _U_, int offset _U_, packet_info *pin proto_item_set_len(item, offset-old_offset); + return offset; } @@ -7173,6 +7484,7 @@ samr_dissect_struct_RidWithAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_i { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -7191,6 +7503,11 @@ samr_dissect_struct_RidWithAttribute(tvbuff_t *tvb _U_, int offset _U_, packet_i proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -7237,6 +7554,7 @@ samr_dissect_struct_RidWithAttributeArray(tvbuff_t *tvb _U_, int offset _U_, pac { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7255,6 +7573,11 @@ samr_dissect_struct_RidWithAttributeArray(tvbuff_t *tvb _U_, int offset _U_, pac proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7321,6 +7644,7 @@ samr_dissect_struct_DispEntryGeneral(tvbuff_t *tvb _U_, int offset _U_, packet_i { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7347,6 +7671,11 @@ samr_dissect_struct_DispEntryGeneral(tvbuff_t *tvb _U_, int offset _U_, packet_i proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7393,6 +7722,7 @@ samr_dissect_struct_DispInfoGeneral(tvbuff_t *tvb _U_, int offset _U_, packet_in { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7411,6 +7741,11 @@ samr_dissect_struct_DispInfoGeneral(tvbuff_t *tvb _U_, int offset _U_, packet_in proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7468,6 +7803,7 @@ samr_dissect_struct_DispEntryFull(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7492,6 +7828,11 @@ samr_dissect_struct_DispEntryFull(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7538,6 +7879,7 @@ samr_dissect_struct_DispInfoFull(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7556,6 +7898,11 @@ samr_dissect_struct_DispInfoFull(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7613,6 +7960,7 @@ samr_dissect_struct_DispEntryFullGroup(tvbuff_t *tvb _U_, int offset _U_, packet { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7637,6 +7985,11 @@ samr_dissect_struct_DispEntryFullGroup(tvbuff_t *tvb _U_, int offset _U_, packet proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7683,6 +8036,7 @@ samr_dissect_struct_DispInfoFullGroups(tvbuff_t *tvb _U_, int offset _U_, packet { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7701,6 +8055,11 @@ samr_dissect_struct_DispInfoFullGroups(tvbuff_t *tvb _U_, int offset _U_, packet proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7731,6 +8090,7 @@ samr_dissect_struct_DispEntryAscii(tvbuff_t *tvb _U_, int offset _U_, packet_inf { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -7749,6 +8109,11 @@ samr_dissect_struct_DispEntryAscii(tvbuff_t *tvb _U_, int offset _U_, packet_inf proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -7795,6 +8160,7 @@ samr_dissect_struct_DispInfoAscii(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -7813,6 +8179,11 @@ samr_dissect_struct_DispInfoAscii(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7828,11 +8199,11 @@ samr_dissect_struct_DispInfoAscii(tvbuff_t *tvb _U_, int offset _U_, packet_info int samr_dissect_enum_DomainDisplayInformation(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -7893,6 +8264,7 @@ samr_dissect_DispInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint16 level; @@ -7928,6 +8300,11 @@ samr_dissect_DispInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -7957,6 +8334,7 @@ samr_dissect_struct_PwInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -7975,24 +8353,23 @@ samr_dissect_struct_PwInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } /* IDL: enum { */ -/* IDL: SAMR_PWD_CHANGE_NO_ERROR=0, */ -/* IDL: SAMR_PWD_CHANGE_PASSWORD_TOO_SHORT=1, */ -/* IDL: SAMR_PWD_CHANGE_PWD_IN_HISTORY=2, */ -/* IDL: SAMR_PWD_CHANGE_USERNAME_IN_PASSWORD=3, */ -/* IDL: SAMR_PWD_CHANGE_FULLNAME_IN_PASSWORD=4, */ -/* IDL: SAMR_PWD_CHANGE_NOT_COMPLEX=5, */ -/* IDL: SAMR_PWD_CHANGE_MACHINE_PASSWORD_NOT_DEFAULT=6, */ -/* IDL: SAMR_PWD_CHANGE_FAILED_BY_FILTER=7, */ -/* IDL: SAMR_PWD_CHANGE_PASSWORD_TOO_LONG=8, */ +/* IDL: SAMR_CONNECT_PRE_W2K=1, */ +/* IDL: SAMR_CONNECT_W2K=2, */ +/* IDL: SAMR_CONNECT_AFTER_W2K=3, */ /* IDL: } */ int -samr_dissect_enum_ExtendedFailureReason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) +samr_dissect_enum_ConnectVersion(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { guint32 parameter=0; if(param){ @@ -8007,7 +8384,7 @@ samr_dissect_enum_ExtendedFailureReason(tvbuff_t *tvb _U_, int offset _U_, packe /* IDL: struct { */ -/* IDL: samr_ExtendedFailureReason reason; */ +/* IDL: samr_RejectReason reason; */ /* IDL: uint32 unknown1; */ /* IDL: uint32 unknown2; */ /* IDL: } */ @@ -8015,7 +8392,7 @@ samr_dissect_enum_ExtendedFailureReason(tvbuff_t *tvb _U_, int offset _U_, packe static int samr_dissect_element_ChangeReject_reason(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_enum_ExtendedFailureReason(tvb, offset, pinfo, tree, drep, hf_samr_samr_ChangeReject_reason, 0); + offset = samr_dissect_enum_RejectReason(tvb, offset, pinfo, tree, drep, hf_samr_samr_ChangeReject_reason, 0); return offset; } @@ -8041,6 +8418,7 @@ samr_dissect_struct_ChangeReject(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -8061,65 +8439,9 @@ samr_dissect_struct_ChangeReject(tvbuff_t *tvb _U_, int offset _U_, packet_info proto_item_set_len(item, offset-old_offset); - return offset; -} - - -/* IDL: enum { */ -/* IDL: CONNECTION_REVISION_PRE_W2K=1, */ -/* IDL: CONNECTION_REVISION_W2K=2, */ -/* IDL: CONNECTION_REVISION_XP=3, */ -/* IDL: } */ - -int -samr_dissect_enum_ConnectRevision(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) -{ - guint32 parameter=0; - if(param){ - parameter=(guint32)*param; - } - offset = dissect_ndr_uint32(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); - if(param){ - *param=(guint32)parameter; - } - return offset; -} - - -/* IDL: bitmap { */ -/* IDL: SAMR_FEATURES_DONT_CONCAT_RIDS = 0x00000001 , */ -/* IDL: } */ - -int -samr_dissect_bitmap_SupportedFeatures(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 param _U_) -{ - proto_item *item = NULL; - proto_tree *tree = NULL; - - guint32 flags; - ALIGN_TO_4_BYTES; - - if (parent_tree) { - item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, 4, TRUE); - tree = proto_item_add_subtree(item,ett_samr_samr_SupportedFeatures); - } - - offset = dissect_ndr_uint32(tvb, offset, pinfo, NULL, drep, -1, &flags); - proto_item_append_text(item, ": "); - - if (!flags) - proto_item_append_text(item, "(No values set)"); - - proto_tree_add_boolean(tree, hf_samr_samr_SupportedFeatures_SAMR_FEATURES_DONT_CONCAT_RIDS, tvb, offset-4, 4, flags); - if (flags&( 0x00000001 )){ - proto_item_append_text(item, "SAMR_FEATURES_DONT_CONCAT_RIDS"); - if (flags & (~( 0x00000001 ))) - proto_item_append_text(item, ", "); - } - flags&=(~( 0x00000001 )); - if (flags) { - proto_item_append_text(item, "Unknown bitmap value 0x%x", flags); + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; } return offset; @@ -8127,22 +8449,22 @@ samr_dissect_bitmap_SupportedFeatures(tvbuff_t *tvb _U_, int offset _U_, packet_ /* IDL: struct { */ -/* IDL: samr_ConnectRevision revision; */ -/* IDL: samr_SupportedFeatures features; */ +/* IDL: samr_ConnectVersion client_version; */ +/* IDL: uint32 unknown2; */ /* IDL: } */ static int -samr_dissect_element_ConnectInfo1_revision(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_ConnectInfo1_client_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_enum_ConnectRevision(tvb, offset, pinfo, tree, drep, hf_samr_samr_ConnectInfo1_revision, 0); + offset = samr_dissect_enum_ConnectVersion(tvb, offset, pinfo, tree, drep, hf_samr_samr_ConnectInfo1_client_version, 0); return offset; } static int -samr_dissect_element_ConnectInfo1_features(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_ConnectInfo1_unknown2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_SupportedFeatures(tvb, offset, pinfo, tree, drep, hf_samr_samr_ConnectInfo1_features, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_samr_samr_ConnectInfo1_unknown2, 0); return offset; } @@ -8152,6 +8474,7 @@ samr_dissect_struct_ConnectInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_4_BYTES; @@ -8163,13 +8486,18 @@ samr_dissect_struct_ConnectInfo1(tvbuff_t *tvb _U_, int offset _U_, packet_info tree = proto_item_add_subtree(item, ett_samr_samr_ConnectInfo1); } - offset = samr_dissect_element_ConnectInfo1_revision(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_ConnectInfo1_client_version(tvb, offset, pinfo, tree, drep); - offset = samr_dissect_element_ConnectInfo1_features(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_ConnectInfo1_unknown2(tvb, offset, pinfo, tree, drep); proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8191,6 +8519,7 @@ samr_dissect_ConnectInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint32 level; @@ -8210,6 +8539,11 @@ samr_dissect_ConnectInfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _ } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_4_BYTES; + } + return offset; } @@ -8307,11 +8641,11 @@ samr_dissect_bitmap_ValidateFieldsPresent(tvbuff_t *tvb _U_, int offset _U_, pac int samr_dissect_enum_ValidatePasswordLevel(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -8323,22 +8657,24 @@ samr_dissect_enum_ValidatePasswordLevel(tvbuff_t *tvb _U_, int offset _U_, packe /* IDL: SAMR_VALIDATION_STATUS_SUCCESS=0, */ /* IDL: SAMR_VALIDATION_STATUS_PASSWORD_MUST_CHANGE=1, */ /* IDL: SAMR_VALIDATION_STATUS_ACCOUNT_LOCKED_OUT=2, */ +/* IDL: SAMR_VALIDATION_STATUS_PASSWORD_EXPIRED=3, */ /* IDL: SAMR_VALIDATION_STATUS_BAD_PASSWORD=4, */ /* IDL: SAMR_VALIDATION_STATUS_PWD_HISTORY_CONFLICT=5, */ /* IDL: SAMR_VALIDATION_STATUS_PWD_TOO_SHORT=6, */ /* IDL: SAMR_VALIDATION_STATUS_PWD_TOO_LONG=7, */ /* IDL: SAMR_VALIDATION_STATUS_NOT_COMPLEX_ENOUGH=8, */ /* IDL: SAMR_VALIDATION_STATUS_PASSWORD_TOO_RECENT=9, */ +/* IDL: SAMR_VALIDATION_STATUS_PASSWORD_FILTER_ERROR=10, */ /* IDL: } */ int samr_dissect_enum_ValidationStatus(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_, int hf_index _U_, guint32 *param _U_) { - guint16 parameter=0; + guint1632 parameter=0; if(param){ - parameter=(guint16)*param; + parameter=(guint1632)*param; } - offset = dissect_ndr_uint16(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); + offset = dissect_ndr_uint1632(tvb, offset, pinfo, tree, drep, hf_index, ¶meter); if(param){ *param=(guint32)parameter; } @@ -8388,6 +8724,7 @@ samr_dissect_struct_ValidationBlob(tvbuff_t *tvb _U_, int offset _U_, packet_inf { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_5_BYTES; @@ -8406,6 +8743,11 @@ samr_dissect_struct_ValidationBlob(tvbuff_t *tvb _U_, int offset _U_, packet_inf proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_5_BYTES; + } + return offset; } @@ -8497,6 +8839,7 @@ samr_dissect_struct_ValidatePasswordInfo(tvbuff_t *tvb _U_, int offset _U_, pack { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -8525,6 +8868,11 @@ samr_dissect_struct_ValidatePasswordInfo(tvbuff_t *tvb _U_, int offset _U_, pack proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8555,6 +8903,7 @@ samr_dissect_struct_ValidatePasswordRepCtr(tvbuff_t *tvb _U_, int offset _U_, pa { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -8573,6 +8922,11 @@ samr_dissect_struct_ValidatePasswordRepCtr(tvbuff_t *tvb _U_, int offset _U_, pa proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8612,6 +8966,7 @@ samr_dissect_ValidatePasswordRep(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint16 level; @@ -8639,6 +8994,11 @@ samr_dissect_ValidatePasswordRep(tvbuff_t *tvb _U_, int offset _U_, packet_info } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8704,6 +9064,7 @@ samr_dissect_struct_ValidatePasswordReq3(tvbuff_t *tvb _U_, int offset _U_, pack { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -8730,6 +9091,11 @@ samr_dissect_struct_ValidatePasswordReq3(tvbuff_t *tvb _U_, int offset _U_, pack proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8787,6 +9153,7 @@ samr_dissect_struct_ValidatePasswordReq2(tvbuff_t *tvb _U_, int offset _U_, pack { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -8811,6 +9178,11 @@ samr_dissect_struct_ValidatePasswordReq2(tvbuff_t *tvb _U_, int offset _U_, pack proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8841,6 +9213,7 @@ samr_dissect_struct_ValidatePasswordReq1(tvbuff_t *tvb _U_, int offset _U_, pack { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; ALIGN_TO_8_BYTES; @@ -8859,6 +9232,11 @@ samr_dissect_struct_ValidatePasswordReq1(tvbuff_t *tvb _U_, int offset _U_, pack proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } @@ -8898,6 +9276,7 @@ samr_dissect_ValidatePasswordReq(tvbuff_t *tvb _U_, int offset _U_, packet_info { proto_item *item = NULL; proto_tree *tree = NULL; + dcerpc_info *di = pinfo->private_data; int old_offset; guint16 level; @@ -8925,6 +9304,11 @@ samr_dissect_ValidatePasswordReq(tvbuff_t *tvb _U_, int offset _U_, packet_info } proto_item_set_len(item, offset-old_offset); + + if (di->call_data->flags & DCERPC_IS_NDR64) { + ALIGN_TO_8_BYTES; + } + return offset; } static int @@ -8946,7 +9330,7 @@ samr_dissect_element_Connect_system_name_(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_Connect_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_ServerAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); return offset; } @@ -8969,7 +9353,7 @@ samr_dissect_element_Connect_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: NTSTATUS samr_Connect( */ /* IDL: [unique(1)] [in] uint16 *system_name, */ -/* IDL: [in] samr_ServerAccessMask access_mask, */ +/* IDL: [in] samr_ConnectAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *connect_handle */ /* IDL: ); */ @@ -9147,7 +9531,7 @@ samr_dissect_element_QuerySecurity_sec_info(tvbuff_t *tvb _U_, int offset _U_, p static int samr_dissect_element_QuerySecurity_sdbuf(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QuerySecurity_sdbuf_, NDR_POINTER_UNIQUE, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_QuerySecurity_sdbuf); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QuerySecurity_sdbuf_, NDR_POINTER_REF, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_QuerySecurity_sdbuf); return offset; } @@ -9155,6 +9539,14 @@ samr_dissect_element_QuerySecurity_sdbuf(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_QuerySecurity_sdbuf_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QuerySecurity_sdbuf__, NDR_POINTER_UNIQUE, "Pointer to Sdbuf (sec_desc_buf)",hf_samr_samr_QuerySecurity_sdbuf); + + return offset; +} + +static int +samr_dissect_element_QuerySecurity_sdbuf__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset=cnf_dissect_sec_desc_buf(tvb, offset, pinfo, tree, drep); return offset; @@ -9163,7 +9555,7 @@ samr_dissect_element_QuerySecurity_sdbuf_(tvbuff_t *tvb _U_, int offset _U_, pac /* IDL: NTSTATUS samr_QuerySecurity( */ /* IDL: [in] [ref] policy_handle *handle, */ /* IDL: [in] security_secinfo sec_info, */ -/* IDL: [out] [unique(1)] sec_desc_buf *sdbuf */ +/* IDL: [out] [ref] sec_desc_buf **sdbuf */ /* IDL: ); */ static int @@ -11773,7 +12165,7 @@ samr_dissect_element_QueryUserInfo_user_handle_(tvbuff_t *tvb _U_, int offset _U static int samr_dissect_element_QueryUserInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_samr_samr_QueryUserInfo_level, 0); + offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, drep, hf_samr_samr_QueryUserInfo_level, 0); return offset; } @@ -11781,7 +12173,7 @@ samr_dissect_element_QueryUserInfo_level(tvbuff_t *tvb _U_, int offset _U_, pack static int samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QueryUserInfo_info_, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QueryUserInfo_info_, NDR_POINTER_REF, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info); return offset; } @@ -11789,6 +12181,14 @@ samr_dissect_element_QueryUserInfo_info(tvbuff_t *tvb _U_, int offset _U_, packe static int samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_QueryUserInfo_info__, NDR_POINTER_UNIQUE, "Pointer to Info (samr_UserInfo)",hf_samr_samr_QueryUserInfo_info); + + return offset; +} + +static int +samr_dissect_element_QueryUserInfo_info__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset = samr_dissect_UserInfo(tvb, offset, pinfo, tree, drep, hf_samr_samr_QueryUserInfo_info, 0); return offset; @@ -11796,8 +12196,8 @@ samr_dissect_element_QueryUserInfo_info_(tvbuff_t *tvb _U_, int offset _U_, pack /* IDL: NTSTATUS samr_QueryUserInfo( */ /* IDL: [in] [ref] policy_handle *user_handle, */ -/* IDL: [in] uint16 level, */ -/* IDL: [unique(1)] [out] [switch_is(level)] samr_UserInfo *info */ +/* IDL: [in] samr_UserInfoLevel level, */ +/* IDL: [out] [ref] [switch_is(level)] samr_UserInfo **info */ /* IDL: ); */ static int @@ -11847,7 +12247,7 @@ samr_dissect_element_SetUserInfo_user_handle_(tvbuff_t *tvb _U_, int offset _U_, static int samr_dissect_element_SetUserInfo_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_samr_samr_SetUserInfo_level, 0); + offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, drep, hf_samr_samr_SetUserInfo_level, 0); return offset; } @@ -11870,7 +12270,7 @@ samr_dissect_element_SetUserInfo_info_(tvbuff_t *tvb _U_, int offset _U_, packet /* IDL: NTSTATUS samr_SetUserInfo( */ /* IDL: [in] [ref] policy_handle *user_handle, */ -/* IDL: [in] uint16 level, */ +/* IDL: [in] samr_UserInfoLevel level, */ /* IDL: [ref] [in] [switch_is(level)] samr_UserInfo *info */ /* IDL: ); */ @@ -12661,7 +13061,7 @@ samr_dissect_element_QueryUserInfo2_user_handle_(tvbuff_t *tvb _U_, int offset _ static int samr_dissect_element_QueryUserInfo2_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_samr_samr_QueryUserInfo2_level, 0); + offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, drep, hf_samr_samr_QueryUserInfo2_level, 0); return offset; } @@ -12684,7 +13084,7 @@ samr_dissect_element_QueryUserInfo2_info_(tvbuff_t *tvb _U_, int offset _U_, pac /* IDL: NTSTATUS samr_QueryUserInfo2( */ /* IDL: [in] [ref] policy_handle *user_handle, */ -/* IDL: [in] uint16 level, */ +/* IDL: [in] samr_UserInfoLevel level, */ /* IDL: [unique(1)] [out] [switch_is(level)] samr_UserInfo *info */ /* IDL: ); */ @@ -13633,7 +14033,7 @@ samr_dissect_element_Connect2_system_name_(tvbuff_t *tvb _U_, int offset _U_, pa static int samr_dissect_element_Connect2_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_ServerAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); return offset; } @@ -13656,7 +14056,7 @@ samr_dissect_element_Connect2_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: NTSTATUS samr_Connect2( */ /* IDL: [unique(1)] [in] [charset(UTF16)] uint16 *system_name, */ -/* IDL: [in] samr_ServerAccessMask access_mask, */ +/* IDL: [in] samr_ConnectAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *connect_handle */ /* IDL: ); */ @@ -13707,7 +14107,7 @@ samr_dissect_element_SetUserInfo2_user_handle_(tvbuff_t *tvb _U_, int offset _U_ static int samr_dissect_element_SetUserInfo2_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint16(tvb, offset, pinfo, tree, drep, hf_samr_samr_SetUserInfo2_level, 0); + offset = samr_dissect_enum_UserInfoLevel(tvb, offset, pinfo, tree, drep, hf_samr_samr_SetUserInfo2_level, 0); return offset; } @@ -13730,7 +14130,7 @@ samr_dissect_element_SetUserInfo2_info_(tvbuff_t *tvb _U_, int offset _U_, packe /* IDL: NTSTATUS samr_SetUserInfo2( */ /* IDL: [in] [ref] policy_handle *user_handle, */ -/* IDL: [in] uint16 level, */ +/* IDL: [in] samr_UserInfoLevel level, */ /* IDL: [ref] [in] [switch_is(level)] samr_UserInfo *info */ /* IDL: ); */ @@ -13922,7 +14322,7 @@ samr_dissect_element_Connect3_unknown(tvbuff_t *tvb _U_, int offset _U_, packet_ static int samr_dissect_element_Connect3_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_ServerAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); return offset; } @@ -13946,7 +14346,7 @@ samr_dissect_element_Connect3_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: NTSTATUS samr_Connect3( */ /* IDL: [unique(1)] [in] [charset(UTF16)] uint16 *system_name, */ /* IDL: [in] uint32 unknown, */ -/* IDL: [in] samr_ServerAccessMask access_mask, */ +/* IDL: [in] samr_ConnectAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *connect_handle */ /* IDL: ); */ @@ -14000,9 +14400,9 @@ samr_dissect_element_Connect4_system_name_(tvbuff_t *tvb _U_, int offset _U_, pa } static int -samr_dissect_element_Connect4_revision(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_Connect4_client_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_enum_ConnectRevision(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect4_revision, 0); + offset = samr_dissect_enum_ConnectVersion(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect4_client_version, 0); return offset; } @@ -14010,7 +14410,7 @@ samr_dissect_element_Connect4_revision(tvbuff_t *tvb _U_, int offset _U_, packet static int samr_dissect_element_Connect4_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_ServerAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); return offset; } @@ -14033,8 +14433,8 @@ samr_dissect_element_Connect4_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: NTSTATUS samr_Connect4( */ /* IDL: [unique(1)] [in] [charset(UTF16)] uint16 *system_name, */ -/* IDL: [in] samr_ConnectRevision revision, */ -/* IDL: [in] samr_ServerAccessMask access_mask, */ +/* IDL: [in] samr_ConnectVersion client_version, */ +/* IDL: [in] samr_ConnectAccessMask access_mask, */ /* IDL: [out] [ref] policy_handle *connect_handle */ /* IDL: ); */ @@ -14061,7 +14461,7 @@ samr_dissect_Connect4_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi pinfo->dcerpc_procedure_name="Connect4"; offset = samr_dissect_element_Connect4_system_name(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); - offset = samr_dissect_element_Connect4_revision(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_Connect4_client_version(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); offset = samr_dissect_element_Connect4_access_mask(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); @@ -14191,7 +14591,7 @@ samr_dissect_element_ChangePasswordUser3_password3_(tvbuff_t *tvb _U_, int offse static int samr_dissect_element_ChangePasswordUser3_dominfo(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_dominfo_, NDR_POINTER_UNIQUE, "Pointer to Dominfo (samr_DomInfo1)",hf_samr_samr_ChangePasswordUser3_dominfo); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_dominfo_, NDR_POINTER_REF, "Pointer to Dominfo (samr_DomInfo1)",hf_samr_samr_ChangePasswordUser3_dominfo); return offset; } @@ -14199,6 +14599,14 @@ samr_dissect_element_ChangePasswordUser3_dominfo(tvbuff_t *tvb _U_, int offset _ static int samr_dissect_element_ChangePasswordUser3_dominfo_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_dominfo__, NDR_POINTER_UNIQUE, "Pointer to Dominfo (samr_DomInfo1)",hf_samr_samr_ChangePasswordUser3_dominfo); + + return offset; +} + +static int +samr_dissect_element_ChangePasswordUser3_dominfo__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset = samr_dissect_struct_DomInfo1(tvb,offset,pinfo,tree,drep,hf_samr_samr_ChangePasswordUser3_dominfo,0); return offset; @@ -14207,7 +14615,7 @@ samr_dissect_element_ChangePasswordUser3_dominfo_(tvbuff_t *tvb _U_, int offset static int samr_dissect_element_ChangePasswordUser3_reject(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_reject_, NDR_POINTER_UNIQUE, "Pointer to Reject (samr_ChangeReject)",hf_samr_samr_ChangePasswordUser3_reject); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_reject_, NDR_POINTER_REF, "Pointer to Reject (samr_ChangeReject)",hf_samr_samr_ChangePasswordUser3_reject); return offset; } @@ -14215,6 +14623,14 @@ samr_dissect_element_ChangePasswordUser3_reject(tvbuff_t *tvb _U_, int offset _U static int samr_dissect_element_ChangePasswordUser3_reject_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ChangePasswordUser3_reject__, NDR_POINTER_UNIQUE, "Pointer to Reject (samr_ChangeReject)",hf_samr_samr_ChangePasswordUser3_reject); + + return offset; +} + +static int +samr_dissect_element_ChangePasswordUser3_reject__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset = samr_dissect_struct_ChangeReject(tvb,offset,pinfo,tree,drep,hf_samr_samr_ChangePasswordUser3_reject,0); return offset; @@ -14229,8 +14645,8 @@ samr_dissect_element_ChangePasswordUser3_reject_(tvbuff_t *tvb _U_, int offset _ /* IDL: [unique(1)] [in] samr_CryptPassword *lm_password, */ /* IDL: [unique(1)] [in] samr_Password *lm_verifier, */ /* IDL: [unique(1)] [in] samr_CryptPassword *password3, */ -/* IDL: [out] [unique(1)] samr_DomInfo1 *dominfo, */ -/* IDL: [out] [unique(1)] samr_ChangeReject *reject */ +/* IDL: [out] [ref] samr_DomInfo1 **dominfo, */ +/* IDL: [out] [ref] samr_ChangeReject **reject */ /* IDL: ); */ static int @@ -14298,31 +14714,63 @@ samr_dissect_element_Connect5_system_name_(tvbuff_t *tvb _U_, int offset _U_, pa static int samr_dissect_element_Connect5_access_mask(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_bitmap_ServerAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + offset = samr_dissect_bitmap_ConnectAccessMask(tvb, offset, pinfo, tree, drep, hf_samr_connect_access_mask, 0); + + return offset; +} + +static int +samr_dissect_element_Connect5_level_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_level_in, 0); + + return offset; +} + +static int +samr_dissect_element_Connect5_info_in(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_Connect5_info_in_, NDR_POINTER_REF, "Pointer to Info In (samr_ConnectInfo)",hf_samr_samr_Connect5_info_in); + + return offset; +} + +static int +samr_dissect_element_Connect5_info_in_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = samr_dissect_ConnectInfo(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_info_in, 0); + + return offset; +} + +static int +samr_dissect_element_Connect5_level_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_Connect5_level_out_, NDR_POINTER_REF, "Pointer to Level Out (uint32)",hf_samr_samr_Connect5_level_out); return offset; } static int -samr_dissect_element_Connect5_level(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_Connect5_level_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_level, 0); + offset = PIDL_dissect_uint32(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_level_out, 0); return offset; } static int -samr_dissect_element_Connect5_info(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_Connect5_info_out(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_Connect5_info_, NDR_POINTER_REF, "Pointer to Info (samr_ConnectInfo)",hf_samr_samr_Connect5_info); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_Connect5_info_out_, NDR_POINTER_REF, "Pointer to Info Out (samr_ConnectInfo)",hf_samr_samr_Connect5_info_out); return offset; } static int -samr_dissect_element_Connect5_info_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +samr_dissect_element_Connect5_info_out_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = samr_dissect_ConnectInfo(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_info, 0); + offset = samr_dissect_ConnectInfo(tvb, offset, pinfo, tree, drep, hf_samr_samr_Connect5_info_out, 0); return offset; } @@ -14345,9 +14793,11 @@ samr_dissect_element_Connect5_connect_handle_(tvbuff_t *tvb _U_, int offset _U_, /* IDL: NTSTATUS samr_Connect5( */ /* IDL: [unique(1)] [in] [charset(UTF16)] uint16 *system_name, */ -/* IDL: [in] samr_ServerAccessMask access_mask, */ -/* IDL: [out] [in] uint32 level, */ -/* IDL: [out] [in] [ref] [switch_is(level)] samr_ConnectInfo *info, */ +/* IDL: [in] samr_ConnectAccessMask access_mask, */ +/* IDL: [in] uint32 level_in, */ +/* IDL: [ref] [in] [switch_is(level_in)] samr_ConnectInfo *info_in, */ +/* IDL: [out] [ref] uint32 *level_out, */ +/* IDL: [out] [ref] [switch_is(*level_out)] samr_ConnectInfo *info_out, */ /* IDL: [out] [ref] policy_handle *connect_handle */ /* IDL: ); */ @@ -14357,10 +14807,10 @@ samr_dissect_Connect5_response(tvbuff_t *tvb _U_, int offset _U_, packet_info *p guint32 status; pinfo->dcerpc_procedure_name="Connect5"; - offset = samr_dissect_element_Connect5_level(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_Connect5_level_out(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); - offset = samr_dissect_element_Connect5_info(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_Connect5_info_out(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); offset = samr_dissect_element_Connect5_connect_handle(tvb, offset, pinfo, tree, drep); @@ -14382,9 +14832,9 @@ samr_dissect_Connect5_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pi offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); offset = samr_dissect_element_Connect5_access_mask(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); - offset = samr_dissect_element_Connect5_level(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_Connect5_level_in(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); - offset = samr_dissect_element_Connect5_info(tvb, offset, pinfo, tree, drep); + offset = samr_dissect_element_Connect5_info_in(tvb, offset, pinfo, tree, drep); offset = dissect_deferred_pointers(pinfo, tvb, offset, drep); return offset; } @@ -14416,7 +14866,7 @@ samr_dissect_element_RidToSid_rid(tvbuff_t *tvb _U_, int offset _U_, packet_info static int samr_dissect_element_RidToSid_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_RidToSid_sid_, NDR_POINTER_UNIQUE, "Pointer to Sid (dom_sid2)",hf_samr_samr_RidToSid_sid); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_RidToSid_sid_, NDR_POINTER_REF, "Pointer to Sid (dom_sid2)",hf_samr_samr_RidToSid_sid); return offset; } @@ -14424,6 +14874,14 @@ samr_dissect_element_RidToSid_sid(tvbuff_t *tvb _U_, int offset _U_, packet_info static int samr_dissect_element_RidToSid_sid_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_RidToSid_sid__, NDR_POINTER_UNIQUE, "Pointer to Sid (dom_sid2)",hf_samr_samr_RidToSid_sid); + + return offset; +} + +static int +samr_dissect_element_RidToSid_sid__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset=cnf_dissect_dom_sid2(tvb, offset, pinfo, tree, drep); return offset; @@ -14432,7 +14890,7 @@ samr_dissect_element_RidToSid_sid_(tvbuff_t *tvb _U_, int offset _U_, packet_inf /* IDL: NTSTATUS samr_RidToSid( */ /* IDL: [in] [ref] policy_handle *domain_handle, */ /* IDL: [in] uint32 rid, */ -/* IDL: [out] [unique(1)] dom_sid2 *sid */ +/* IDL: [out] [ref] dom_sid2 **sid */ /* IDL: ); */ static int @@ -14547,6 +15005,14 @@ samr_dissect_element_ValidatePassword_level(tvbuff_t *tvb _U_, int offset _U_, p static int samr_dissect_element_ValidatePassword_req(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ValidatePassword_req_, NDR_POINTER_REF, "Pointer to Req (samr_ValidatePasswordReq)",hf_samr_samr_ValidatePassword_req); + + return offset; +} + +static int +samr_dissect_element_ValidatePassword_req_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset = samr_dissect_ValidatePasswordReq(tvb, offset, pinfo, tree, drep, hf_samr_samr_ValidatePassword_req, 0); return offset; @@ -14555,7 +15021,7 @@ samr_dissect_element_ValidatePassword_req(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { - offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ValidatePassword_rep_, NDR_POINTER_UNIQUE, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep); + offset = dissect_ndr_toplevel_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ValidatePassword_rep_, NDR_POINTER_REF, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep); return offset; } @@ -14563,6 +15029,14 @@ samr_dissect_element_ValidatePassword_rep(tvbuff_t *tvb _U_, int offset _U_, pac static int samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) { + offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_ValidatePassword_rep__, NDR_POINTER_UNIQUE, "Pointer to Rep (samr_ValidatePasswordRep)",hf_samr_samr_ValidatePassword_rep); + + return offset; +} + +static int +samr_dissect_element_ValidatePassword_rep__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_) +{ offset = samr_dissect_ValidatePasswordRep(tvb, offset, pinfo, tree, drep, hf_samr_samr_ValidatePassword_rep, 0); return offset; @@ -14570,8 +15044,8 @@ samr_dissect_element_ValidatePassword_rep_(tvbuff_t *tvb _U_, int offset _U_, pa /* IDL: NTSTATUS samr_ValidatePassword( */ /* IDL: [in] samr_ValidatePasswordLevel level, */ -/* IDL: [in] [switch_is(level)] samr_ValidatePasswordReq req, */ -/* IDL: [unique(1)] [out] [switch_is(level)] samr_ValidatePasswordRep *rep */ +/* IDL: [ref] [in] [switch_is(level)] samr_ValidatePasswordReq *req, */ +/* IDL: [out] [ref] [switch_is(level)] samr_ValidatePasswordRep **rep */ /* IDL: ); */ static int @@ -14747,7 +15221,7 @@ void proto_register_dcerpc_samr(void) { static hf_register_info hf[] = { { &hf_samr_samr_QueryDisplayInfo2_level, - { "Level", "samr.samr_QueryDisplayInfo2.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryDisplayInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, { &hf_samr_rid, { "RID", "samr.rid", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_Connect2_system_name, @@ -14761,11 +15235,9 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_DispInfoAscii_entries, { "Entries", "samr.samr_DispInfoAscii.entries", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryAliasInfo_level, - { "Level", "samr.samr_QueryAliasInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryAliasInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }}, { &hf_samr_samr_DispEntryFullGroup_idx, { "Idx", "samr.samr_DispEntryFullGroup.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ConnectInfo1_revision, - { "Revision", "samr.samr_ConnectInfo1.revision", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectRevision_vals), 0, NULL, HFILL }}, { &hf_samr_samr_QueryGroupInfo_info, { "Info", "samr.samr_QueryGroupInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_LOGON_SCRIPT, @@ -14838,8 +15310,6 @@ void proto_register_dcerpc_samr(void) { "Buf Size", "samr.samr_QueryDisplayInfo3.buf_size", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS, { "Samr Field Num Logons", "samr.samr_FieldsPresent.SAMR_FIELD_NUM_LOGONS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_NUM_LOGONS_tfs), ( 0x00008000 ), NULL, HFILL }}, - { &hf_samr_samr_Connect5_info, - { "Info", "samr.samr_Connect5.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT, { "Samr Validate Field Bad Password Count", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_COUNT_tfs), ( 0x00000008 ), NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_PWD_CHANGE, @@ -14886,10 +15356,12 @@ void proto_register_dcerpc_samr(void) { "Samr Alias Access Add Member", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_ADD_MEMBER", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_ADD_MEMBER_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_samr_samr_UserInfo_info6, { "Info6", "samr.samr_UserInfo.info6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_Connect5_info_out, + { "Info Out", "samr.samr_Connect5.info_out", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo3_logon_script, { "Logon Script", "samr.samr_UserInfo3.logon_script", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_SetUserInfo_level, - { "Level", "samr.samr_SetUserInfo.level", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Level", "samr.samr_SetUserInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo21_last_logon, { "Last Logon", "samr.samr_UserInfo21.last_logon", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_GetBootKeyInformation_domain_handle, @@ -15043,7 +15515,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER, { "Samr Group Access Remove Member", "samr.samr_GroupAccessMask.SAMR_GROUP_ACCESS_REMOVE_MEMBER", FT_BOOLEAN, 32, TFS(&samr_GroupAccessMask_SAMR_GROUP_ACCESS_REMOVE_MEMBER_tfs), ( 0x00000008 ), NULL, HFILL }}, { &hf_samr_samr_GetDisplayEnumerationIndex2_level, - { "Level", "samr.samr_GetDisplayEnumerationIndex2.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_GetDisplayEnumerationIndex2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, { &hf_samr_samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED, { "Acb Enc Txt Pwd Allowed", "samr.samr_AcctFlags.ACB_ENC_TXT_PWD_ALLOWED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_ENC_TXT_PWD_ALLOWED_tfs), ( 0x00000800 ), NULL, HFILL }}, { &hf_samr_samr_AliasInfo_description, @@ -15064,12 +15536,12 @@ void proto_register_dcerpc_samr(void) { "Info14", "samr.samr_UserInfo.info14", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_CreateUser2_access_granted, { "Access Granted", "samr.samr_CreateUser2.access_granted", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectInfo1_client_version, + { "Client Version", "samr.samr_ConnectInfo1.client_version", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectVersion_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_acct_flags, { "Acct Flags", "samr.samr_UserInfo5.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_AcctFlags_ACB_NOT_DELEGATED, { "Acb Not Delegated", "samr.samr_AcctFlags.ACB_NOT_DELEGATED", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_NOT_DELEGATED_tfs), ( 0x00004000 ), NULL, HFILL }}, - { &hf_samr_samr_SupportedFeatures_SAMR_FEATURES_DONT_CONCAT_RIDS, - { "Samr Features Dont Concat Rids", "samr.samr_SupportedFeatures.SAMR_FEATURES_DONT_CONCAT_RIDS", FT_BOOLEAN, 32, TFS(&samr_SupportedFeatures_SAMR_FEATURES_DONT_CONCAT_RIDS_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_samr_samr_SetDsrmPassword_name, { "Name", "samr.samr_SetDsrmPassword.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_Connect_system_name, @@ -15081,11 +15553,9 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_GroupInfoDescription_description, { "Description", "samr.samr_GroupInfoDescription.description", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryUserInfo_level, - { "Level", "samr.samr_QueryUserInfo.level", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryUserInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }}, { &hf_samr_samr_GroupAttrs_SE_GROUP_LOGON_ID, { "Se Group Logon Id", "samr.samr_GroupAttrs.SE_GROUP_LOGON_ID", FT_BOOLEAN, 32, TFS(&samr_GroupAttrs_SE_GROUP_LOGON_ID_tfs), ( 0xC0000000 ), NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS, - { "Samr Server Access Enum Domains", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_ENUM_DOMAINS", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_ENUM_DOMAINS_tfs), ( 0x00000010 ), NULL, HFILL }}, { &hf_samr_samr_DispEntryGeneral_account_name, { "Account Name", "samr.samr_DispEntryGeneral.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_AcctFlags_ACB_HOMDIRREQ, @@ -15099,7 +15569,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_DispInfo_info1, { "Info1", "samr.samr_DispInfo.info1", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_SetDomainInfo_level, - { "Level", "samr.samr_SetDomainInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_SetDomainInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, { &hf_samr_samr_DispInfo_info4, { "Info4", "samr.samr_DispInfo.info4", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomInfo8_domain_create_time, @@ -15166,10 +15636,10 @@ void proto_register_dcerpc_samr(void) { "Samr Field Workstations", "samr.samr_FieldsPresent.SAMR_FIELD_WORKSTATIONS", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_WORKSTATIONS_tfs), ( 0x00000400 ), NULL, HFILL }}, { &hf_samr_samr_GetDisplayEnumerationIndex_idx, { "Idx", "samr.samr_GetDisplayEnumerationIndex.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_Connect5_level_out, + { "Level Out", "samr.samr_Connect5.level_out", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_last_logon, { "Last Logon", "samr.samr_UserInfo5.last_logon", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN, - { "Samr Server Access Create Domain", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_CREATE_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_CREATE_DOMAIN_tfs), ( 0x00000008 ), NULL, HFILL }}, { &hf_samr_samr_ChangePasswordUser2_server, { "Server", "samr.samr_ChangePasswordUser2.server", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_SetDomainInfo_info, @@ -15180,6 +15650,8 @@ void proto_register_dcerpc_samr(void) { "Password", "samr.samr_UserInfo24.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DispEntryFull_idx, { "Idx", "samr.samr_DispEntryFull.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER, + { "Samr Access Initialize Server", "samr.samr_ConnectAccessMask.SAMR_ACCESS_INITIALIZE_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_INITIALIZE_SERVER_tfs), ( 0x00000004 ), NULL, HFILL }}, { &hf_samr_samr_DispEntryFull_acct_flags, { "Acct Flags", "samr.samr_DispEntryFull.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_GetAliasMembership_sids, @@ -15199,7 +15671,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_EnumDomainUsers_resume_handle, { "Resume Handle", "samr.samr_EnumDomainUsers.resume_handle", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ValidatePasswordRepCtr_status, - { "Status", "samr.samr_ValidatePasswordRepCtr.status", FT_UINT16, BASE_DEC, VALS(samr_samr_ValidationStatus_vals), 0, NULL, HFILL }}, + { "Status", "samr.samr_ValidatePasswordRepCtr.status", FT_UINT1632, BASE_DEC, VALS(samr_samr_ValidationStatus_vals), 0, NULL, HFILL }}, { &hf_samr_samr_DomainInfo_general2, { "General2", "samr.samr_DomainInfo.general2", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DispInfoFull_count, @@ -15217,7 +15689,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_AcctFlags_ACB_NO_AUTH_DATA_REQD, { "Acb No Auth Data Reqd", "samr.samr_AcctFlags.ACB_NO_AUTH_DATA_REQD", FT_BOOLEAN, 32, TFS(&samr_AcctFlags_ACB_NO_AUTH_DATA_REQD_tfs), ( 0x00080000 ), NULL, HFILL }}, { &hf_samr_samr_QueryDomainInfo_level, - { "Level", "samr.samr_QueryDomainInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryDomainInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo26_password, { "Password", "samr.samr_UserInfo26.password", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ValidatePasswordReq1_password_matched, @@ -15258,6 +15730,8 @@ void proto_register_dcerpc_samr(void) { "Domain Name", "samr.samr_DomGeneralInformation.domain_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_CreateUser2_account_name, { "Account Name", "samr.samr_CreateUser2.account_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN, + { "Samr Access Create Domain", "samr.samr_ConnectAccessMask.SAMR_ACCESS_CREATE_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_CREATE_DOMAIN_tfs), ( 0x00000008 ), NULL, HFILL }}, { &hf_samr_samr_LookupDomain_sid, { "Sid", "samr.samr_LookupDomain.sid", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_AddAliasMember_sid, @@ -15325,7 +15799,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME, { "Samr Validate Field Bad Password Time", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_BAD_PASSWORD_TIME_tfs), ( 0x00000002 ), NULL, HFILL }}, { &hf_samr_samr_ChangeReject_reason, - { "Reason", "samr.samr_ChangeReject.reason", FT_UINT32, BASE_DEC, VALS(samr_samr_ExtendedFailureReason_vals), 0, NULL, HFILL }}, + { "Reason", "samr.samr_ChangeReject.reason", FT_UINT32, BASE_DEC, VALS(samr_samr_RejectReason_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC, { "Samr User Access Get Name Etc", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_GET_NAME_ETC", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_GET_NAME_ETC_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_samr_samr_ChangePasswordUser3_password3, @@ -15380,8 +15854,12 @@ void proto_register_dcerpc_samr(void) { "Pwd History", "samr.samr_ValidatePasswordInfo.pwd_history", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_Connect3_unknown, { "Unknown", "samr.samr_Connect3.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN, + { "Samr Access Lookup Domain", "samr.samr_ConnectAccessMask.SAMR_ACCESS_LOOKUP_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_LOOKUP_DOMAIN_tfs), ( 0x00000020 ), NULL, HFILL }}, { &hf_samr_samr_GetDisplayEnumerationIndex2_idx, { "Idx", "samr.samr_GetDisplayEnumerationIndex2.idx", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectInfo1_unknown2, + { "Unknown2", "samr.samr_ConnectInfo1.unknown2", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_lsa_String_name, { "Name", "samr.lsa_String.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_AliasInfoAll_name, @@ -15431,7 +15909,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_UserInfo3_allow_password_change, { "Allow Password Change", "samr.samr_UserInfo3.allow_password_change", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryDomainInfo2_level, - { "Level", "samr.samr_QueryDomainInfo2.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryDomainInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainInformationClass_vals), 0, NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_PASSWORD, { "Samr Field Password", "samr.samr_FieldsPresent.SAMR_FIELD_PASSWORD", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_PASSWORD_tfs), ( 0x01000000 ), NULL, HFILL }}, { &hf_samr_samr_GetDisplayEnumerationIndex_name, @@ -15448,6 +15926,8 @@ void proto_register_dcerpc_samr(void) { "Info", "samr.samr_QueryUserInfo.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomGeneralInformation_primary, { "Primary", "samr.samr_DomGeneralInformation.primary", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER, + { "Samr Access Shutdown Server", "samr.samr_ConnectAccessMask.SAMR_ACCESS_SHUTDOWN_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_SHUTDOWN_SERVER_tfs), ( 0x00000002 ), NULL, HFILL }}, { &hf_samr_samr_UserInfo5_home_drive, { "Home Drive", "samr.samr_UserInfo5.home_drive", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_RemoveMemberFromForeignDomain_sid, @@ -15492,8 +15972,6 @@ void proto_register_dcerpc_samr(void) { "Samr Validate Field Password History", "samr.samr_ValidateFieldsPresent.SAMR_VALIDATE_FIELD_PASSWORD_HISTORY", FT_BOOLEAN, 32, TFS(&samr_ValidateFieldsPresent_SAMR_VALIDATE_FIELD_PASSWORD_HISTORY_tfs), ( 0x00000020 ), NULL, HFILL }}, { &hf_samr_samr_GroupInfo_name, { "Name", "samr.samr_GroupInfo.name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER, - { "Samr Server Access Shutdown Server", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_SHUTDOWN_SERVER", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_SHUTDOWN_SERVER_tfs), ( 0x00000002 ), NULL, HFILL }}, { &hf_samr_samr_UserInfo3_force_password_change, { "Force Password Change", "samr.samr_UserInfo3.force_password_change", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ChangePasswordUser_nt_present, @@ -15548,8 +16026,6 @@ void proto_register_dcerpc_samr(void) { "Acct Flags", "samr.samr_CreateUser2.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_lsa_String_name_len, { "Name Len", "samr.lsa_String.name_len", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER, - { "Samr Server Access Connect To Server", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_CONNECT_TO_SERVER", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_CONNECT_TO_SERVER_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_samr_samr_EnumDomainAliases_acct_flags, { "Acct Flags", "samr.samr_EnumDomainAliases.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_HOME_DRIVE, @@ -15577,7 +16053,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_UserInfo5_last_logoff, { "Last Logoff", "samr.samr_UserInfo5.last_logoff", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ValidatePassword_level, - { "Level", "samr.samr_ValidatePassword.level", FT_UINT16, BASE_DEC, VALS(samr_samr_ValidatePasswordLevel_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_ValidatePassword.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_ValidatePasswordLevel_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo6_full_name, { "Full Name", "samr.samr_UserInfo6.full_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_LookupRids_names, @@ -15592,6 +16068,8 @@ void proto_register_dcerpc_samr(void) { "Sids", "samr.samr_RemoveMultipleMembersFromAlias.sids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_OemChangePasswordUser2_account, { "Account", "samr.samr_OemChangePasswordUser2.account", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS, + { "Samr Access Enum Domains", "samr.samr_ConnectAccessMask.SAMR_ACCESS_ENUM_DOMAINS", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_ENUM_DOMAINS_tfs), ( 0x00000010 ), NULL, HFILL }}, { &hf_samr_samr_UserInfo_info4, { "Info4", "samr.samr_UserInfo.info4", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryDisplayInfo2_info, @@ -15606,8 +16084,6 @@ void proto_register_dcerpc_samr(void) { "Unknown", "samr.samr_GetBootKeyInformation.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_RidWithAttribute_attributes, { "Attributes", "samr.samr_RidWithAttribute.attributes", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN, - { "Samr Server Access Open Domain", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_OPEN_DOMAIN", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_OPEN_DOMAIN_tfs), ( 0x00000020 ), NULL, HFILL }}, { &hf_samr_samr_CryptPassword_data, { "Data", "samr.samr_CryptPassword.data", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_AliasInfo_name, @@ -15679,7 +16155,7 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_LookupNames_num_names, { "Num Names", "samr.samr_LookupNames.num_names", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryDisplayInfo3_level, - { "Level", "samr.samr_QueryDisplayInfo3.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryDisplayInfo3.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, { &hf_samr_samr_QueryDisplayInfo2_max_entries, { "Max Entries", "samr.samr_QueryDisplayInfo2.max_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_ValidatePasswordInfo_last_password_change, @@ -15704,6 +16180,8 @@ void proto_register_dcerpc_samr(void) { "Count", "samr.samr_GetMembersBuffer.count", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomainInfo_info7, { "Info7", "samr.samr_DomainInfo.info7", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER, + { "Samr Access Connect To Server", "samr.samr_ConnectAccessMask.SAMR_ACCESS_CONNECT_TO_SERVER", FT_BOOLEAN, 32, TFS(&samr_ConnectAccessMask_SAMR_ACCESS_CONNECT_TO_SERVER_tfs), ( 0x00000001 ), NULL, HFILL }}, { &hf_samr_samr_EnumDomains_num_entries, { "Num Entries", "samr.samr_EnumDomains.num_entries", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomainInfo_state, @@ -15730,6 +16208,8 @@ void proto_register_dcerpc_samr(void) { "Access Mask", "samr.connect.access_mask", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo_info3, { "Info3", "samr.samr_UserInfo.info3", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_Connect5_level_in, + { "Level In", "samr.samr_Connect5.level_in", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomInfo12_lockout_window, { "Lockout Window", "samr.samr_DomInfo12.lockout_window", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_RidToSid_sid, @@ -15742,8 +16222,6 @@ void proto_register_dcerpc_samr(void) { "Acct Flags", "samr.samr_EnumDomainUsers.acct_flags", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DomainInfo_info6, { "Info6", "samr.samr_DomainInfo.info6", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_Connect5_level, - { "Level", "samr.samr_Connect5.level", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_CreateDomAlias_alias_name, { "Alias Name", "samr.samr_CreateDomAlias.alias_name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_EnumDomainUsers_sam, @@ -15754,24 +16232,22 @@ void proto_register_dcerpc_samr(void) { "Rids", "samr.samr_GetGroupsForUser.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo3_last_logoff, { "Last Logoff", "samr.samr_UserInfo3.last_logoff", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER, - { "Samr Server Access Initialize Server", "samr.samr_ServerAccessMask.SAMR_SERVER_ACCESS_INITIALIZE_SERVER", FT_BOOLEAN, 32, TFS(&samr_ServerAccessMask_SAMR_SERVER_ACCESS_INITIALIZE_SERVER_tfs), ( 0x00000004 ), NULL, HFILL }}, { &hf_samr_samr_ValidatePasswordRepCtr_info, { "Info", "samr.samr_ValidatePasswordRepCtr.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_SetGroupInfo_level, - { "Level", "samr.samr_SetGroupInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_SetGroupInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD, { "Samr User Access Set Password", "samr.samr_UserAccessMask.SAMR_USER_ACCESS_SET_PASSWORD", FT_BOOLEAN, 32, TFS(&samr_UserAccessMask_SAMR_USER_ACCESS_SET_PASSWORD_tfs), ( 0x00000080 ), NULL, HFILL }}, { &hf_samr_samr_SetUserInfo2_level, - { "Level", "samr.samr_SetUserInfo2.level", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Level", "samr.samr_SetUserInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_acct_expiry, { "Acct Expiry", "samr.samr_UserInfo5.acct_expiry", FT_ABSOLUTE_TIME, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_Connect5_info_in, + { "Info In", "samr.samr_Connect5.info_in", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo21_nt_password_set, { "Nt Password Set", "samr.samr_UserInfo21.nt_password_set", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo_info20, { "Info20", "samr.samr_UserInfo.info20", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_ConnectInfo1_features, - { "Features", "samr.samr_ConnectInfo1.features", FT_UINT32, BASE_HEX, NULL, 0, NULL, HFILL }}, { &hf_samr_alias_handle, { "Alias Handle", "samr.alias_handle", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_account_name, @@ -15796,16 +16272,16 @@ void proto_register_dcerpc_samr(void) { "Info", "samr.samr_QueryDisplayInfo3.info", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_OemChangePasswordUser2_hash, { "Hash", "samr.samr_OemChangePasswordUser2.hash", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_samr_samr_Connect4_revision, - { "Revision", "samr.samr_Connect4.revision", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectRevision_vals), 0, NULL, HFILL }}, { &hf_samr_samr_QueryUserInfo2_level, - { "Level", "samr.samr_QueryUserInfo2.level", FT_UINT16, BASE_DEC, NULL, 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryUserInfo2.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_UserInfoLevel_vals), 0, NULL, HFILL }}, { &hf_samr_samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT, { "Samr Field Bad Pwd Count", "samr.samr_FieldsPresent.SAMR_FIELD_BAD_PWD_COUNT", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_BAD_PWD_COUNT_tfs), ( 0x00004000 ), NULL, HFILL }}, { &hf_samr_samr_ValidatePasswordReq3_clear_lockout, { "Clear Lockout", "samr.samr_ValidatePasswordReq3.clear_lockout", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_samr_samr_Connect4_client_version, + { "Client Version", "samr.samr_Connect4.client_version", FT_UINT32, BASE_DEC, VALS(samr_samr_ConnectVersion_vals), 0, NULL, HFILL }}, { &hf_samr_samr_GetDisplayEnumerationIndex_level, - { "Level", "samr.samr_GetDisplayEnumerationIndex.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_GetDisplayEnumerationIndex.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_workstations, { "Workstations", "samr.samr_UserInfo5.workstations", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_DispEntryFullGroup_account_name, @@ -15831,13 +16307,13 @@ void proto_register_dcerpc_samr(void) { &hf_samr_samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER, { "Samr Alias Access Remove Member", "samr.samr_AliasAccessMask.SAMR_ALIAS_ACCESS_REMOVE_MEMBER", FT_BOOLEAN, 32, TFS(&samr_AliasAccessMask_SAMR_ALIAS_ACCESS_REMOVE_MEMBER_tfs), ( 0x00000002 ), NULL, HFILL }}, { &hf_samr_samr_QueryGroupInfo_level, - { "Level", "samr.samr_QueryGroupInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryGroupInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_GroupInfoEnum_vals), 0, NULL, HFILL }}, { &hf_samr_samr_SetAliasInfo_level, - { "Level", "samr.samr_SetAliasInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_SetAliasInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_AliasInfoEnum_vals), 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo21_buffer, { "Buffer", "samr.samr_UserInfo21.buffer", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_QueryDisplayInfo_level, - { "Level", "samr.samr_QueryDisplayInfo.level", FT_UINT16, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, + { "Level", "samr.samr_QueryDisplayInfo.level", FT_UINT1632, BASE_DEC, VALS(samr_samr_DomainDisplayInformation_vals), 0, NULL, HFILL }}, { &hf_samr_samr_SetDsrmPassword_unknown, { "Unknown", "samr.samr_SetDsrmPassword.unknown", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_samr_samr_UserInfo5_last_password_change, @@ -15864,7 +16340,7 @@ void proto_register_dcerpc_samr(void) &ett_samr_lsa_String, &ett_samr_lsa_Strings, &ett_samr_samr_AcctFlags, - &ett_samr_samr_ServerAccessMask, + &ett_samr_samr_ConnectAccessMask, &ett_samr_samr_UserAccessMask, &ett_samr_samr_DomainAccessMask, &ett_samr_samr_GroupAccessMask, @@ -15937,7 +16413,6 @@ void proto_register_dcerpc_samr(void) &ett_samr_samr_DispInfo, &ett_samr_samr_PwInfo, &ett_samr_samr_ChangeReject, - &ett_samr_samr_SupportedFeatures, &ett_samr_samr_ConnectInfo1, &ett_samr_samr_ConnectInfo, &ett_samr_samr_ValidateFieldsPresent, |