1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-24 04:23:53 +03:00

rpc client mods (ntlmssp flags)

This commit is contained in:
Luke Leighton
-
parent 91d224735d
commit 16256f86bf
10 changed files with 101 additions and 47 deletions

View File

@@ -208,6 +208,52 @@ BOOL create_rpc_reply(pipes_struct *p,
return p->rhdr.data != NULL && p->rhdr.offset == 0x18;
}
static BOOL api_pipe_ntlmssp_verify(pipes_struct *p)
{
uchar lm_owf[24];
uchar nt_owf[24];
DEBUG(5,("api_pipe_ntlmssp_verify: checking user details\n"));
if (p->ntlmssp_resp.hdr_lm_resp.str_str_len == 0) return False;
if (p->ntlmssp_resp.hdr_nt_resp.str_str_len == 0) return False;
if (p->ntlmssp_resp.hdr_usr .str_str_len == 0) return False;
if (p->ntlmssp_resp.hdr_domain .str_str_len == 0) return False;
if (p->ntlmssp_resp.hdr_wks .str_str_len == 0) return False;
memset(p->user_name, 0, sizeof(p->user_name));
memset(p->domain , 0, sizeof(p->domain ));
memset(p->wks , 0, sizeof(p->wks ));
if (IS_BITS_SET_ALL(p->ntlmssp_chal.neg_flags, NTLMSSP_NEGOTIATE_UNICODE))
{
fstrcpy(p->user_name, unistrn2((uint16*)p->ntlmssp_resp.user , p->ntlmssp_resp.hdr_usr .str_str_len/2));
fstrcpy(p->domain , unistrn2((uint16*)p->ntlmssp_resp.domain, p->ntlmssp_resp.hdr_domain.str_str_len/2));
fstrcpy(p->wks , unistrn2((uint16*)p->ntlmssp_resp.wks , p->ntlmssp_resp.hdr_wks .str_str_len/2));
}
else
{
fstrcpy(p->user_name, p->ntlmssp_resp.user );
fstrcpy(p->domain , p->ntlmssp_resp.domain);
fstrcpy(p->wks , p->ntlmssp_resp.wks );
}
DEBUG(5,("user: %s domain: %s wks: %s\n", p->user_name, p->domain, p->wks));
memcpy(lm_owf, p->ntlmssp_resp.lm_resp, sizeof(lm_owf));
memcpy(nt_owf, p->ntlmssp_resp.nt_resp, sizeof(nt_owf));
#ifdef DEBUG_PASSWORD
DEBUG(100,"lm, nt owfs:\n"));
dump_data(100, lm_owf, sizeof(lm_owf));
dump_data(100, nt_owf, sizeof(nt_owf));
#endif
return True;
#if 0
return pass_check_smb(p->user_name, p->domain,
p->ntplssp_chal.challenge, lm_owf, nt_owf);
#endif
}
static BOOL api_pipe_ntlmssp(pipes_struct *p, prs_struct *pd)
{
@@ -222,6 +268,10 @@ static BOOL api_pipe_ntlmssp(pipes_struct *p, prs_struct *pd)
case NTLMSSP_AUTH:
{
smb_io_rpc_auth_ntlmssp_resp("", &p->ntlmssp_resp, pd, 0);
if (!api_pipe_ntlmssp_verify(p))
{
pd->offset = 0;
}
break;
}
default: