📄 netlogon.idl
字号:
lsa_String unknown1; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 unknown5; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_RENAME; typedef struct { [size_is(num_rids)] uint32 *rids; [size_is(num_rids)] uint32 *attribs; uint32 num_rids; uint32 unknown1; uint32 unknown2; uint32 unknown3; uint32 unknown4; } netr_DELTA_GROUP_MEMBER; typedef struct { lsa_String alias_name; uint32 rid; uint32 SecurityInformation; sec_desc_buf sdbuf; lsa_String description; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 unknown5; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_ALIAS; typedef struct { lsa_SidArray sids; uint32 unknown1; uint32 unknown2; uint32 unknown3; uint32 unknown4; } netr_DELTA_ALIAS_MEMBER; typedef struct { uint32 pagedpoollimit; uint32 nonpagedpoollimit; uint32 minimumworkingsetsize; uint32 maximumworkingsetsize; uint32 pagefilelimit; NTTIME timelimit; } netr_QUOTA_LIMITS; typedef struct { uint32 maxlogsize; NTTIME auditretentionperiod; boolean8 auditingmode; uint32 maxauditeventcount; [size_is(maxauditeventcount+1)] uint32 *eventauditoptions; lsa_String primary_domain_name; dom_sid2 *sid; netr_QUOTA_LIMITS quota_limits; udlong sequence_num; NTTIME db_create_time; uint32 SecurityInformation; sec_desc_buf sdbuf; lsa_String unknown1; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 unknown5; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_POLICY; typedef struct { lsa_String domain_name; uint32 num_controllers; [size_is(num_controllers)] lsa_String *controller_names; uint32 SecurityInformation; sec_desc_buf sdbuf; lsa_String unknown1; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 posix_offset; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_TRUSTED_DOMAIN; typedef struct { uint16 unknown; } netr_DELTA_DELETE_TRUST; typedef struct { uint32 privilege_entries; uint32 privilege_control; [size_is(privilege_entries)] uint32 *privilege_attrib; [size_is(privilege_entries)] lsa_String *privilege_name; netr_QUOTA_LIMITS quotalimits; uint32 system_flags; uint32 SecurityInformation; sec_desc_buf sdbuf; lsa_String unknown1; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 unknown5; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_ACCOUNT; typedef struct { uint16 unknown; } netr_DELTA_DELETE_ACCOUNT; typedef struct { uint16 unknown; } netr_DELTA_DELETE_SECRET; typedef struct { uint32 len; uint32 maxlen; [size_is(maxlen)][length_is(len)] uint8 *cipher_data; } netr_CIPHER_VALUE; typedef struct { netr_CIPHER_VALUE current_cipher; NTTIME current_cipher_set_time; netr_CIPHER_VALUE old_cipher; NTTIME old_cipher_set_time; uint32 SecurityInformation; sec_desc_buf sdbuf; lsa_String unknown1; lsa_String unknown2; lsa_String unknown3; lsa_String unknown4; uint32 unknown5; uint32 unknown6; uint32 unknown7; uint32 unknown8; } netr_DELTA_SECRET; typedef enum { NETR_DELTA_DOMAIN = 1, NETR_DELTA_GROUP = 2, NETR_DELTA_DELETE_GROUP = 3, NETR_DELTA_RENAME_GROUP = 4, NETR_DELTA_USER = 5, NETR_DELTA_DELETE_USER = 6, NETR_DELTA_RENAME_USER = 7, NETR_DELTA_GROUP_MEMBER = 8, NETR_DELTA_ALIAS = 9, NETR_DELTA_DELETE_ALIAS = 10, NETR_DELTA_RENAME_ALIAS = 11, NETR_DELTA_ALIAS_MEMBER = 12, NETR_DELTA_POLICY = 13, NETR_DELTA_TRUSTED_DOMAIN = 14, NETR_DELTA_DELETE_TRUST = 15, NETR_DELTA_ACCOUNT = 16, NETR_DELTA_DELETE_ACCOUNT = 17, NETR_DELTA_SECRET = 18, NETR_DELTA_DELETE_SECRET = 19, NETR_DELTA_DELETE_GROUP2 = 20, NETR_DELTA_DELETE_USER2 = 21, NETR_DELTA_MODIFY_COUNT = 22 } netr_DeltaEnum; typedef [switch_type(netr_DeltaEnum)] union { [case(NETR_DELTA_DOMAIN)] netr_DELTA_DOMAIN *domain; [case(NETR_DELTA_GROUP)] netr_DELTA_GROUP *group; [case(NETR_DELTA_DELETE_GROUP)] ; /* rid only */ [case(NETR_DELTA_RENAME_GROUP)] netr_DELTA_RENAME *rename_group; [case(NETR_DELTA_USER)] netr_DELTA_USER *user; [case(NETR_DELTA_DELETE_USER)] ; /* rid only */ [case(NETR_DELTA_RENAME_USER)] netr_DELTA_RENAME *rename_user; [case(NETR_DELTA_GROUP_MEMBER)] netr_DELTA_GROUP_MEMBER *group_member; [case(NETR_DELTA_ALIAS)] netr_DELTA_ALIAS *alias; [case(NETR_DELTA_DELETE_ALIAS)] ; /* rid only */ [case(NETR_DELTA_RENAME_ALIAS)] netr_DELTA_RENAME *rename_alias; [case(NETR_DELTA_ALIAS_MEMBER)] netr_DELTA_ALIAS_MEMBER *alias_member; [case(NETR_DELTA_POLICY)] netr_DELTA_POLICY *policy; [case(NETR_DELTA_TRUSTED_DOMAIN)] netr_DELTA_TRUSTED_DOMAIN *trusted_domain; [case(NETR_DELTA_DELETE_TRUST)] netr_DELTA_DELETE_TRUST delete_trust; [case(NETR_DELTA_ACCOUNT)] netr_DELTA_ACCOUNT *account; [case(NETR_DELTA_DELETE_ACCOUNT)] netr_DELTA_DELETE_ACCOUNT delete_account; [case(NETR_DELTA_SECRET)] netr_DELTA_SECRET *secret; [case(NETR_DELTA_DELETE_SECRET)] netr_DELTA_DELETE_SECRET delete_secret; [case(NETR_DELTA_DELETE_GROUP2)] netr_DELTA_DELETE_USER *delete_group; [case(NETR_DELTA_DELETE_USER2)] netr_DELTA_DELETE_USER *delete_user; [case(NETR_DELTA_MODIFY_COUNT)] udlong *modified_count; } netr_DELTA_UNION; typedef [switch_type(netr_DeltaEnum)] union { [case(NETR_DELTA_DOMAIN)] uint32 rid; [case(NETR_DELTA_GROUP)] uint32 rid; [case(NETR_DELTA_DELETE_GROUP)] uint32 rid; [case(NETR_DELTA_RENAME_GROUP)] uint32 rid; [case(NETR_DELTA_USER)] uint32 rid; [case(NETR_DELTA_DELETE_USER)] uint32 rid; [case(NETR_DELTA_RENAME_USER)] uint32 rid; [case(NETR_DELTA_GROUP_MEMBER)] uint32 rid; [case(NETR_DELTA_ALIAS)] uint32 rid; [case(NETR_DELTA_DELETE_ALIAS)] uint32 rid; [case(NETR_DELTA_RENAME_ALIAS)] uint32 rid; [case(NETR_DELTA_ALIAS_MEMBER)] uint32 rid; [case(NETR_DELTA_POLICY)] dom_sid2 *sid; [case(NETR_DELTA_TRUSTED_DOMAIN)] dom_sid2 *sid; [case(NETR_DELTA_DELETE_TRUST)] dom_sid2 *sid; [case(NETR_DELTA_ACCOUNT)] dom_sid2 *sid; [case(NETR_DELTA_DELETE_ACCOUNT)] dom_sid2 *sid; [case(NETR_DELTA_SECRET)] [string,charset(UTF16)] uint16 *name; [case(NETR_DELTA_DELETE_SECRET)] [string,charset(UTF16)] uint16 *name; [case(NETR_DELTA_DELETE_GROUP2)] uint32 rid; [case(NETR_DELTA_DELETE_USER2)] uint32 rid; [case(NETR_DELTA_MODIFY_COUNT)] ; } netr_DELTA_ID_UNION; typedef struct { netr_DeltaEnum delta_type; [switch_is(delta_type)] netr_DELTA_ID_UNION delta_id_union; [switch_is(delta_type)] netr_DELTA_UNION delta_union; } netr_DELTA_ENUM; typedef struct { uint32 num_deltas; [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum; } netr_DELTA_ENUM_ARRAY; NTSTATUS netr_DatabaseDeltas( [in] [string,charset(UTF16)] uint16 logon_server[], [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in] netr_SamDatabaseID database_id, [in,out] udlong sequence_num, [in] uint32 preferredmaximumlength, [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array ); /*****************/ /* Function 0x08 */ NTSTATUS netr_DatabaseSync( [in] [string,charset(UTF16)] uint16 logon_server[], [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in] netr_SamDatabaseID database_id, [in,out] uint32 sync_context, [in] uint32 preferredmaximumlength, [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array ); /*****************/ /* Function 0x09 */ /* w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this call */ typedef [flag(NDR_PAHEX)] struct { uint8 computer_name[16]; uint32 timecreated; uint32 serial_number; } netr_UAS_INFO_0; typedef struct { [flag(NDR_REMAINING)] DATA_BLOB blob; } netr_AccountBuffer; NTSTATUS netr_AccountDeltas( [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in] netr_UAS_INFO_0 uas, [in] uint32 count, [in] uint32 level, [in] uint32 buffersize, [out,subcontext(4)] netr_AccountBuffer buffer, [out] uint32 count_returned, [out] uint32 total_entries, [out] netr_UAS_INFO_0 recordid ); /*****************/ /* Function 0x0A */ NTSTATUS netr_AccountSync( [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in] uint32 reference, [in] uint32 level, [in] uint32 buffersize, [out,subcontext(4)] netr_AccountBuffer buffer, [out] uint32 count_returned, [out] uint32 total_entries, [out] uint32 next_reference, [in,out] netr_UAS_INFO_0 recordid ); /*****************/ /* Function 0x0B */ WERROR netr_GetDcName( [in] [string,charset(UTF16)] uint16 logon_server[], [in,unique] [string,charset(UTF16)] uint16 *domainname, [out,unique] [string,charset(UTF16)] uint16 *dcname ); /*****************/ /* Function 0x0C */ typedef struct { uint32 flags; uint32 pdc_connection_status; } netr_NETLOGON_INFO_1; typedef struct { uint32 flags; uint32 pdc_connection_status; [string,charset(UTF16)] uint16 trusted_dc_name[]; uint32 tc_connection_status; } netr_NETLOGON_INFO_2; typedef struct { uint32 flags; uint32 logon_attempts; uint32 unknown1; uint32 unknown2; uint32 unknown3; uint32 unknown4; uint32 unknown5; } netr_NETLOGON_INFO_3; typedef union { [case(1)] netr_NETLOGON_INFO_1 *info1; [case(2)] netr_NETLOGON_INFO_2 *info2; [case(3)] netr_NETLOGON_INFO_3 *info3; } netr_CONTROL_QUERY_INFORMATION; /* function_code values */ typedef [v1_enum] enum { NETLOGON_CONTROL_REDISCOVER = 5, NETLOGON_CONTROL_TC_QUERY = 6, NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7, NETLOGON_CONTROL_SET_DBFLAG = 65534 } netr_LogonControlCode; WERROR netr_LogonControl( [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in] netr_LogonControlCode function_code, [in] uint32 level, [out,switch_is(level)] netr_CONTROL_QUERY_INFORMATION info ); /*****************/ /* Function 0x0D */ WERROR netr_GetAnyDCName( [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in,unique] [string,charset(UTF16)] uint16 *domainname, [out,unique] [string,charset(UTF16)] uint16 *dcname ); /*****************/ /* Function 0x0E */ typedef union { [case(NETLOGON_CONTROL_REDISCOVER)] [string,charset(UTF16)] uint16 *domain; [case(NETLOGON_CONTROL_TC_QUERY)] [string,charset(UTF16)] uint16 *domain; [case(NETLOGON_CONTROL_TRANSPORT_NOTIFY)] [string,charset(UTF16)] uint16 *domain; [case(NETLOGON_CONTROL_SET_DBFLAG)] uint32 debug_level; } netr_CONTROL_DATA_INFORMATION; WERROR netr_LogonControl2( [in,unique] [string,charset(UTF16)] uint16 *logon_server, [in] uint32 function_code, [in] uint32 level, [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data, [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query ); /* If this flag is not set, then the passwords and LM session keys are * encrypted with DES calls. (And the user session key is * unencrypted) */ const int NETLOGON_NEG_ARCFOUR = 0x00000004; const int NETLOGON_NEG_128BIT = 0x00004000; const int NETLOGON_NEG_SCHANNEL = 0x40000000; /*****************/ /* Function 0x0F */ NTSTATUS netr_ServerAuthenticate2( [in,unique] [string,charset(UTF16)] uint16 *server_name, [in] [string,charset(UTF16)] uint16 account_name[], [in] netr_SchannelType secure_channel_type, [in] [string,charset(UTF16)] uint16 computer_name[], [in,out,ref] netr_Credential *credentials, [in,out,ref] uint32 *negotiate_flags ); /*****************/ /* Function 0x10 */ NTSTATUS netr_DatabaseSync2( [in] [string,charset(UTF16)] uint16 logon_server[], [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in] netr_SamDatabaseID database_id, [in] uint16 restart_state, [in,out] uint32 sync_context, [in] uint32 preferredmaximumlength, [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array ); /*****************/ /* Function 0x11 */ /* i'm not at all sure how this call works */ NTSTATUS netr_DatabaseRedo( [in] [string,charset(UTF16)] uint16 logon_server[], [in] [string,charset(UTF16)] uint16 computername[], [in] netr_Authenticator credential, [in,out] netr_Authenticator return_authenticator, [in,unique][size_is(change_log_entry_size)] uint8 *change_log_entry, [in] uint32 change_log_entry_size, [out,unique] netr_DELTA_ENUM_ARRAY *delta_enum_array );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -