Esempio n. 1
0
static NTSTATUS cmd_lsa_enum_privilege(struct cli_state *cli, 
                                          TALLOC_CTX *mem_ctx, int argc, 
                                          char **argv) 
{
	POLICY_HND pol;
	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;

	uint32 enum_context=0;
	uint32 pref_max_length=0x1000;
	uint32 count=0;
	char   **privs_name;
	uint32 *privs_high;
	uint32 *privs_low;
	int i;

	if (argc > 3) {
		printf("Usage: %s [enum context] [max length]\n", argv[0]);
		return NT_STATUS_OK;
	}

	if (argc>=2)
		enum_context=atoi(argv[1]);

	if (argc==3)
		pref_max_length=atoi(argv[2]);

	result = cli_lsa_open_policy(cli, mem_ctx, True, 
				     SEC_RIGHTS_MAXIMUM_ALLOWED,
				     &pol);

	if (!NT_STATUS_IS_OK(result))
		goto done;

	result = cli_lsa_enum_privilege(cli, mem_ctx, &pol, &enum_context, pref_max_length,
					&count, &privs_name, &privs_high, &privs_low);

	if (!NT_STATUS_IS_OK(result))
		goto done;

	/* Print results */
	printf("found %d privileges\n\n", count);

	for (i = 0; i < count; i++) {
		printf("%s \t\t%d:%d (0x%x:0x%x)\n", privs_name[i] ? privs_name[i] : "*unknown*",
		       privs_high[i], privs_low[i], privs_high[i], privs_low[i]);
	}

 done:
	return result;
}
Esempio n. 2
0
static NTSTATUS enum_privileges( TALLOC_CTX *ctx, struct cli_state *cli, 
                                 POLICY_HND *pol )
{
	NTSTATUS result;
	uint32 enum_context = 0;
	uint32 pref_max_length=0x1000;
	uint32 count=0;
	char   **privs_name;
	uint32 *privs_high;
	uint32 *privs_low;
	int i;
	uint16 lang_id=0;
	uint16 lang_id_sys=0;
	uint16 lang_id_desc;
	fstring description;

	result = cli_lsa_enum_privilege(cli, ctx, pol, &enum_context, 
		pref_max_length, &count, &privs_name, &privs_high, &privs_low);

	if ( !NT_STATUS_IS_OK(result) )
		return result;

	/* Print results */
	
	for (i = 0; i < count; i++) {
		d_printf("%30s  ", privs_name[i] ? privs_name[i] : "*unknown*" );
		
		/* try to get the description */
		
		if ( !NT_STATUS_IS_OK(cli_lsa_get_dispname(cli, ctx, pol, 
			privs_name[i], lang_id, lang_id_sys, description, &lang_id_desc)) )
		{
			d_printf("??????\n");
			continue;
		}
		
		d_printf("%s\n", description );		
	}

	return NT_STATUS_OK;

}