summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1997-11-03 15:47:03 +0000
committerLuke Leighton <lkcl@samba.org>1997-11-03 15:47:03 +0000
commit4cf4dd696714492f8e51661cab4736d66ab2916b (patch)
tree523ed6819f39f2cbed6e511966d83e3d3c9c9310
parentcadd772df72aa13018ea6e909ed0d7e294f24b5e (diff)
downloadsamba-4cf4dd696714492f8e51661cab4736d66ab2916b.tar.gz
samba-4cf4dd696714492f8e51661cab4736d66ab2916b.tar.xz
samba-4cf4dd696714492f8e51661cab4736d66ab2916b.zip
added code that _uses_ arcfour. arcfour itself, or anything remotely
like it, has *not* been added. this is the client and server side of the SAM Logon NT and LM OWF password obfuscation (rc4 with the long-term session key).
-rw-r--r--source/client/clientutil.c5
-rw-r--r--source/client/ntclient.c23
-rw-r--r--source/include/proto.h3
3 files changed, 26 insertions, 5 deletions
diff --git a/source/client/clientutil.c b/source/client/clientutil.c
index 1794615cd0f..4064dbecd78 100644
--- a/source/client/clientutil.c
+++ b/source/client/clientutil.c
@@ -33,6 +33,7 @@ pstring service="";
pstring desthost="";
extern pstring myname;
pstring password = "";
+pstring smb_login_passwd = "";
pstring username="";
pstring workgroup=WORKGROUP;
BOOL got_pass = False;
@@ -425,7 +426,7 @@ static struct {
/****************************************************************************
-send a login command
+send a login command.
****************************************************************************/
BOOL cli_send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setup)
{
@@ -578,6 +579,8 @@ BOOL cli_send_login(char *inbuf,char *outbuf,BOOL start_session,BOOL use_setup)
else
pass = (char *)getpass("Password: ");
+ pstrcpy(smb_login_passwd, pass);
+
/* use a blank username for the 2nd try with a blank password */
if (tries++ && !*pass)
*username = 0;
diff --git a/source/client/ntclient.c b/source/client/ntclient.c
index bf6531440e2..7e360981c02 100644
--- a/source/client/ntclient.c
+++ b/source/client/ntclient.c
@@ -28,6 +28,7 @@
extern int DEBUGLEVEL;
extern pstring username;
+extern pstring smb_login_passwd;
extern pstring workgroup;
#define CLIENT_TIMEOUT (30*1000)
@@ -278,11 +279,27 @@ BOOL do_nt_login(char *desthost, char *myhostname,
/*********************** SAM Info ***********************/
- /* this is used in both the SAM Logon and the SAM Logoff */
- make_id_info1(&id1, workgroup, 0,
+ {
+ char lm_owf_user_pwd[16];
+ char nt_owf_user_pwd[16];
+ nt_lm_owf_gen(smb_login_passwd, nt_owf_user_pwd, lm_owf_user_pwd);
+
+#ifdef DEBUG_PASSWORD
+
+ DEBUG(100,("nt owf of user password: "));
+ dump_data(100, lm_owf_user_pwd, 16);
+
+ DEBUG(100,("nt owf of user password: "));
+ dump_data(100, nt_owf_user_pwd, 16);
+
+#endif
+
+ /* this is used in both the SAM Logon and the SAM Logoff */
+ make_id_info1(&id1, workgroup, 0,
getuid(), 0,
username, myhostname,
- NULL, NULL);
+ sess_key, lm_owf_user_pwd, nt_owf_user_pwd);
+ }
/*********************** SAM Logon **********************/
diff --git a/source/include/proto.h b/source/include/proto.h
index d592c946340..4a370e0dacd 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -919,7 +919,8 @@ char* smb_io_arc4_owf(BOOL io, ARC4_OWF *hash, char *q, char *base, int align, i
void make_id_info1(DOM_ID_INFO_1 *id, char *domain_name,
uint32 param_ctrl, uint32 log_id_low, uint32 log_id_high,
char *user_name, char *wksta_name,
- char arc4_lm_owf[16], char arc4_nt_owf[16]);
+ char *sess_key,
+ unsigned char lm_cypher[16], unsigned char nt_cypher[16]);
char* smb_io_id_info1(BOOL io, DOM_ID_INFO_1 *id, char *q, char *base, int align, int depth);
void make_sam_info(DOM_SAM_INFO *sam,
char *logon_srv, char *comp_name, DOM_CRED *clnt_cred,