drsuapi_cracknames.c

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

C
998
字号
				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "bogus/%s", dns_domain),				.comment = "Looking for bogus serivce principal",				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = dns_domain			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "bogus/%s.%s", test_dc, dns_domain),				.comment = "Looking for bogus serivce on test DC",				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = talloc_asprintf(mem_ctx, "%s.%s", test_dc, dns_domain)			},			{ 				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "krbtgt"),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{ 				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Looking for the kadmin/changepw service as a serivce principal",				.str = talloc_asprintf(mem_ctx, "kadmin/changepw"),				.status = DRSUAPI_DS_NAME_STATUS_OK,				.expected_str = talloc_asprintf(mem_ctx, "CN=krbtgt,CN=Users,%s", realm_dn_str),				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "cifs/%s.%s@%s", 						       test_dc, dns_domain,						       dns_domain),				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "cifs/%s.%s@%s", 						       test_dc, dns_domain,						       "BOGUS"),				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = "BOGUS"			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = talloc_asprintf(mem_ctx, "cifs/%s.%s@%s", 						       test_dc, "REALLY",						       "BOGUS"),				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = "BOGUS"			},			{				.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),				.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", 						       test_dc),				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = "NOT A GUID",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = "NOT A SID",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = "NOT AN NT4 NAME",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_GUID,				.comment = "Unparsable DN",				.str = "NOT A DN",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Unparsable user principal",				.str = "NOT A PRINCIPAL",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Unparsable service principal",				.str = "NOT A SERVICE PRINCIPAL",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_GUID,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "BIND GUID (ie, not in the directory)",				.str = GUID_string2(mem_ctx, &priv->bind_guid),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Unqualified Machine account as user principal",				.str = talloc_asprintf(mem_ctx, "%s$", test_dc),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Machine account as service principal",				.str = talloc_asprintf(mem_ctx, "%s$", test_dc),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SERVICE_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Full Machine account as service principal",				.str = user_principal_name,				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Realm as an NT4 domain lookup",				.str = talloc_asprintf(mem_ctx, "%s\\", dns_domain),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "BUILTIN\\ -> DN",				.str = "BUILTIN\\",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "NT AUTHORITY\\ -> DN",				.str = "NT AUTHORITY\\",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "NT AUTHORITY\\ANONYMOUS LOGON -> DN",				.str = "NT AUTHORITY\\ANONYMOUS LOGON",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "NT AUTHORITY\\SYSTEM -> DN",				.str = "NT AUTHORITY\\SYSTEM",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.comment = "BUITIN SID -> NT4 account",				.str = SID_BUILTIN,				.status = DRSUAPI_DS_NAME_STATUS_NO_MAPPING,				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE			}, 			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = SID_BUILTIN,				.comment = "Builtin Domain SID -> DN",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.expected_str = talloc_asprintf(mem_ctx, "CN=Builtin,%s", realm_dn_str),				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.str = SID_BUILTIN_ADMINISTRATORS,				.comment = "Builtin Administrors SID -> DN",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = SID_BUILTIN_ADMINISTRATORS,				.comment = "Builtin Administrors SID -> NT4 Account",				.status = DRSUAPI_DS_NAME_STATUS_OK,				.alternate_status = DRSUAPI_DS_NAME_STATUS_NOT_UNIQUE			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = SID_NT_ANONYMOUS,				.comment = "NT Anonymous SID -> NT4 Account",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.str = SID_NT_SYSTEM,				.comment = "NT SYSTEM SID -> NT4 Account",				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "Domain SID -> DN",				.str = dom_sid,				.expected_str = realm_dn_str,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_SID_OR_SID_HISTORY,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_NT4_ACCOUNT,				.comment = "Domain SID -> NT4 account",				.str = dom_sid,				.expected_str = nt4_domain,				.status = DRSUAPI_DS_NAME_STATUS_OK			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "invalid user principal name",				.str = "foo@bar",				.status = DRSUAPI_DS_NAME_STATUS_DOMAIN_ONLY,				.expected_dns = "bar"			},			{				.format_offered	= DRSUAPI_DS_NAME_FORMAT_USER_PRINCIPAL,				.format_desired	= DRSUAPI_DS_NAME_FORMAT_FQDN_1779,				.comment = "invalid user principal name in valid domain",				.str = talloc_asprintf(mem_ctx, "invalidusername@%s", dns_domain),				.status = DRSUAPI_DS_NAME_STATUS_NOT_FOUND			}		};		int i;				for (i=0; i < ARRAY_SIZE(crack); i++) {			const char *comment;			r.in.req.req1.format_flags   = crack[i].flags;			r.in.req.req1.format_offered = crack[i].format_offered; 			r.in.req.req1.format_desired = crack[i].format_desired;			names[0].str = crack[i].str;						if (crack[i].comment) {				comment = talloc_asprintf(mem_ctx, "'%s' with name '%s' desired format:%d\n",							  crack[i].comment, names[0].str, r.in.req.req1.format_desired);			} else {				comment = talloc_asprintf(mem_ctx, "'%s' desired format:%d\n",				       names[0].str, r.in.req.req1.format_desired);			}			if (crack[i].skip) {				printf("skipping: %s", comment);				continue;			}			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 on %s - %s\n", comment, 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 != crack[i].status) {				if (crack[i].alternate_status) {					if (r.out.ctr.ctr1->array[0].status != crack[i].alternate_status) {						printf("DsCrackNames unexpected status %d, wanted %d or %d on: %s\n", 						       r.out.ctr.ctr1->array[0].status,						       crack[i].status,						       crack[i].alternate_status,						       comment);						ret = false;					}				} else {					printf("DsCrackNames unexpected status %d, wanted %d on: %s\n", 					       r.out.ctr.ctr1->array[0].status,					       crack[i].status,					       comment);					ret = false;				}			} else if (crack[i].expected_str				   && (strcmp(r.out.ctr.ctr1->array[0].result_name, 					      crack[i].expected_str) != 0)) {				if (strcasecmp(r.out.ctr.ctr1->array[0].result_name, 					       crack[i].expected_str) != 0) {					printf("DsCrackNames failed - got %s, expected %s on %s\n", 					       r.out.ctr.ctr1->array[0].result_name, 					       crack[i].expected_str, comment);					ret = false;				} else {					printf("(warning) DsCrackNames returned different case - got %s, expected %s on %s\n", 					       r.out.ctr.ctr1->array[0].result_name, 					       crack[i].expected_str, comment);				}			} else if (crack[i].expected_dns				   && (strcmp(r.out.ctr.ctr1->array[0].dns_domain_name, 					      crack[i].expected_dns) != 0)) {				printf("DsCrackNames failed - got DNS name %s, expected %s on %s\n", 				       r.out.ctr.ctr1->array[0].result_name, 				       crack[i].expected_str, comment);				ret = false;			}		}	}	if (!test_DsCrackNamesMatrix(p, mem_ctx, priv, FQDN_1779_name, 				     user_principal_name, service_principal_name)) {		ret = false;	}	return ret;}

⌨️ 快捷键说明

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