[svlug] Shadow password fuzziness

Robert Hajime Lanning lanning at lanning.cc
Thu Jul 26 09:31:01 PDT 2001

The $1$ means it is MD5 hash of the password.

This is out of the blue, but try {md5}$1$...

It looks like {crypt}... would probably be the unix crypt() string.
Which is 13 characters.

---- As written by Todd Lyons:
> I sent this to a local list here in LA, so if this is a dupe, I
> apologize.
> <breathe>
> Some of you may have heard me talking/asking about this, sorry to bug
> you.  But I will restate the entire case, what I've done, and where I'm at.
> I'm tasked with converting a system running Sendmail/UWImap that's
> authenticating against NIS to a system running qmail/CourierImap that's
> authenticating against LDAP in a 100% pure virtual environment.  Walk in
> the park, right?  Let's go over what I've done so far.
> 1) The current NIS replication system is a hack.  The passwd, shadow,
> group, and gshadow files are scp'd from the main machine that the
> sysadmins do user administration.  It will continue this way for the
> forseeable future.  As a result, the method of replication to the
> LDAP machine will continue to be scp the files and custom scripts to
> detect new users, extract their account info, add them in to the 
> directory, and initialize their email usage.
> 2) Grab qmail 1.03, applied the qmail-ldap patch, compiled, installed,
> and configured.
> 3) Grab courier-imap, compiled, installed, and configured.
> 4) Install OpenLDAP 2.x.  Configured.
> 5) Temporarily rsync existing users' mbox style email to qmail machine
> once a day (for testing purposes).  (It's all behind a NAT firewall, so 
> I've not dabbled with ssl yet.)
> 6) Write a script to import all info from passwd and shadow, make
> virtual maildirectories, convert from mbox to maildir style, and import
> all user info into the directory.
> Well the problem is one small portion of the "and import all user info".
> The problem is the damn password.
> On a system where the users are being added as new, I've got cgi that
> passes the appropriate info to ldapadd and ldappasswd to populate the
> directory and set the password.  That's not what I have here though.  
> I don't have the plain text passwords, and have no way to get them.  The
> only thing that I have is the shadow password file.
> I was advised that I could simply grab the shadow encrypted password and
> slap {crypt} on the front of it and it would work, like this:
> userPassword: {crypt}$1$vrlHRV3Q$GtXdvNvSSJs2ta2yw3CaP/
> It imports just fine, but when attempting to authenticate, it fails.  If
> I manually set the password with ldappasswd, then it authenticates
> properly.  Additional comment: I'm using ldap's own tools for testing
> authentication, not the qmail or courier system for testing
> authentication.
> Doing a little bit of experimenting with base64 decoding, I've found
> that ldappasswd is entering a value of {SSHA}<crypted_passwd>.  So I
> started using that (since it seemed a good baseline).  I then noticed 
> that the physical length of the values stored in the directory
> created from my {SSHA}<crypted_passwd> entries were a different
> length than the one created by the ldappasswd utility.  In the same
> breath, I also noticed that when I base64 decoded the patterns, none of
> them started with the $1$ that shadow password entries started with, so
> I stripped that off.  I finally started logging things:
> Doesn't work (created from my perl script):
> userPassword:: e1NTSEF9JDEkamlENk1CVm8kWFJ0QzlUdUJvMTVENUNtSzZCUlloLw==
> userPassword:: e1NTSEF9amlENk1CVm8kWFJ0QzlUdUJvMTVENUNtSzZCUlloLw==
> Works (created by ldappasswd):
> userPassword:: e1NTSEF9RVpFaDNMUkc3VWx1Qkx0YWhhV0RJbVR1bmJ2UDNnOXo=
> userPassword:: e1NTSEF9ODBWREdPdDk0RE5RQ2ZtTFdCTG9ML3hBNGRPVmJjLys=
> Each of these are the same password. (The double colon just means that
> it's base64 encoded).  The first entry is with a $1$ and the second is
> without.  Also note the difference in length (two == signs compared to
> one).
> My needs are simple:
> 1) Ideally, "Todd, you're an idiot, you just have to do <insert series
> of steps>".
> 2) Realistically, I'm looking for URL's to tutorials, rfc's, any kind of
> guidance and tools that will help me to understand how shadow passwords
> are constructed and what I'm doing wrong.
> 3) Break it to me gently if it's not possible to do it only with shadow
> passwords (not having plaintext passwords).  Be very gentle.  I've been
> working on it for 2+ weeks now.
> 4) If you have or know of some "magic" scripts that do this, I would be
> most appreciative.  Everything I've found just sticks {crypt} in front
> of the password and was written in 1997 and for whatever reason, it
> doesn't work now. (I'm looking for that reason!)
> Any and all help is appreciated.
> -- 
> Blue skies...		Todd
> | Get a bigger hammer!   |  Are you feeling lucky...punk?         |
> | http://www.mrball.net  |  I've had better days...               |
> | http://faq.mrball.net  |  It's the end of the world as we know i|
> _______________________________________________
> svlug mailing list
> svlug at lists.svlug.org
> http://lists.svlug.org/lists/listinfo/svlug

/* Robert Hajime Lanning                             lanning at lanning.cc
** Trade: Unix Systems Administrator (Senior level) (SAGE IV)
#include <std_disclaimer.h>

More information about the svlug mailing list