Tugger the SLUGger!SLUG Mailing List Archives

Re: [SLUG] Looking for c source code which can generate passwords for cvs


Antony Stace was once rumoured to have said:
> Hi Folks
> 
> Does anyone know where I can find some c source code which
> can generate the passwords used by cvs.

Since it uses the Unix crypt() call, Its a trivial C program.

---BEGIN SOURCE---
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

inline char
itos(int n)
{
	if (n < 0) {
		return -1;
	} else if (n < 26) {
		return 'a' + n;
	} else if (n < 52) {
		return 'A' + n - 26;
	} else if (n < 62) {
		return '0' + n - 52;
	} else if (n == 62) {
		return '.';
	} else if (n == 63) {
		return '/';
	} else {
		return -1;
	}
}

int
main (int argc, char **argv)
{
	char	salt[3]={0,0,0};
	char*	crypttext;
	int	ctr;

	srandom(time(NULL));

	for (ctr = 1; ctr < argc; ctr++) {
		salt[0]=itos(random()%64);
		salt[1]=itos(random()%64);
		printf ("%s\n", crypt(argv[ctr], salt));
	}

	return 0;
}
---END SOURCE---

Save as cryptit.c, compile using: gcc -o cryptit{,.c} -lcrypt

use ala:  ./cryptit plaintextpassword plaintextpassword.

It'll print the crypttext for each password on its own line.

Of course, this is much smaller if you write it in perl.

C.
-- 
--==============================================--
  Crossfire      | This email was brought to you
  xfire@xxxxxxxx | on 100% Recycled Electrons
--==============================================--