From 94473233fe8ae7f663d4872eb1d9f25f08afadb9 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 14 Oct 2005 06:58:39 +0000 Subject: r10988: print out the password blobs, with --option="dssync:print_pwd_blobs=yes" metze (This used to be commit b06de6d39cd21d5096e4041e218370263d8096b0) --- source4/torture/rpc/dssync.c | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c index 77551998c3..3aa2f43e6b 100644 --- a/source4/torture/rpc/dssync.c +++ b/source4/torture/rpc/dssync.c @@ -269,6 +269,61 @@ static BOOL test_GetInfo(struct DsSyncTest *ctx) return ret; } +static void test_analyse_objects(struct DsSyncTest *ctx, + struct drsuapi_DsReplicaObjectListItemEx *cur) +{ + if (!lp_parm_bool(-1,"dssync","print_pwd_blobs",False)) { + return; + } + + for (; cur; cur = cur->next_object) { + const char *dn; + BOOL dn_printed = False; + uint32_t i; + + if (!cur->object.identifier) continue; + + dn = cur->object.identifier->dn; + + for (i=0; i < cur->object.attribute_ctr.num_attributes; i++) { + const char *name = NULL; + DATA_BLOB *data = NULL; + struct drsuapi_DsReplicaAttribute *attr; + attr = &cur->object.attribute_ctr.attributes[i]; + + switch (attr->attid) { + case DRSUAPI_ATTRIBUTE_dBCSPwd: + name = "dBCSPwd"; + break; + case DRSUAPI_ATTRIBUTE_unicodePwd: + name = "unicodePwd"; + break; + case DRSUAPI_ATTRIBUTE_ntPwdHistory: + name = "ntPwdHistory"; + break; + case DRSUAPI_ATTRIBUTE_lmPwdHistory: + name = "lmPwdHistory"; + break; + default: + continue; + } + + if (attr->value_ctr.data_blob.num_values != 1) continue; + + if (!attr->value_ctr.data_blob.values[0].data) continue; + + data = attr->value_ctr.data_blob.values[0].data; + + if (!dn_printed) { + DEBUG(0,("DN: %s\n", dn)); + dn_printed = True; + } + DEBUGADD(0,("ATTR: %s data_blob.length=%u\n", + name, data->length)); + dump_data(0,data->data, data->length); + } + } +} static BOOL test_FetchData(struct DsSyncTest *ctx) { @@ -419,6 +474,8 @@ static BOOL test_FetchData(struct DsSyncTest *ctx) ctr6->new_highwatermark.tmp_highest_usn, ctr6->new_highwatermark.highest_usn)); + test_analyse_objects(ctx, ctr6->first_object); + if (ctr6->new_highwatermark.tmp_highest_usn > ctr6->new_highwatermark.highest_usn) { r.in.req.req8.highwatermark = ctr6->new_highwatermark; continue; -- cgit