What does '*' symbol in /etc/passwd means?

-=Runaway Daemon=- frechett at spot.Colorado.EDU
Fri Jun 14 15:19:58 AEST 1991


In article <1991Jun14.002427.6120 at csc.canberra.edu.au> rvp at softserver.canberra.edu.au (Rey Paulo) writes:

I just recently spent a significant amount of time figure out why crypt 
does what it does and I believe I can add a bit here.
>
>The reason why '*' is used to lock login is because '*' is not in the 
>encrypted alphabet of the crypt algorithm.  Hence, it is impossible for
>the encryption program to generate a string with a '*'.

There is a bit more to it than just the fact that * is not in the encryption 
charcter set (which is true).  Valid characters are [a-zA-Z/.].  But if 
I were to use any string in /etc/passwd with a lenght != 13 bytes it 
will be invalid.  The nuts at work commonly use 
name:PASSWD GOES HERE:etc:etc:etc.... .  This string cannot possibly be 
generated by crypt(3) and this is why.  In the internals of crypt(3) it takes
as input a 10 byte word and 2 bytes of salt.  The salt is generally chosen 
randomly and it consists of two of the characters from the valid charcters 
mentioned above.  The salt choses 1 of 4096 different slight modifications in 
the standard DES encryption scheme.  The word and salt are fed in and crypt(3)
outputs the salt as the first two characters of the encrtyped passwd and then 
11 more bytes of truely encrypted data.  For fun.. look at the string in 
/etc/passwd that is your encrypted passwd, change it.. then change it back. 
Look again at the string; it will be different due to a new randomly chosen
salt.  

Also, crypt(3) is not decryptable in that once you have an encrypted word 
there is no way to return the original string.  The only way to  decrypt
is actually to encrypt a guess and compare with what you already have. 
An example:
(>=+=>crypt.pl
Enter <key> <salt>  =>blueish aB
Crypt is: aB6YSC2UZBGII                       Note aB is in encrytion 
Enter <key> <salt>  =>blueish Z.
Crypt is: Z.0iioX3H3zoo
Enter <key> <salt>  =>blueish Z.0iioX3H3zoo   and this is why.. This is how 
			      ^^^^^^^^^^^^^   login checks your passwd.
	You would take this from /etc/passwd
Crypt is: Z.0iioX3H3zoo                       

Two more notes.. 
1. I say crypt(3) because crypt(1) is totally different.
2. crypt(3) is purposely designed to take a HUGE portion of CPU when encrypting
   which makes passwd cracking very slow and fairly visible.  If I just run one
   guess through every line of the /etc/passwd file on my DEC5500 (about 28 
   Mips) it hangs about every 5 seconds for up to 20 seconds.. The machine
   just can't afford to keep the process in memory all the time.


>
>-- 
>Rey V. Paulo                  | Internet:  rvp at csc.canberra.edu.au 
>University of Canberra        | I am not bound to please thee with my answer. 
>AUSTRALIA                     |         -Shylock, in "The Merchant of Venice" 
>------------------------------+----------------------------------------------


	ian

-=Runaway Daemon=-        (UNIXOPS University of Colorado at Boulder)



More information about the Comp.unix.questions mailing list