crypt and passwords
John McKendry
jmckendry at comcast.net
Fri Aug 22 18:27:03 EDT 2003
David Kramer wrote:
>
> On Friday 22 August 2003 09:33 am, Derek Martin wrote:
> > On Fri, Aug 22, 2003 at 02:12:27AM -0400, David Kramer wrote:
> > > I once knew the magic incantations for being able to verify a passwd by
> > > passing the salt from the encrypted password and the unencrypted password
> to
> > > crypt() to see if you got a string matching the encrypted password. I'm
> > > trying to write a small test program to do this, but I am not getting the
> > > encrypted string back.
> >
> > Can we see the code where you set up the salt and call the function?
>
> I pass them on the command line so I can play with it until I see it work.
>
> #define _XOPEN_SOURCE
> #include <unistd.h>
>
> int main(int argc, char* argv[])
> {
> char* encrypted;
>
> encrypted=crypt(argv[1],argv[2]);
>
> if(encrypted)
> {
> printf("crypt(%s,%s)='%s'\n",argv[1],argv[2],encrypted);
> }
> else
> {
> printf("crypt failed.\n");
> }
>
> }
>
> cc -o cryptprint -lcrypt cryptprint.c
>
> Note: This is a MODIFIED version of my encrypted password, but I used the real
> thing:
>
> [david at uni crypt]$ sudo grep david /etc/shadow
> david:$1$FOOWOmC8$FOOldOczYfmtvz5PsXyY5/:12023:0:99999:7:::
>
> [david at uni crypt]$ ./cryptprint '$1$FOOWOmC8$' 'FOOldOczYfmtvz5PsXyY5/'
> crypt($1$FOOWOmC8$,FOOldOczYfmtvz5PsXyY5/)='bmSTpBK8h2lrE'
>
> [david at uni crypt]$ ./cryptprint '$1$FOOWOmC8$' 'myrealpassword'
> crypt($1$xTxWOmC8$,myrealpassword)='FOO/XEaUQQYMU'
>
> What comes out doesn't seem to match anything.
>
>
Nothing wrong with your program. The args to crypt() are
(const char* key, const char* salt). key first, then salt. Try
./cryptprint 'myrealpassword' '$1$FOOWOmC8$' and see if that
doesn't give you the right answer.
John
More information about the Discuss
mailing list