Beispiel #1
1
int main(int argc, char *argv[])
{
	int opt;
	size_t i, j, n = 16, *xc;
	char c, *s;
	char *salt = "pepper";
	unsigned char *key;
	char *flags = "dluyn:";
	char *cc[4] = {
		"0123456789",
		"abcdefghijklmnopqrstuvwxyz",
		"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
		"!#$%&()*+,-./:;<=>?@[]^_{}~"
	};

	progname = strbsnm(argv[0]);

	while ((opt = getopt(argc, argv, flags)) != -1) {
		switch (opt) {
		case 'd': case 'l': case 'u': case 'y':
			cc[strchr(flags, opt) - flags] = "";
			break;
		case 'n':
			n = strtoul(optarg, &s, 0);
			if (*s != '\0')
				error(EXIT_FAILURE, 0, "%s: not a number", optarg);
			break;
		}
	}
	for (i = 0; i < ARRLEN(cc); i++)
		bputs(&ac, cc[i], strlen(cc[i]));
	bputs(&ac, "", 1);

	if (optind < argc)
		bputs(&en, argv[optind], strlen(argv[optind]));
	else
		prompt(&en, "Entity: ", 0);
	prompt(&pw, "Master password: "******"", 1);

	xc = erealloc(NULL, n * sizeof(*xc));
	for (i = 0; i < n; i++)
		xc[i] = -1;
	for (i = j = 0; i < ARRLEN(cc); i++) {
		if (*cc[i] != '\0') {
			j += 1;
			xc[n-j] = i;
		}
	}

	key = erealloc(NULL, n);
	PKCS5_PBKDF2_HMAC(pw.d, pw.n, (unsigned char*) salt, strlen(salt), 100000, EVP_sha512(), n, key);

	for (i = 0; i < n; i++) {
		s = xc[i] != -1 && *cc[xc[i]] != '\0' ? cc[xc[i]] : ac.d;
		c = s[key[i] % strlen(s)];
		printf("%c", c);
		for (j = 0; j < ARRLEN(cc); j++) {
			if (strchr(cc[j], c) != NULL)
				cc[j] = "";
		}
	}
	printf("\n");

	return EXIT_SUCCESS;
}
Beispiel #2
0
int main(int argc, char *argv[])
{
	int b, s;
	float f;
	char *end;
	unsigned int h, i;
	unsigned char *d;

	progname = strbsnm(argv[0]);

	for (i = 1; i < argc; i++) {
		f = strtof(argv[i], &end);
		if (*end != '\0') {
			error(0, 0, "%s: not a float", argv[i]);
			continue;
		}
		d = (unsigned char*) &f;
		h = 0;
		for (s = sizeof(f) * 8 - 8; s >= 0; s -= 8)
			h |= *d++ << s;
		for (b = sizeof(f) * 8 - 1; b >= 0; b--)
			printf("%u%s", h >> b & 0x1, b == 31 || b == 23 ? " " : "");
		printf("  %08x  %s\n", h, argv[i]);
	}
	return EXIT_SUCCESS;
}
Beispiel #3
0
int main(int argc, char *argv[])
{
	int opt;
	char *cmd, *opts;

	progname = strbsnm(argv[0]);

	if (argc < 2)
		error(EXIT_FAILURE, 0, "missing FILE");

	cmd = strbsnm(argv[1]);
	pusharg("/bin/rc");
	pusharg(argv[1]);
	opts = optstr(argv[1]);
	opterr = 0;
	argc--, argv++;

	while ((opt = getopt(argc, argv, opts)) != -1) {
		switch (opt) {
		case '?':
			progname = cmd;
			error(EXIT_FAILURE, 0, "unknown option: -%c", optopt);
		case ':':
			progname = cmd;
			error(EXIT_FAILURE, 0, "option requires argument: -%c", optopt);
		default:
			pusharg(optctos(opt));
			if (strchr(opts, opt)[1] == ':')
				pusharg(optarg);
		}
	}
	pusharg("--");
	while (optind < argc)
		pusharg(argv[optind++]);
	pusharg(NULL);

	setenv("cmd", cmd, 1);
	setenv("fn_err", "{echo >[1=2] $cmd^: $*; exit 1}", 1);
	setenv("fn_usage", "{echo usage: $cmd $usage}", 1);

	execvp(arg.v[0], arg.v);
	error(EXIT_FAILURE, errno, "exec: %s", arg.v[0]);

	return 0;
}