diff options
-rw-r--r-- | source3/include/proto.h | 26 | ||||
-rw-r--r-- | source3/rpc_client/cli_netlogon.c | 78 | ||||
-rw-r--r-- | source3/rpc_client/init_netlogon.c | 83 |
3 files changed, 39 insertions, 148 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index c40b4b6e73..a22305991b 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -5561,32 +5561,6 @@ NTSTATUS serverinfo_to_SamInfo3(struct auth_serversupplied_info *server_info, uint8_t *pipe_session_key, size_t pipe_session_key_len, struct netr_SamInfo3 *sam3); -void init_netr_IdentityInfo(struct netr_IdentityInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation); -void init_netr_NetworkInfo(struct netr_NetworkInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation, - uint8_t challenge[8], - struct netr_ChallengeResponse nt, - struct netr_ChallengeResponse lm); -void init_netr_PasswordInfo(struct netr_PasswordInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation, - struct samr_Password lmpassword, - struct samr_Password ntpassword); void init_netr_CryptPassword(const char *pwd, unsigned char session_key[16], struct netr_CryptPassword *pwd_buf); diff --git a/source3/rpc_client/cli_netlogon.c b/source3/rpc_client/cli_netlogon.c index fd10721645..911a50f393 100644 --- a/source3/rpc_client/cli_netlogon.c +++ b/source3/rpc_client/cli_netlogon.c @@ -196,15 +196,15 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, netlogon_creds_des_encrypt(cli->dc, &ntpassword); } - init_netr_PasswordInfo(password_info, - domain, - logon_parameters, - 0xdead, - 0xbeef, - username, - clnt_name_slash, - lmpassword, - ntpassword); + password_info->identity_info.domain_name.string = domain; + password_info->identity_info.parameter_control = logon_parameters; + password_info->identity_info.logon_id_low = 0xdead; + password_info->identity_info.logon_id_high = 0xbeef; + password_info->identity_info.account_name.string = username; + password_info->identity_info.workstation.string = clnt_name_slash; + + password_info->lmpassword = lmpassword; + password_info->ntpassword = ntpassword; logon->password = password_info; @@ -237,16 +237,16 @@ NTSTATUS rpccli_netlogon_sam_logon(struct rpc_pipe_client *cli, nt.length = 24; nt.data = local_nt_response; - init_netr_NetworkInfo(network_info, - domain, - logon_parameters, - 0xdead, - 0xbeef, - username, - clnt_name_slash, - chal, - nt, - lm); + network_info->identity_info.domain_name.string = domain; + network_info->identity_info.parameter_control = logon_parameters; + network_info->identity_info.logon_id_low = 0xdead; + network_info->identity_info.logon_id_high = 0xbeef; + network_info->identity_info.account_name.string = username; + network_info->identity_info.workstation.string = clnt_name_slash; + + memcpy(network_info->challenge, chal, 8); + network_info->nt = nt; + network_info->lm = lm; logon->network = network_info; @@ -355,16 +355,16 @@ NTSTATUS rpccli_netlogon_sam_network_logon(struct rpc_pipe_client *cli, nt.data = nt_response.data; nt.length = nt_response.length; - init_netr_NetworkInfo(network_info, - domain, - logon_parameters, - 0xdead, - 0xbeef, - username, - workstation_name_slash, - (uint8_t *) chal, - nt, - lm); + network_info->identity_info.domain_name.string = domain; + network_info->identity_info.parameter_control = logon_parameters; + network_info->identity_info.logon_id_low = 0xdead; + network_info->identity_info.logon_id_high = 0xbeef; + network_info->identity_info.account_name.string = username; + network_info->identity_info.workstation.string = workstation_name_slash; + + memcpy(network_info->challenge, chal, 8); + network_info->nt = nt; + network_info->lm = lm; logon->network = network_info; @@ -463,16 +463,16 @@ NTSTATUS rpccli_netlogon_sam_network_logon_ex(struct rpc_pipe_client *cli, nt.data = nt_response.data; nt.length = nt_response.length; - init_netr_NetworkInfo(network_info, - domain, - logon_parameters, - 0xdead, - 0xbeef, - username, - workstation_name_slash, - (uint8_t *) chal, - nt, - lm); + network_info->identity_info.domain_name.string = domain; + network_info->identity_info.parameter_control = logon_parameters; + network_info->identity_info.logon_id_low = 0xdead; + network_info->identity_info.logon_id_high = 0xbeef; + network_info->identity_info.account_name.string = username; + network_info->identity_info.workstation.string = workstation_name_slash; + + memcpy(network_info->challenge, chal, 8); + network_info->nt = nt; + network_info->lm = lm; logon->network = network_info; diff --git a/source3/rpc_client/init_netlogon.c b/source3/rpc_client/init_netlogon.c index 88a18dee07..d197ff74b2 100644 --- a/source3/rpc_client/init_netlogon.c +++ b/source3/rpc_client/init_netlogon.c @@ -20,89 +20,6 @@ #include "includes.h" #include "../libcli/auth/libcli_auth.h" -/******************************************************************* - inits a structure. -********************************************************************/ - -void init_netr_IdentityInfo(struct netr_IdentityInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation) -{ - init_lsa_String(&r->domain_name, domain_name); - r->parameter_control = parameter_control; - r->logon_id_low = logon_id_low; - r->logon_id_high = logon_id_high; - init_lsa_String(&r->account_name, account_name); - init_lsa_String(&r->workstation, workstation); -} - -/******************************************************************* - inits a structure. - This is a network logon packet. The log_id parameters - are what an NT server would generate for LUID once the - user is logged on. I don't think we care about them. - - Note that this has no access to the NT and LM hashed passwords, - so it forwards the challenge, and the NT and LM responses (24 - bytes each) over the secure channel to the Domain controller - for it to say yea or nay. This is the preferred method of - checking for a logon as it doesn't export the password - hashes to anyone who has compromised the secure channel. JRA. - -********************************************************************/ - -void init_netr_NetworkInfo(struct netr_NetworkInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation, - uint8_t challenge[8], - struct netr_ChallengeResponse nt, - struct netr_ChallengeResponse lm) -{ - init_netr_IdentityInfo(&r->identity_info, - domain_name, - parameter_control, - logon_id_low, - logon_id_high, - account_name, - workstation); - memcpy(r->challenge, challenge, 8); - r->nt = nt; - r->lm = lm; -} - -/******************************************************************* - inits a structure. -********************************************************************/ - -void init_netr_PasswordInfo(struct netr_PasswordInfo *r, - const char *domain_name, - uint32_t parameter_control, - uint32_t logon_id_low, - uint32_t logon_id_high, - const char *account_name, - const char *workstation, - struct samr_Password lmpassword, - struct samr_Password ntpassword) -{ - init_netr_IdentityInfo(&r->identity_info, - domain_name, - parameter_control, - logon_id_low, - logon_id_high, - account_name, - workstation); - r->lmpassword = lmpassword; - r->ntpassword = ntpassword; -} - /************************************************************************* inits a netr_CryptPassword structure *************************************************************************/ |