#include <stdio.h>
#include <sys/types.h>
#include <sys/types.h>
#include <unistd.h>
main (int argc, char *argv[]) {
char *encrypted, cleartxt[256], salt[5];
char *usage = "Usage: %s [-s] cleartext password\n -s <salt> (default 'pf;tn;')\n";
char *name = argv[0], c;
int errors;
/* default salt */
strcpy (salt, "pf;tn;");
cleartxt[0] = '\0';
errors = 0;
while ((c = getopt (argc, argv, "s:")) != -1)
switch (c) {
case 's':
strcpy (salt, optarg);
if (strlen (salt) < 4) {
fprintf (stderr,
"salt \"%s\" is too short, must be at least 4 characters\n", salt);
exit (1);
}
break;
default:
errors++;
break;
}
if (!errors)
for (; optind < argc; optind++) {
if (cleartxt[0] == '\0')
strcpy (cleartxt, argv[optind]);
else {
errors++;
break;
}
}
if (cleartxt[0] == '\0') {
fprintf (stderr, "No clear text password specified!\n");
errors++;
}
if (errors) {
fprintf (stderr, usage, name);
exit (1);
}
encrypted = crypt (cleartxt, salt);
if (encrypted == NULL) {
printf ("Bad password, try again...\n");
exit (0);
}
else
printf ("encrypted passwd is \"%s\"\n", encrypted);
/* check
printf ("Match? : (%d)\n", !strcmp (crypt (cleartxt, encrypted), encrypted));
*/
}
syntax highlighted by Code2HTML, v. 0.9.1