[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[no subject]



On Tue, Mar 23, 1999 at 01:49:35PM +0100, Frank Rosendahl wrote:
> Hey Leute,
> 
> ich spiele hier gerade ein wenig mit der crypt-Funktion von Perl rum,
> wobei mir einige Fragen kommen.
> 
> Ich w<FC>rde gerne ein Passwort schreiben, das genau so aussieht wie in
> der /etc/passwd, bzw. /etc/shadow, doch irgendwie will mir das nicht
> gelingen.


Ein Auszug aus meinem Script: (Wo ich dass Original herhab weiss ich leider
nicht mehr.

  cp /etc/passwd /etc/passwd.bak/passwd_$date
  mv /usr/people/$name/netscape/user /usr/people/$name/netscape/$name;

&set_auto_pass;


sub set_auto_pass{
  #  rename("/etc/passwd","/etc/passwd.bak/passwd.$date");
        
  #     $ascii_passwd = &pw_generate;                   # What the user must
typ
e
  $epasswd = &pw_encrypt($ascii_passwd);                # What goes in
/etc/pass
wd
        
  open (SHIN, "<   /etc/passwd.bak/passwd_$date" )|| die;
  open (SHOUT, ">  /etc/passwd" )                 || die;

  while (<SHIN>){
  m/^([^:]*):[^:]*(:.*)$/;
    #       if (/^($name|$host)/){
    if ($name eq $1){
      s/^([^:]+:)[^:]*(:.*)$/$1$epasswd$2/;
      print;
    }
    #       else {
    #           print "!!!!! Passwort not changed";
    #       }
    print SHOUT;
  }
  
  close SHIN;
  close SHOUT;
  #    chmod(0400,'/etc/passwd','/etc/passwd.bak/passwd.$date');
}


#-----------------------------------------------------------------------------
# Returns its argument encrypted with a random salt.
#-----------------------------------------------------------------------------
sub pw_encrypt {
        local($passwd) = @_;
        local($ascii_salt, $randum_num, @passset, $epasswd);

        @passset = ('a'..'k', 'm'..'z', 'A'..'N', 'P'..'Z', '2'..'9');
        $ascii_salt = "";
        for ($i = 0; $i < int(rand(100));$i++){
            rand(100);
        }
        for ($i = 0; $i < 2; $i++) {
                $randum_num = int(rand($#passset + 1));
                $ascii_salt .= $passset[$randum_num];
        }
        #print  $salt = $ascii_salt,"\n";
        $epasswd = crypt($passwd, $ascii_salt);
        
        return $epasswd
}



> 
> Ich hab schon als Vergleich die man-Page zu crypt(3) aufgerufen, doch
> auch hier komm ich nicht weiter.
> 
> Der Aufruf ist crypt TEXT, SALT - Dabei ist mir TEXT noch klar. Doch
> wie komme ich an SALT ran ???

Salt ist eine zweistellige Zufallszahl. (Salz in der Suppe)

> 
> Wenn ich ein Passwort wie in der /etc/shadow kriegen will, dann mu<DF>
> SALT den beiden ersten Buchstaben des dort vorhandenen Passworts
> entsprechen. Aber das ist doch auch gecrypted ! Wie komm ich an diese
> zwei Buchstaben, wenn Sie noch nicht exsistieren ???

Der Eintrag ist in passwd und shadow meines Wissens der gleiche.



-- 
__________________________________________________________________
Lutz Mueller                               University of Wuppertal
(mueller@code.uni-wuppertal.de)            Computational Design
http://www.code.uni-wuppertal.de           Hofaue 35-39
http://wkw.kunst.uni-wuppertal.de/~mueller 42103 Wuppertal, Germany
___________________________________________________________________
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     661


Reply to: