drsuapi_cracknames.c

来自「samba最新软件」· C语言 代码 · 共 998 行 · 第 1/3 页

C
998
字号
	if (strcmp(realm_canonical, 		   talloc_asprintf(mem_ctx, "%s/", dns_domain))!= 0) {		printf("local Round trip on canonical name failed: %s != %s!\n",		       realm_canonical, 		       talloc_asprintf(mem_ctx, "%s/", dns_domain));		    return false;	};	realm_canonical_ex = ldb_dn_canonical_ex_string(mem_ctx, realm_dn);	if (strcmp(realm_canonical_ex, 		   talloc_asprintf(mem_ctx, "%s\n", dns_domain))!= 0) {		printf("local Round trip on canonical ex name failed: %s != %s!\n",		       realm_canonical, 		       talloc_asprintf(mem_ctx, "%s\n", dns_domain));		    return false;	};	r.in.req.req1.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT;	r.in.req.req1.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779;	names[0].str = nt4_domain;	printf("testing DsCrackNames with name '%s' desired format:%d\n",			names[0].str, r.in.req.req1.format_desired);	status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);	if (!NT_STATUS_IS_OK(status)) {		const char *errstr = nt_errstr(status);		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);		}		printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);		ret = false;	} else if (!W_ERROR_IS_OK(r.out.result)) {		printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));		ret = false;	} else if (r.out.ctr.ctr1->array[0].status != DRSUAPI_DS_NAME_STATUS_OK) {		printf("DsCrackNames failed on name - %d\n", r.out.ctr.ctr1->array[0].status);		ret = false;	}	if (!ret) {		return ret;	}	priv->domain_obj_dn = r.out.ctr.ctr1->array[0].result_name;	r.in.req.req1.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT;	r.in.req.req1.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779;	names[0].str = talloc_asprintf(mem_ctx, "%s%s$", nt4_domain, test_dc);	printf("testing DsCrackNames with name '%s' desired format:%d\n",	       names[0].str, r.in.req.req1.format_desired);	status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);	if (!NT_STATUS_IS_OK(status)) {		const char *errstr = nt_errstr(status);		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);		}		printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);		ret = false;	} else if (!W_ERROR_IS_OK(r.out.result)) {		printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));		ret = false;	} else if (r.out.ctr.ctr1->array[0].status != DRSUAPI_DS_NAME_STATUS_OK) {		printf("DsCrackNames failed on name - %d\n", r.out.ctr.ctr1->array[0].status);		ret = false;	}	if (!ret) {		return ret;	}	FQDN_1779_name = r.out.ctr.ctr1->array[0].result_name;	r.in.req.req1.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID;	r.in.req.req1.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779;	names[0].str = priv->domain_guid_str;	printf("testing DsCrackNames with name '%s' desired format:%d\n",	       names[0].str, r.in.req.req1.format_desired);	status = dcerpc_drsuapi_DsCrackNames(p, mem_ctx, &r);	if (!NT_STATUS_IS_OK(status)) {		const char *errstr = nt_errstr(status);		if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {			errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);		}		printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);		ret = false;	} else if (!W_ERROR_IS_OK(r.out.result)) {		printf("DsCrackNames failed - %s\n", win_errstr(r.out.result));		ret = false;	} else if (r.out.ctr.ctr1->array[0].status != DRSUAPI_DS_NAME_STATUS_OK) {		printf("DsCrackNames failed on name - %d\n", r.out.ctr.ctr1->array[0].status);		ret = false;	}	if (!ret) {		return ret;	}	if (strcmp(priv->domain_dns_name, r.out.ctr.ctr1->array[0].dns_domain_name) != 0) {		printf("DsCrackNames failed to return same DNS name - expected %s got %s\n", priv->domain_dns_name, r.out.ctr.ctr1->array[0].dns_domain_name);		return false;	}	FQDN_1779_dn = ldb_dn_new(mem_ctx, ldb, FQDN_1779_name);	canonical_name = ldb_dn_canonical_string(mem_ctx, FQDN_1779_dn);	canonical_ex_name = ldb_dn_canonical_ex_string(mem_ctx, FQDN_1779_dn);	user_principal_name = talloc_asprintf(mem_ctx, "%s$@%s", test_dc, dns_domain);	/* form up a user@DOMAIN */	user_principal_name_short = talloc_asprintf(mem_ctx, "%s$@%s", test_dc, nt4_domain);	/* variable nt4_domain includs a trailing \ */	user_principal_name_short[strlen(user_principal_name_short) - 1] = '\0';		service_principal_name = talloc_asprintf(mem_ctx, "HOST/%s", test_dc);	{				struct {			enum drsuapi_DsNameFormat format_offered;			enum drsuapi_DsNameFormat format_desired;			const char *comment;			const char *str;			const char *expected_str;			const char *expected_dns;			enum drsuapi_DsNameStatus status;			enum drsuapi_DsNameStatus alternate_status;			enum drsuapi_DsNameFlags flags;			bool skip;		} crack[] = {			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = user_principal_name,				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = user_principal_name_short,				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_NO_MAPPING			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = service_principal_name,				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "cifs/%s.%s", test_dc, dns_domain),				.comment = "ServicePrincipal Name",				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL,				.str = FQDN_1779_name,				.expected_str = canonical_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_CANONICAL, 				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = canonical_name,				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX,				.str = FQDN_1779_name,				.expected_str = canonical_ex_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX, 				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = canonical_ex_name,				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL,				.str = FQDN_1779_name,				.comment = "DN to cannoical syntactial only",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.expected_str = canonical_name,				.flags = DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX,				.str = FQDN_1779_name,				.comment = "DN to cannoical EX syntactial only",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.expected_str = canonical_ex_name,				.flags = DRSUAPI_DS_NAME_FLAG_SYNTACTICAL_ONLY			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_DISPLAY,				.str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_GUID,				.str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = priv->domain_guid_str,				.comment = "Domain GUID to NT4 ACCOUNT",				.expected_str = nt4_domain,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL,				.str = priv->domain_guid_str,				.comment = "Domain GUID to Canonical",				.expected_str = talloc_asprintf(mem_ctx, "%s/", dns_domain),				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_CANONICAL_EX,				.str = priv->domain_guid_str,				.comment = "Domain GUID to Canonical EX",				.expected_str = talloc_asprintf(mem_ctx, "%s\n", dns_domain),				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_DISPLAY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = "CN=Microsoft Corporation,L=Redmond,S=Washington,C=US",				.comment = "display name for Microsoft Support Account",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE,				.skip = torture_setting_bool(tctx, "samba4", false)			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = GUID_string2(mem_ctx, torture_join_user_guid(priv->join)),				.comment = "Account GUID -> DN",				.expected_str = FQDN_1779_name,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = GUID_string2(mem_ctx, torture_join_user_guid(priv->join)),				.comment = "Account GUID -> NT4 Account",				.expected_str = talloc_asprintf(mem_ctx, "%s%s$", nt4_domain, test_dc),				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{						.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = GUID_string2(mem_ctx, &priv->dcinfo.site_guid),				.comment = "Site GUID",				.expected_str = priv->dcinfo.site_dn,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = GUID_string2(mem_ctx, &priv->dcinfo.computer_guid),				.comment = "Computer GUID",				.expected_str = priv->dcinfo.computer_dn,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = GUID_string2(mem_ctx, &priv->dcinfo.computer_guid),				.comment = "Computer GUID -> NT4 Account",				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = GUID_string2(mem_ctx, &priv->dcinfo.server_guid),				.comment = "Server GUID",				.expected_str = priv->dcinfo.server_dn,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = GUID_string2(mem_ctx, &priv->dcinfo.ntds_guid),				.comment = "NTDS GUID",				.expected_str = priv->dcinfo.ntds_dn,				.status = DRSUAPI_DS_NAME_STATUS_OK,				.skip = GUID_all_zero(&priv->dcinfo.ntds_guid)			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_DISPLAY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = test_dc,				.comment = "DISLPAY NAME search for DC short name",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "krbtgt/%s", dns_domain),				.comment = "Looking for KRBTGT as a serivce principal",				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = dns_domain			},			{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?