/* I'd like to thank the morons at QNX for writing their own crypt function, and thus making this program possible. for everyone who's interested, the crypt source is located here: ftp://ftp.visi.com/users/hawkeyd/qnx/ take a look at the header of that source, also take a look at how they actually overflow the bits[] array on accident... I sure hope that's not qnx's actual source. -sean See LICENSE for licensing information...yes..its gpl */ #include #include // there was a bug in ascii2bin... // it's been fixed static ascii2bin(short x) { if (x>='0' && x<'A') return x-'0'; if (x>='A' && x<'a') return (x-'A')+9; return (x-'a')+26+9; } char bits[77]; /* the uncryptor */ char *quncrypt(char *pw) { static char newpw[14]; int i; int j,rot; int bit,ofs; char salt[2]; int temp; salt[0]=*pw++; salt[1]=*pw++; file://first 2 chars of pw is salt for (i=0;i<72;i++) bits[i]=0; for (i=0;i<12;i++) newpw[i]=ascii2bin(pw[i]); file://convert back to bin newpw[13]=0; rot=(salt[1]*4-salt[0])%128; // here's all the salt does. Set up // a rotation // now we take the password bits, and put them into a 2 dimensional grid, // which then gets bitshifted around.. through salt for (i=0;i<12;i++) { for (j=0;j<6;j++) { bit=newpw[i]&(1<