|
|
1.1 root 1: #include "authmgr.h"
2:
3: static unsigned response = 0;
4:
5: char*
6: atallachal(kp)
7: struct keyinfo *kp;
8: {
9: static char buf[12];
10: static int inited = 0;
11: int i, j;
12: char b[64], k[12];
13:
14: if(!inited)
15: srand((int)time((long*)0));
16: /* make a random data */
17: for(i=0; i<8; buf[i++] = 0)
18: ;
19: sprintf(buf, "%d", nrand(100000000-1000)+1000);
20:
21: /* make and save the response */
22: sscanf(kp->key, "%o %o %o %o %o %o %o %o",
23: &k[0], &k[1], &k[2], &k[3], &k[4], &k[5], &k[6], &k[7]);
24: for(i=0; i<8; i++)
25: for(j=0; j<8; j++)
26: b[8*i+j] = (k[i]>>(7-j))&1;
27: setkey(b);
28:
29: for(i=0; i<8; i++)
30: for(j=0; j<8; j++)
31: b[8*i+j] = (buf[i]>>(7-j))&1;
32: encrypt(b, 0);
33: for(i=0; i<32; i++) {
34: response = (response<<1) | b[i];
35: }
36:
37: return buf;
38: }
39:
40: int
41: atallacomp(kp, s)
42: struct keyinfo *kp;
43: char *s;
44: {
45: unsigned r = 0;
46:
47: sscanf(s, "%x", &r);
48: if(strlen(kp->key) > 16 && r == response)
49: return 0;
50: return 1;
51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.