mirror of
https://github.com/sheumann/hush.git
synced 2025-02-28 20:31:33 +00:00
cryptpw: forgot svn add... how typical of me :(
This commit is contained in:
parent
a04561f5f7
commit
a035e9f1a9
@ -21,7 +21,6 @@ lib-y += copyfd.o
|
|||||||
lib-y += crc32.o
|
lib-y += crc32.o
|
||||||
lib-y += create_icmp6_socket.o
|
lib-y += create_icmp6_socket.o
|
||||||
lib-y += create_icmp_socket.o
|
lib-y += create_icmp_socket.o
|
||||||
lib-y += crypt_make_salt.o
|
|
||||||
lib-y += default_error_retval.o
|
lib-y += default_error_retval.o
|
||||||
lib-y += device_open.o
|
lib-y += device_open.o
|
||||||
lib-y += dump.o
|
lib-y += dump.o
|
||||||
@ -103,10 +102,8 @@ lib-y += xreadlink.o
|
|||||||
lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o
|
lib-$(CONFIG_FEATURE_MOUNT_LOOP) += loop.o
|
||||||
lib-$(CONFIG_LOSETUP) += loop.o
|
lib-$(CONFIG_LOSETUP) += loop.o
|
||||||
lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
|
lib-$(CONFIG_FEATURE_MTAB_SUPPORT) += mtab.o
|
||||||
lib-$(CONFIG_PASSWD) += pw_encrypt.o
|
lib-$(CONFIG_PASSWD) += pw_encrypt.o crypt_make_salt.o
|
||||||
lib-$(CONFIG_PASSWD) += crypt_make_salt.o
|
lib-$(CONFIG_CRYPTPW) += pw_encrypt.o crypt_make_salt.o
|
||||||
lib-$(CONFIG_CRYPTPW) += pw_encrypt.o
|
|
||||||
lib-$(CONFIG_CRYPTPW) += crypt_make_salt.o
|
|
||||||
lib-$(CONFIG_SULOGIN) += pw_encrypt.o
|
lib-$(CONFIG_SULOGIN) += pw_encrypt.o
|
||||||
lib-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) += pw_encrypt.o
|
lib-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) += pw_encrypt.o
|
||||||
lib-$(CONFIG_VLOCK) += correct_password.o
|
lib-$(CONFIG_VLOCK) += correct_password.o
|
||||||
|
48
libbb/crypt_make_salt.c
Normal file
48
libbb/crypt_make_salt.c
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/* vi: set sw=4 ts=4: */
|
||||||
|
/*
|
||||||
|
* crypt_make_salt
|
||||||
|
*
|
||||||
|
* i64c was also put here, this is the only function that uses it.
|
||||||
|
*
|
||||||
|
* Lifted from loginutils/passwd.c by Thomas Lundquist <thomasez@zelow.no>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libbb.h"
|
||||||
|
|
||||||
|
static int i64c(int i)
|
||||||
|
{
|
||||||
|
i &= 0x3f;
|
||||||
|
if (i == 0)
|
||||||
|
return '.';
|
||||||
|
if (i == 1)
|
||||||
|
return '/';
|
||||||
|
if (i < 12)
|
||||||
|
return ('0' - 2 + i);
|
||||||
|
if (i < 38)
|
||||||
|
return ('A' - 12 + i);
|
||||||
|
return ('a' - 38 + i);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void crypt_make_salt(char *p, int cnt)
|
||||||
|
{
|
||||||
|
unsigned x = x; /* it's pointless to initialize it anyway :) */
|
||||||
|
|
||||||
|
x += getpid() + time(NULL) + clock();
|
||||||
|
do {
|
||||||
|
/* x = (x*1664525 + 1013904223) % 2^32 generator is lame
|
||||||
|
* (low-order bit is not "random", etc...),
|
||||||
|
* but for our purposes it is good enough */
|
||||||
|
x = x*1664525 + 1013904223;
|
||||||
|
/* BTW, Park and Miller's "minimal standard generator" is
|
||||||
|
* x = x*16807 % ((2^31)-1)
|
||||||
|
* It has no problem with visibly alternating lowest bit
|
||||||
|
* but is also weak in cryptographic sense + needs div,
|
||||||
|
* which needs more code (and slower) on many CPUs */
|
||||||
|
*p++ = i64c(x >> 16);
|
||||||
|
*p++ = i64c(x >> 22);
|
||||||
|
} while (--cnt);
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
|
37
loginutils/cryptpw.c
Normal file
37
loginutils/cryptpw.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/* vi: set sw=4 ts=4: */
|
||||||
|
/*
|
||||||
|
* cryptpw.c
|
||||||
|
*
|
||||||
|
* Cooked from passwd.c by Thomas Lundquist <thomasez@zelow.no>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "busybox.h"
|
||||||
|
|
||||||
|
int cryptpw_main(int argc, char **argv);
|
||||||
|
int cryptpw_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char *clear;
|
||||||
|
char salt[sizeof("$N$XXXXXXXX")]; /* "$N$XXXXXXXX" or "XX" */
|
||||||
|
const char *opt_a = "md5";
|
||||||
|
|
||||||
|
getopt32(argc, argv, "a:", &opt_a);
|
||||||
|
/* move past the commandline options */
|
||||||
|
/*argc -= optind; - unused */
|
||||||
|
argv += optind;
|
||||||
|
|
||||||
|
crypt_make_salt(salt, 1); /* des */
|
||||||
|
if (strcasecmp(opt_a, "md5") == 0) {
|
||||||
|
strcpy(salt, "$1$");
|
||||||
|
crypt_make_salt(salt + 3, 4);
|
||||||
|
} else if (strcasecmp(opt_a, "des") != 0) {
|
||||||
|
bb_show_usage();
|
||||||
|
}
|
||||||
|
|
||||||
|
clear = argv[0];
|
||||||
|
if (!clear)
|
||||||
|
clear = xmalloc_getline(stdin);
|
||||||
|
|
||||||
|
puts(pw_encrypt(clear, salt));
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user