/*
 * Qick-based test for cifs login to qi.  Takes the base16-encoded NTLM hash
 * as a "password".
 */

#include <stdio.h>
#include <string.h>
#include "qick.h"

static char rcsid[] = "$Id: cifs.c,v 2.0 2000/07/08 03:26:40 dgc Exp $";

main(int ac, char *av[])
{
	qir_t	*qir;
	qi_t	*qi;
	qim_t	*qim, *sqim;
	char	*p;
	int	 len;
	char	 pass[128];
	char	 out[128];

	qi_init();
	qi = qi_server(av[1]);
	qi_write(qi, "login %s", av[2]);
	qim = NULL;
	while ((qim = qi_read(qi, (sqim = qim))) != NULL) {
		if (qim->qim_code == LR_LOGIN)
			break;
	}
	if (qim == NULL)
		return NULL;
	printf("message: %s\n", qim->qim_value);

	printf("Password: ");
	fflush(stdout);
	fgets(pass, 127, stdin);
	if ((p = strchr(pass, '\n')) == NULL)
		*p = '\0';

	crypt_start(pass);
	len = encryptit(out, qim->qim_value);
	out[len] = '\0';

	qi_write(qi, "ntlmhash %s\n", out);

	while ((qim = qi_read(qi, (sqim = qim))) != NULL) {
		if (qim->qim_code == LR_OK) {
			printf("excellent!\n");
			break;
		} else if (qim->qim_code > 0) {
			printf("nope.\n");
			break;
		}
	}

	qi_free_qim(sqim);
	exit(0);
}

