svn commit: samba r21300 - in branches/SAMBA_4_0/source/libnet: .

metze at samba.org metze at samba.org
Mon Feb 12 13:34:05 GMT 2007


Author: metze
Date: 2007-02-12 13:34:04 +0000 (Mon, 12 Feb 2007)
New Revision: 21300

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21300

Log:
let the caller decide if it wants rid decrypted hashes or not

metze
Modified:
   branches/SAMBA_4_0/source/libnet/libnet_samdump.c
   branches/SAMBA_4_0/source/libnet/libnet_samdump_keytab.c
   branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
   branches/SAMBA_4_0/source/libnet/libnet_vampire.c
   branches/SAMBA_4_0/source/libnet/libnet_vampire.h


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/libnet_samdump.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samdump.c	2007-02-12 13:04:09 UTC (rev 21299)
+++ branches/SAMBA_4_0/source/libnet/libnet_samdump.c	2007-02-12 13:34:04 UTC (rev 21300)
@@ -163,6 +163,7 @@
 
 	r2.out.error_string            = NULL;
 	r2.in.binding_string           = r->in.binding_string;
+	r2.in.rid_crypt                = lp_parm_bool(-1, "vampire", "rid decrypt", True);
 	r2.in.init_fn                  = NULL;
 	r2.in.delta_fn                 = libnet_samdump_fn;
 	r2.in.fn_ctx                   = samdump_state;

Modified: branches/SAMBA_4_0/source/libnet/libnet_samdump_keytab.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samdump_keytab.c	2007-02-12 13:04:09 UTC (rev 21299)
+++ branches/SAMBA_4_0/source/libnet/libnet_samdump_keytab.c	2007-02-12 13:34:04 UTC (rev 21300)
@@ -100,6 +100,7 @@
 
 	r2.out.error_string            = NULL;
 	r2.in.binding_string           = r->in.binding_string;
+	r2.in.rid_crypt                = true;
 	r2.in.init_fn                  = NULL;
 	r2.in.delta_fn                 = libnet_samdump_keytab_fn;
 	r2.in.fn_ctx                   = discard_const(r->in.keytab_name);

Modified: branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2007-02-12 13:04:09 UTC (rev 21299)
+++ branches/SAMBA_4_0/source/libnet/libnet_samsync_ldb.c	2007-02-12 13:34:04 UTC (rev 21300)
@@ -1215,6 +1215,7 @@
 
 	r2.out.error_string    = NULL;
 	r2.in.binding_string   = r->in.binding_string;
+	r2.in.rid_crypt	       = true;
 	r2.in.init_fn          = libnet_samsync_ldb_init;
 	r2.in.delta_fn         = libnet_samsync_ldb_fn;
 	r2.in.fn_ctx           = state;

Modified: branches/SAMBA_4_0/source/libnet/libnet_vampire.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_vampire.c	2007-02-12 13:04:09 UTC (rev 21299)
+++ branches/SAMBA_4_0/source/libnet/libnet_vampire.c	2007-02-12 13:34:04 UTC (rev 21300)
@@ -38,6 +38,7 @@
  */
 static NTSTATUS fix_user(TALLOC_CTX *mem_ctx,
 			 struct creds_CredentialState *creds,
+			 bool rid_crypt,
 			 enum netr_SamDatabaseID database,
 			 struct netr_DELTA_ENUM *delta,
 			 char **error_string) 
@@ -50,7 +51,7 @@
 	const char *username = user->account_name.string;
 	NTSTATUS nt_status;
 
-	if (lp_parm_bool(-1, "vampire", "rid_decrypt", True)) {
+	if (rid_crypt) {
 		if (user->lm_password_present) {
 			sam_rid_crypt(rid, user->lmpassword.hash, lm_hash.hash, 0);
 			user->lmpassword = lm_hash;
@@ -74,7 +75,7 @@
 		nt_status = ndr_pull_struct_blob(&data, mem_ctx, &keys, (ndr_pull_flags_fn_t)ndr_pull_netr_USER_KEYS);
 		if (NT_STATUS_IS_OK(nt_status)) {
 			if (keys.keys.keys2.lmpassword.length == 16) {
-				if (lp_parm_bool(-1, "vampire", "rid decrypt", True)) {
+				if (rid_crypt) {
 					sam_rid_crypt(rid, keys.keys.keys2.lmpassword.pwd.hash, lm_hash.hash, 0);
 					user->lmpassword = lm_hash;
 				} else {
@@ -83,7 +84,7 @@
 				user->lm_password_present = True;
 			}
 			if (keys.keys.keys2.ntpassword.length == 16) {
-				if (lp_parm_bool(-1, "vampire", "rid decrypt", True)) {
+				if (rid_crypt) {
 					sam_rid_crypt(rid, keys.keys.keys2.ntpassword.pwd.hash, nt_hash.hash, 0);
 					user->ntpassword = nt_hash;
 				} else {
@@ -91,6 +92,7 @@
 				}
 				user->nt_password_present = True;
 			}
+			/* TODO: rid decrypt history fields */
 		} else {
 			*error_string = talloc_asprintf(mem_ctx, "Failed to parse Sensitive Data for %s:", username);
 			dump_data(10, data.data, data.length);
@@ -128,6 +130,7 @@
 
 static NTSTATUS fix_delta(TALLOC_CTX *mem_ctx, 		
 			  struct creds_CredentialState *creds,
+			  bool rid_crypt,
 			  enum netr_SamDatabaseID database,
 			  struct netr_DELTA_ENUM *delta,
 			  char **error_string)
@@ -139,6 +142,7 @@
 	{
 		nt_status = fix_user(mem_ctx, 
 				     creds,
+				     rid_crypt,
 				     database,
 				     delta,
 				     error_string);
@@ -354,6 +358,7 @@
 				 * de-obfuscating the data */
 				nt_status = fix_delta(delta_ctx, 
 						      creds, 
+						      r->in.rid_crypt,
 						      dbsync.in.database_id,
 						      &dbsync.out.delta_enum_array->delta_enum[d], 
 						      &error_string);

Modified: branches/SAMBA_4_0/source/libnet/libnet_vampire.h
===================================================================
--- branches/SAMBA_4_0/source/libnet/libnet_vampire.h	2007-02-12 13:04:09 UTC (rev 21299)
+++ branches/SAMBA_4_0/source/libnet/libnet_vampire.h	2007-02-12 13:34:04 UTC (rev 21300)
@@ -33,6 +33,7 @@
 struct libnet_SamSync {
 	struct {
 		const char *binding_string;
+		bool rid_crypt;
 		NTSTATUS (*init_fn)(TALLOC_CTX *mem_ctx, 		
 				    void *private,
 				    struct libnet_SamSync_state *samsync_state,



More information about the samba-cvs mailing list