version 1.3, 2003/01/04 22:36:13 |
version 1.4, 2003/06/10 17:06:52 |
|
|
#define HEXDIGITS "0123456789abcdef" |
#define HEXDIGITS "0123456789abcdef" |
#define DECDIGITS "0123456789012345" |
#define DECDIGITS "0123456789012345" |
|
|
void predict(des_key_schedule, char *, int); |
void predict(des_key_schedule, const char *, int); |
|
|
char *digits = HEXDIGITS; |
char *digits = HEXDIGITS; |
extern char *__progname; |
extern char *__progname; |
|
|
char *b = buf; |
char *b = buf; |
/* Assume octal input */ |
/* Assume octal input */ |
for (i = 0; i < 8; ++i) { |
for (i = 0; i < 8; ++i) { |
if (!*b) { |
if (!*b) |
fprintf(stderr, "%s: invalid key\n", buf); |
fprintf(stderr, "%s: invalid key\n", buf); |
} |
|
while (isdigit(*b)) |
while (isdigit(*b)) |
key[i] = key[i] << 3 | *b++ - '0'; |
key[i] = key[i] << 3 | (*b++ - '0'); |
while (*b && !isdigit(*b)) |
while (*b && !isdigit(*b)) |
++b; |
++b; |
} |
} |
|
|
} |
} |
|
|
void |
void |
predict(des_key_schedule ks, char *chal, int cnt) |
predict(des_key_schedule ks, const char *chal, int cnt) |
{ |
{ |
int i; |
int i; |
des_cblock cb; |
des_cblock cb; |
|
|
|
memcpy(&cb, chal, sizeof(cb)); |
while (cnt-- > 0) { |
while (cnt-- > 0) { |
printf("%.8s: ", chal); |
printf("%.8s: ", (char *)cb); |
des_ecb_encrypt((des_cblock *)chal, &cb, ks, DES_ENCRYPT); |
des_ecb_encrypt(&cb, &cb, ks, DES_ENCRYPT); |
for (i = 0; i < 4; ++i) { |
for (i = 0; i < 4; ++i) { |
printf("%c", digits[(cb[i]>>4) & 0xf]); |
printf("%c", digits[(cb[i]>>4) & 0xf]); |
printf("%c", digits[(cb[i]>>0) & 0xf]); |
printf("%c", digits[(cb[i]>>0) & 0xf]); |