📄 rpc_samr.h
字号:
/* SAMR_Q_ENUM_DOM_ALIASES - SAM rids and names */typedef struct q_samr_enum_dom_aliases_info{ POLICY_HND pol; /* policy handle */ /* this is possibly an enumeration context handle... */ uint32 unknown_0; /* 0x0000 0000 */ uint32 max_size; /* 0x0000 ffff */} SAMR_Q_ENUM_DOM_ALIASES;/* SAMR_R_ENUM_DOM_ALIASES - SAM rids and names */typedef struct r_samr_enum_dom_aliases_info{ uint32 num_entries; uint32 ptr_entries; uint32 num_entries2; uint32 ptr_entries2; uint32 num_entries3; SAM_ENTRY sam[MAX_SAM_ENTRIES]; UNISTR2 uni_grp_name[MAX_SAM_ENTRIES]; uint32 num_entries4; uint32 status;} SAMR_R_ENUM_DOM_ALIASES;/* SAMR_Q_QUERY_DISPINFO - SAM rids, names and descriptions */typedef struct q_samr_query_disp_info{ POLICY_HND pol; /* policy handle */ uint16 switch_level; /* 0x0001 and 0x0002 seen */ uint16 unknown_0; /* 0x0000 and 0x2000 seen */ uint32 start_idx; /* presumably the start enumeration index */ uint32 unknown_1; /* 0x0000 07d0, 0x0000 0400 and 0x0000 0200 seen */ uint32 max_size; /* 0x0000 7fff, 0x0000 7ffe and 0x0000 3fff seen*/} SAMR_Q_QUERY_DISPINFO;typedef struct samr_entry_info1{ uint32 user_idx; uint32 rid_user; uint16 acb_info; uint16 pad; UNIHDR hdr_acct_name; UNIHDR hdr_user_name; UNIHDR hdr_user_desc;} SAM_ENTRY1;typedef struct samr_str_entry_info1{ UNISTR2 uni_acct_name; UNISTR2 uni_full_name; UNISTR2 uni_acct_desc;} SAM_STR1;typedef struct sam_entry_info_1{ uint32 num_entries; uint32 ptr_entries; uint32 num_entries2; SAM_ENTRY1 sam[MAX_SAM_ENTRIES]; SAM_STR1 str[MAX_SAM_ENTRIES];} SAM_INFO_1;typedef struct samr_entry_info2{ uint32 user_idx; uint32 rid_user; uint16 acb_info; uint16 pad; UNIHDR hdr_srv_name; UNIHDR hdr_srv_desc;} SAM_ENTRY2;typedef struct samr_str_entry_info2{ UNISTR2 uni_srv_name; UNISTR2 uni_srv_desc;} SAM_STR2;typedef struct sam_entry_info_2{ uint32 num_entries; uint32 ptr_entries; uint32 num_entries2; SAM_ENTRY2 sam[MAX_SAM_ENTRIES]; SAM_STR2 str[MAX_SAM_ENTRIES];} SAM_INFO_2;typedef struct sam_info_ctr_info{ union { SAM_INFO_1 *info1; /* server info */ SAM_INFO_2 *info2; /* user info */ void *info; /* allows assignment without typecasting, */ } sam;} SAM_INFO_CTR;/* SAMR_R_QUERY_DISPINFO - SAM rids, names and descriptions */typedef struct r_samr_query_dispinfo_info{ uint32 unknown_0; /* container length? 0x0000 0492 or 0x0000 00be */ uint32 unknown_1; /* container length? 0x0000 049a or 0x0000 00be */ uint16 switch_level; /* 0x0001 or 0x0002 */ /*uint8 pad[2] */ SAM_INFO_CTR *ctr; uint32 status;} SAMR_R_QUERY_DISPINFO;/* SAMR_Q_QUERY_ALIASINFO - SAM Alias Info */typedef struct q_samr_enum_alias_info{ POLICY_HND pol; /* policy handle */ uint16 switch_level; /* 0x0003 seen */} SAMR_Q_QUERY_ALIASINFO;typedef struct samr_alias_info3{ UNIHDR hdr_acct_desc; UNISTR2 uni_acct_desc;} ALIAS_INFO3;/* SAMR_R_QUERY_ALIASINFO - SAM rids, names and descriptions */typedef struct r_samr_query_aliasinfo_info{ uint32 ptr; uint16 switch_value; /* 0x0003 */ /* uint8[2] padding */ union { ALIAS_INFO3 info3; } alias; uint32 status;} SAMR_R_QUERY_ALIASINFO;/* SAMR_Q_QUERY_USERGROUPS - */typedef struct q_samr_query_usergroup_info{ POLICY_HND pol; /* policy handle associated with unknown id */} SAMR_Q_QUERY_USERGROUPS;/* SAMR_R_QUERY_USERGROUPS - probably a get sam info */typedef struct r_samr_query_usergroup_info{ uint32 ptr_0; /* pointer */ uint32 num_entries; /* number of RID groups */ uint32 ptr_1; /* pointer */ uint32 num_entries2; /* number of RID groups */ DOM_GID *gid; /* group info */ uint32 status; /* return status */} SAMR_R_QUERY_USERGROUPS;/* SAMR_Q_QUERY_USERINFO - probably a get sam info */typedef struct q_samr_query_user_info{ POLICY_HND pol; /* policy handle associated with unknown id */ uint16 switch_value; /* 0x0015, 0x0011 or 0x0010 - 16 bit unknown */} SAMR_Q_QUERY_USERINFO;/* SAMR_R_QUERY_USERINFO - probably a get sam info */typedef struct r_samr_query_user_info{ uint32 ptr; /* pointer */ uint16 switch_value; /* 0x0015, 0x0011 or 0x0010 - same as in query */ /* uint8[2] padding. */ union { SAM_USER_INFO_10 *id10; /* auth-level 0x10 */ SAM_USER_INFO_11 *id11; /* auth-level 0x11 */ SAM_USER_INFO_21 *id21; /* auth-level 21 */ void* id; /* to make typecasting easy */ } info; uint32 status; /* return status */} SAMR_R_QUERY_USERINFO;/****************************************************************************SAMR_Q_LOOKUP_IDS - do a conversion from name to RID.the policy handle allocated by an "samr open secret" call is associatedwith a SID. this policy handle is what is queried here, *not* the SIDitself. the response to the lookup rids is relative to this SID.*****************************************************************************//* SAMR_Q_LOOKUP_IDS */typedef struct q_samr_lookup_ids_info{ POLICY_HND pol; /* policy handle */ uint32 num_sids1; /* number of rids being looked up */ uint32 ptr; /* buffer pointer */ uint32 num_sids2; /* number of rids being looked up */ uint32 ptr_sid[MAX_LOOKUP_SIDS]; /* pointers to sids to be looked up */ DOM_SID2 sid [MAX_LOOKUP_SIDS]; /* sids to be looked up. */} SAMR_Q_LOOKUP_IDS;/* SAMR_R_LOOKUP_IDS */typedef struct r_samr_lookup_ids_info{ uint32 num_entries; uint32 ptr; /* undocumented buffer pointer */ uint32 num_entries2; uint32 rid[MAX_LOOKUP_SIDS]; /* domain RIDs being looked up */ uint32 status; /* return code */} SAMR_R_LOOKUP_IDS;/****************************************************************************SAMR_Q_LOOKUP_NAMES - do a conversion from Names to RIDs+types.*****************************************************************************//* SAMR_Q_LOOKUP_NAMES */typedef struct q_samr_lookup_names_info{ POLICY_HND pol; /* policy handle */ uint32 num_names1; /* number of names being looked up */ uint32 flags; /* 0x0000 03e8 - unknown */ uint32 ptr; /* 0x0000 0000 - 32 bit unknown */ uint32 num_names2; /* number of names being looked up */ UNIHDR hdr_name[MAX_LOOKUP_SIDS]; /* unicode account name header */ UNISTR2 uni_name[MAX_LOOKUP_SIDS]; /* unicode account name string */} SAMR_Q_LOOKUP_NAMES;/* SAMR_R_LOOKUP_NAMES */typedef struct r_samr_lookup_names_info{ uint32 num_rids1; /* number of aliases being looked up */ uint32 ptr_rids; /* pointer to aliases */ uint32 num_rids2; /* number of aliases being looked up */ uint32 rid[MAX_LOOKUP_SIDS]; /* rids */ uint32 num_types1; /* number of users in aliases being looked up */ uint32 ptr_types; /* pointer to users in aliases */ uint32 num_types2; /* number of users in aliases being looked up */ uint32 type[MAX_LOOKUP_SIDS]; /* SID_ENUM type */ uint32 status; /* return code */} SAMR_R_LOOKUP_NAMES;/****************************************************************************SAMR_Q_UNKNOWN_12 - do a conversion from RID groups to something.called to resolve domain RID groups.*****************************************************************************//* SAMR_Q_UNKNOWN_12 */typedef struct q_samr_unknown_12_info{ POLICY_HND pol; /* policy handle */ uint32 num_gids1; /* number of rids being looked up */ uint32 rid; /* 0x0000 03e8 - RID of the server doing the query? */ uint32 ptr; /* 0x0000 0000 - 32 bit unknown */ uint32 num_gids2; /* number of rids being looked up */ uint32 gid[MAX_LOOKUP_SIDS]; /* domain RIDs being looked up */} SAMR_Q_UNKNOWN_12;/****************************************************************************SAMR_R_UNKNOWN_12 - do a conversion from group RID to names*****************************************************************************//* SAMR_R_UNKNOWN_12 */typedef struct r_samr_unknown_12_info{ POLICY_HND pol; /* policy handle */ uint32 num_aliases1; /* number of aliases being looked up */ uint32 ptr_aliases; /* pointer to aliases */ uint32 num_aliases2; /* number of aliases being looked up */ UNIHDR hdr_als_name[MAX_LOOKUP_SIDS]; /* unicode account name header */ UNISTR2 uni_als_name[MAX_LOOKUP_SIDS]; /* unicode account name string */ uint32 num_als_usrs1; /* number of users in aliases being looked up */ uint32 ptr_als_usrs; /* pointer to users in aliases */ uint32 num_als_usrs2; /* number of users in aliases being looked up */ uint32 num_als_usrs[MAX_LOOKUP_SIDS]; /* number of users per group */ uint32 status;} SAMR_R_UNKNOWN_12;/* SAMR_Q_OPEN_USER - probably an open */typedef struct q_samr_open_user_info{ POLICY_HND domain_pol; /* policy handle */ uint32 unknown_0; /* 32 bit unknown - 0x02011b */ uint32 user_rid; /* user RID */} SAMR_Q_OPEN_USER;/* SAMR_R_OPEN_USER - probably an open */typedef struct r_samr_open_user_info{ POLICY_HND user_pol; /* policy handle associated with unknown id */ uint32 status; /* return status */} SAMR_R_OPEN_USER;/* SAMR_Q_UNKNOWN_13 - probably an open alias in domain */typedef struct q_samr_unknown_13_info{ POLICY_HND alias_pol; /* policy handle */ uint16 unknown_1; /* 16 bit unknown - 0x0200 */ uint16 unknown_2; /* 16 bit unknown - 0x0000 */} SAMR_Q_UNKNOWN_13;/* SAMR_Q_UNKNOWN_21 - probably an open group in domain */typedef struct q_samr_unknown_21_info{ POLICY_HND group_pol; /* policy handle */ uint16 unknown_1; /* 16 bit unknown - 0x0477 */ uint16 unknown_2; /* 16 bit unknown - 0x0000 */} SAMR_Q_UNKNOWN_21;/* SAMR_Q_UNKNOWN_32 - probably a "create SAM entry" */typedef struct q_samr_unknown_32_info{ POLICY_HND pol; /* policy handle */ UNIHDR hdr_mach_acct; /* unicode machine account name header */ UNISTR2 uni_mach_acct; /* unicode machine account name */ uint32 acct_ctrl; /* 32 bit ACB_XXXX */ uint16 unknown_1; /* 16 bit unknown - 0x00B0 */ uint16 unknown_2; /* 16 bit unknown - 0xe005 */} SAMR_Q_UNKNOWN_32;/* SAMR_R_UNKNOWN_32 - probably a "create SAM entry" */typedef struct r_samr_unknown_32_info{ POLICY_HND pol; /* policy handle */ /* rid4.unknown - fail: 0030 success: 0x03ff */ DOM_RID4 rid4; /* rid and attributes */ uint32 status; /* return status - fail: 0xC000 0099: user exists */} SAMR_R_UNKNOWN_32;/* SAMR_Q_OPEN_ALIAS - probably an open */typedef struct q_samr_open_alias_info{ uint32 unknown_0; /* 0x0000 0008 */ uint32 rid_alias; /* rid */} SAMR_Q_OPEN_ALIAS;/* SAMR_R_OPEN_ALIAS - probably an open */typedef struct r_samr_open_alias_info{ POLICY_HND pol; /* policy handle */ uint32 status; /* return status */} SAMR_R_OPEN_ALIAS;/* SAMR_Q_CONNECT_ANON - probably an open */typedef struct q_samr_connect_anon_info{ uint32 ptr; /* ptr? */ uint16 unknown_0; /* 0x005c */ uint16 unknown_1; /* 0x0001 */ uint32 unknown_2; /* 0x0000 0020 */} SAMR_Q_CONNECT_ANON;/* SAMR_R_CONNECT_ANON - probably an open */typedef struct r_samr_connect_anon_info{ POLICY_HND connect_pol; /* policy handle */ uint32 status; /* return status */} SAMR_R_CONNECT_ANON;/* SAMR_Q_CONNECT - probably an open */typedef struct q_samr_connect_info{ uint32 ptr_srv_name; /* pointer (to server name?) */ UNISTR2 uni_srv_name; /* unicode server name starting with '\\' */ uint32 unknown_0; /* 32 bit unknown */} SAMR_Q_CONNECT;/* SAMR_R_CONNECT - probably an open */typedef struct r_samr_connect_info{ POLICY_HND connect_pol; /* policy handle */ uint32 status; /* return status */} SAMR_R_CONNECT;/* SAMR_Q_UNKNOWN_38 */typedef struct q_samr_unknown_38{ uint32 ptr; UNIHDR hdr_srv_name; UNISTR2 uni_srv_name;} SAMR_Q_UNKNOWN_38;/* SAMR_R_UNKNOWN_38 */typedef struct r_samr_unknown_38{ uint16 unk_0; uint16 unk_1; uint16 unk_2; uint16 unk_3; uint32 status; /* return status */} SAMR_R_UNKNOWN_38;/* SAMR_ENC_PASSWD */typedef struct enc_passwd_info{ uint32 ptr; uint8 pass[516];} SAMR_ENC_PASSWD;/* SAMR_ENC_HASH */typedef struct enc_hash_info{ uint32 ptr; uint8 hash[16];} SAMR_ENC_HASH;/* SAMR_Q_CHGPASSWD_USER */typedef struct q_samr_chgpasswd_user_info{ uint32 ptr_0; UNIHDR hdr_dest_host; /* server name unicode header */ UNISTR2 uni_dest_host; /* server name unicode string */ UNIHDR hdr_user_name; /* username unicode string header */ UNISTR2 uni_user_name; /* username unicode string */ SAMR_ENC_PASSWD nt_newpass; SAMR_ENC_HASH nt_oldhash; uint32 unknown; /* 0x0000 0001 */ SAMR_ENC_PASSWD lm_newpass; SAMR_ENC_HASH lm_oldhash;} SAMR_Q_CHGPASSWD_USER;/* SAMR_R_CHGPASSWD_USER */typedef struct r_samr_chgpasswd_user_info{ uint32 status; /* 0 == OK, C000006A (NT_STATUS_WRONG_PASSWORD) */} SAMR_R_CHGPASSWD_USER;#endif /* _RPC_SAMR_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -