summaryrefslogtreecommitdiff
path: root/source3/rpcclient/cmd_netlogon.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpcclient/cmd_netlogon.c')
-rw-r--r--source3/rpcclient/cmd_netlogon.c167
1 files changed, 21 insertions, 146 deletions
diff --git a/source3/rpcclient/cmd_netlogon.c b/source3/rpcclient/cmd_netlogon.c
index c518fbb9f5..2c8514b43e 100644
--- a/source3/rpcclient/cmd_netlogon.c
+++ b/source3/rpcclient/cmd_netlogon.c
@@ -33,7 +33,7 @@ extern int DEBUGLEVEL;
#define DEBUG_TESTING
-extern struct ntuser_creds *usr_creds;
+extern struct cli_state *smb_cli;
extern FILE* out_hnd;
@@ -41,32 +41,16 @@ extern FILE* out_hnd;
/****************************************************************************
experimental nt login.
****************************************************************************/
-void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
+void cmd_netlogon_login_test(struct client_info *info)
{
-#if 0
extern BOOL global_machine_password_needs_changing;
-#endif
fstring nt_user_name;
fstring password;
BOOL res = True;
char *nt_password;
unsigned char trust_passwd[16];
- fstring trust_acct;
- fstring domain;
- char *p;
-
- fstring srv_name;
- fstrcpy(srv_name, "\\\\");
- fstrcat(srv_name, info->dest_host);
- strupper(srv_name);
-
- fstrcpy(domain, usr_creds->domain);
- if (domain[0] == 0)
- {
- fstrcpy(domain, info->dom.level3_dom);
- }
#if 0
/* machine account passwords */
pstring new_mach_pwd;
@@ -75,80 +59,46 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
new_mach_pwd[0] = 0;
#endif
- argc--;
- argv++;
-
- if (argc < 1)
+ if (!next_token(NULL, nt_user_name, NULL, sizeof(nt_user_name)))
{
- fstrcpy(nt_user_name, usr_creds->user_name);
+ fstrcpy(nt_user_name, smb_cli->user_name);
if (nt_user_name[0] == 0)
{
- report(out_hnd,"ntlogin: must specify username with anonymous connection\n");
- report(out_hnd,"ntlogin [[DOMAIN\\]user] [password]\n");
+ fprintf(out_hnd,"ntlogin: must specify username with anonymous connection\n");
return;
}
}
- else
- {
- fstrcpy(nt_user_name, argv[0]);
- }
-
- p = strchr(nt_user_name, '\\');
- if (p != NULL)
- {
- fstrcpy(domain, nt_user_name);
- p = strchr(domain, '\\');
- if (p != NULL)
- {
- *p = 0;
- fstrcpy(nt_user_name, p+1);
- }
-
- }
- if (domain[0] == 0)
+ if (next_token(NULL, password, NULL, sizeof(password)))
{
- report(out_hnd,"no domain specified.\n");
- }
-
- argc--;
- argv++;
-
- if (argc > 0)
- {
- nt_password = argv[0];
+ nt_password = password;
}
else
{
nt_password = getpass("Enter NT Login password:");
}
- DEBUG(5,("do_nt_login_test: username %s from: %s\n",
- nt_user_name, info->myhostname));
+ DEBUG(5,("do_nt_login_test: username %s\n", nt_user_name));
- fstrcpy(trust_acct, info->myhostname);
- fstrcat(trust_acct, "$");
-
- res = res ? trust_get_passwd(trust_passwd, domain, info->myhostname) : False;
+ res = res ? trust_get_passwd(trust_passwd, smb_cli->domain, info->myhostname) : False;
#if 0
/* check whether the user wants to change their machine password */
res = res ? trust_account_check(info->dest_ip, info->dest_host,
- info->myhostname, usr_creds->domain,
+ info->myhostname, smb_cli->domain,
info->mach_acct, new_mach_pwd) : False;
#endif
+ /* open NETLOGON session. negotiate credentials */
+ res = res ? cli_nt_session_open(smb_cli, PIPE_NETLOGON) : False;
- res = res ? cli_nt_setup_creds(srv_name, info->myhostname,
- trust_acct,
- trust_passwd, SEC_CHAN_WKSTA) == 0x0 : False;
+ res = res ? cli_nt_setup_creds(smb_cli, trust_passwd) : False;
-#if 0
/* change the machine password? */
if (global_machine_password_needs_changing)
{
unsigned char new_trust_passwd[16];
generate_random_buffer(new_trust_passwd, 16, True);
- res = res ? cli_nt_srv_pwset(srv_name, info->myhostname, new_trust_passwd, SEC_CHAN_WKSTA) : False;
+ res = res ? cli_nt_srv_pwset(smb_cli, new_trust_passwd) : False;
if (res)
{
@@ -157,102 +107,27 @@ void cmd_netlogon_login_test(struct client_info *info, int argc, char *argv[])
memset(new_trust_passwd, 0, 16);
}
-#endif
memset(trust_passwd, 0, 16);
/* do an NT login */
- res = res ? cli_nt_login_interactive(srv_name, info->myhostname,
- usr_creds->domain, nt_user_name,
+ res = res ? cli_nt_login_interactive(smb_cli,
+ smb_cli->domain, nt_user_name,
getuid(), nt_password,
&info->dom.ctr, &info->dom.user_info3) : False;
/*** clear out the password ***/
memset(password, 0, sizeof(password));
-#if 0
/* ok! you're logged in! do anything you like, then... */
/* do an NT logout */
- res = res ? cli_nt_logoff(srv_name, info->myhostname, &info->dom.ctr) : False;
-#endif
+ res = res ? cli_nt_logoff(smb_cli, &info->dom.ctr) : False;
- report(out_hnd,"cmd_nt_login: login (%s) test succeeded: %s\n",
- nt_user_name, BOOLSTR(res));
-}
+ /* close the session */
+ cli_nt_session_close(smb_cli);
-/****************************************************************************
-experimental nt login.
-****************************************************************************/
-void cmd_netlogon_domain_test(struct client_info *info, int argc, char *argv[])
-{
- char *nt_trust_dom;
- BOOL res = True;
- unsigned char trust_passwd[16];
- fstring inter_dom_acct;
-
- fstring srv_name;
- fstrcpy(srv_name, "\\\\");
- fstrcat(srv_name, info->dest_host);
- strupper(srv_name);
-
- if (argc < 2)
- {
- report(out_hnd,"domtest: must specify domain name\n");
- return;
- }
-
- nt_trust_dom = argv[1];
-
- DEBUG(5,("do_nt_login_test: domain %s\n", nt_trust_dom));
-
- fstrcpy(inter_dom_acct, nt_trust_dom);
- fstrcat(inter_dom_acct, "$");
-
- res = res ? trust_get_passwd(trust_passwd, usr_creds->domain, nt_trust_dom) : False;
-
- res = res ? cli_nt_setup_creds(srv_name,
- info->myhostname, inter_dom_acct,
- trust_passwd,
- SEC_CHAN_DOMAIN) == 0x0 : False;
-
- memset(trust_passwd, 0, 16);
-
- report(out_hnd,"cmd_nt_login: credentials (%s) test succeeded: %s\n",
- nt_trust_dom, BOOLSTR(res));
+ fprintf(out_hnd,"cmd_nt_login: login (%s) test succeeded: %s\n",
+ nt_user_name, BOOLSTR(res));
}
-/****************************************************************************
-experimental SAM synchronisation.
-****************************************************************************/
-void cmd_sam_sync(struct client_info *info, int argc, char *argv[])
-{
- SAM_DELTA_HDR hdr_deltas[MAX_SAM_DELTAS];
- SAM_DELTA_CTR deltas[MAX_SAM_DELTAS];
- uint32 num;
- uchar trust_passwd[16];
- fstring srv_name;
- fstring trust_acct;
-
- fstrcpy(srv_name, "\\\\");
- fstrcat(srv_name, info->dest_host);
- strupper(srv_name);
-
- fstrcpy(trust_acct, info->myhostname);
- fstrcat(trust_acct, "$");
-
- if (!trust_get_passwd(trust_passwd, usr_creds->domain, info->myhostname))
- {
- report(out_hnd, "cmd_sam_sync: no trust account password\n");
- return;
- }
-
- if (net_sam_sync(srv_name, info->myhostname,
- trust_acct, trust_passwd,
- hdr_deltas, deltas, &num))
- {
- display_sam_sync(out_hnd, ACTION_HEADER , hdr_deltas, deltas, num);
- display_sam_sync(out_hnd, ACTION_ENUMERATE, hdr_deltas, deltas, num);
- display_sam_sync(out_hnd, ACTION_FOOTER , hdr_deltas, deltas, num);
- }
-}