Exemplo n.º 1
0
static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli, 
                                       TALLOC_CTX *mem_ctx, int argc,
                                       const char **argv)
{
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        int logon_type = NET_LOGON_TYPE;
        const char *username, *password;
	uint32 neg_flags = 0x000001ff;
	int auth_level = 2;
	DOM_CRED ret_creds;

        /* Check arguments */

        if (argc < 3 || argc > 6) {
                fprintf(stderr, "Usage: samlogon <username> <password> "
                        "[logon_type] [neg flags] [auth level (2 or 3)]\n"
			"neg flags being 0x000001ff or 0x6007ffff\n");
                return NT_STATUS_OK;
        }

        username = argv[1];
        password = argv[2];

        if (argc == 4)
                sscanf(argv[3], "%i", &logon_type);

	if (argc == 5)
                sscanf(argv[4], "%i", &neg_flags);

	if (argc == 6)
                sscanf(argv[5], "%i", &auth_level);

        /* Perform the sam logon */

	ZERO_STRUCT(ret_creds);

        result = cli_netlogon_sam_logon(cli, mem_ctx, &ret_creds, username, password, logon_type);

	clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);
	
        result = cli_netlogon_sam_logon(cli, mem_ctx, &ret_creds, username, password, logon_type);

	clnt_deal_with_creds(cli->sess_key, &(cli->clnt_cred), &ret_creds);

	if (!NT_STATUS_IS_OK(result))
		goto done;

 done:
        return result;
}
Exemplo n.º 2
0
static NTSTATUS cmd_netlogon_sam_logon(struct cli_state *cli, 
                                       TALLOC_CTX *mem_ctx, int argc,
                                       char **argv)
{
        unsigned char trust_passwd[16];
        NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
        int logon_type = NET_LOGON_TYPE;
        char *username, *password;

        /* Check arguments */

        if (argc < 3 || argc > 4) {
                fprintf(stderr, "Usage: samlogon <username> <password> "
                        "[logon_type]\n");
                return NT_STATUS_OK;
        }

        username = argv[1];
        password = argv[2];

        if (argc == 4)
                sscanf(argv[3], "%i", &logon_type);

        /* Authenticate ourselves with the domain controller */

        if (!secrets_init()) {
                fprintf(stderr, "Unable to initialise secrets database\n");
                return result;
        }

	if (!secrets_fetch_trust_account_password(lp_workgroup(), trust_passwd,
                                                  NULL)) {
		fprintf(stderr, "could not fetch trust account password\n");
		goto done;
	}        

        result = cli_nt_setup_creds(cli, trust_passwd);

        if (!NT_STATUS_IS_OK(result)) {
                fprintf(stderr, "Error initialising session creds\n");
                goto done;
        }

        /* Perform the sam logon */

        result = cli_netlogon_sam_logon(cli, mem_ctx, username, password,
                                        logon_type);

	if (!NT_STATUS_IS_OK(result))
		goto done;

 done:
        return result;
}