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