# [usermod] dubbio [risolto]

## cloc3

 *man usermod wrote:*   

> 
> 
>        -p, --password PASSWORD
> 
> The encrypted password, as returned by crypt(3).
> ...

 

```

s939-32 prova # useradd pippo

s939-32 prova # usermod pippo -p pippo

s939-32 prova # grep -i pippo /etc/shadow

pippo:pippo:13778:0:99999:7:::

```

 :Question: 

ah, naturalmente:

```

s939-32 prova # passwd pippo

New UNIX password: 

BAD PASSWORD: E' troppo breve

Retype new UNIX password: 

passwd: password updated successfully

s939-32 prova # grep -i pippo /etc/shadow

pippo:$1$eb4NG58n$tv6aHVmBWKskZBYBokOpi/:13778:0:99999:7:::

```

p.s.: chpasswd è una soluzione alternativa. ma mi resta il dubbio sul manuale.

----------

## grentis

 *cloc3 wrote:*   

>  *man usermod wrote:*   
> 
>        -p, --password PASSWORD
> 
> The encrypted password, as returned by crypt(3).
> ...

 

Questa frase a me fa pensare che voglia in ingresso la password già criptata

----------

## cloc3

 *grentis wrote:*   

> 
> 
> Questa frase a me fa pensare che voglia in ingresso la password già criptata

 

evidentemente hai ragione tu.

ma a me fa pensare esattamente il contrario.

in più, sebbene chpasswd aggiri il problema, non conosco uno strumento che calcoli la password criptata e la rediriga sullo standard output.

----------

## gutter

Questo sembra essere interessante  :Smile: .

----------

## cloc3

 *gutter wrote:*   

> Questo sembra essere interessante .

 

bè, insomma.

non siamo ancora a livelli di astrazione computazionale profonda.

tra l'altro, mi aspettavo che il primo moderatore di passaggio mi sbattesse violentemente nella seziona di là. con ignominia.

comunque. grazie per l'apprezzamento.

 :Smile: 

----------

## HoX

 *cloc3 wrote:*   

> in più, sebbene chpasswd aggiri il problema, non conosco uno strumento che calcoli la password criptata e la rediriga sullo standard output.

 

scusa, ma non ho capito... cioe'... non esiste un programma che dalla password criptata ti tiri fuori quella normale o viceversa?

----------

## cloc3

 *Anema wrote:*   

> non esiste

 

non conosco ...

vorrei qualcosa che mi permetta di scrivere:

```

usermod --password `criptami pippo` pluto

```

----------

## HoX

 *cloc3 wrote:*   

>  *man usermod wrote:*   
> 
>        -p, --password PASSWORD
> 
> The encrypted password, as returned by crypt(3).
> ...

 

dovresti scriverti un semplice programmino in C che sfrutti la funzione crypt per ottenere quello che vuoi tu...

vedi man crypt per capire come...

----------

## gutter

 *cloc3 wrote:*   

> 
> 
> tra l'altro, mi aspettavo che il primo moderatore di passaggio mi sbattesse violentemente nella seziona di là. con ignominia.
> 
> comunque. grazie per l'apprezzamento.
> ...

 

 :Twisted Evil:   :Twisted Evil:   :Twisted Evil: 

Fatto  :Wink: 

Moved from Forum italiano (Italian) to Forum di discussione italiano.

----------

## cloc3

 *Anema wrote:*   

> 
> 
> dovresti scriverti un semplice programmino in C che sfrutti la funzione crypt per ottenere quello che vuoi tu...
> 
> vedi man crypt per capire come...

 

sarebbe una scusa per ficcare il naso nel codice C.

però mi pare proprio strano di essere il primo a sentire l'esigenza di un programmino così.

----------

## gutter

Provato con questo:

```
*  app-crypt/quickcrypt

      Latest version available: 0.9.2b

      Latest version installed: [ Not Installed ]

      Size of downloaded files: [no/bad digest]

      Homepage:    http://linux.netpimpz.com/quickcrypt/

      Description: gives you a quick MD5 Password from any string

      License:     GPL-2

```

 :Question:   :Question:   :Question: 

----------

## cloc3

 *gutter wrote:*   

> 
> 
> ```
> *  app-crypt/quickcrypt
> 
> ...

 

```

usermod -p $(quickcrypt prova|cut -d\" -f4) cloc3

```

va.

il cut è necessario, anche se è un po' goffo.

sarà per quello che non è inserito negli strumenti standard di sistema.

in shadow, però, esiste newusers che prende l'output da un file esterno, eventualmente creato on the fly e passato in pipe, che probabilmente è lo strumento standard pensato per queste operazioni.

----------

## gutter

 *cloc3 wrote:*   

> va.
> 
> 

 

Bene   :Very Happy: 

Cosa ti ritorna senza cut, lo potresti postare?

----------

## cloc3

 *gutter wrote:*   

> 
> 
> Cosa ti ritorna senza cut, lo potresti postare?

 

```

linux99 ~ # quickcrypt prova

"prova" Encrypts to : "$1$/G$o/paJFawp4hYNNvK7eSFm/".

```

persino i return sono da taglia e incolla.

----------

## Kernel78

Se vuoi evitare quel cut potresti crearti un overlay locale con una piccola patch, in fondo basta modificare la riga

```
print "\n".'"'.$string.'"'.' Encrypts to : "'.$crypted.'".'."\n\n";
```

con

```
print $crypted;
```

Oppure ti copi la versione modificata di quickrypt da qualche parte e te la tieni così ...

```
use strict;

        my $string;

        if ($ARGV[0]) {

                $string = "@ARGV";

        }

        else {

                print "\n" . 'Enter the phrase you wish to encrypt : ';

                chomp($string = <STDIN>);

        }

        my $salt    = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];

        my $crypted = unix_md5_crypt($string,$salt);

                print $crypted;

exit;

sub to64 {

        use Digest::MD5;

        my $itoa64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";

    my ($v, $n) = @_;

    my $ret = '';

    while (--$n >= 0) {

    $ret .= substr($itoa64, $v & 0x3f, 1);

    $v >>= 6;

    }

    $ret;

}

sub unix_md5_crypt {

        use Digest::MD5;

        my $Magic = '$1$';         # Magic string

    my($pw, $salt) = @_;

    my $passwd;

    $salt =~ s/^\Q$Magic//;     # Take care of the magic string if

    $salt =~ s/^(.*)\$.*$/$1/;  # Salt can have up to 8 chars...

    $salt = substr($salt, 0, 8);

    my $ctx = new Digest::MD5;          # Here we start the calculation

    $ctx->add($pw);             # Original password...

    $ctx->add($Magic);          # ...our magic string...

    $ctx->add($salt);           # ...the salt...

    my ($final) = new Digest::MD5;

    $final->add($pw);

    $final->add($salt);

    $final->add($pw);

    $final = $final->digest;

    for (my $pl = length($pw); $pl > 0; $pl -= 16) {

        $ctx->add(substr($final, 0, $pl > 16 ? 16 : $pl));

    }

    for (my $i = length($pw); $i; $i >>= 1) {

        if ($i & 1) { $ctx->add(pack("C", 0)); }

        else { $ctx->add(substr($pw, 0, 1)); }

    }

    $final = $ctx->digest;

    for (my $i = 0; $i < 1000; $i++) {

        my $ctx1 = new Digest::MD5;

        if ($i & 1) { $ctx1->add($pw); }

        else { $ctx1->add(substr($final, 0, 16)); }

        if ($i % 3) { $ctx1->add($salt); }

        if ($i % 7) { $ctx1->add($pw); }

        if ($i & 1) { $ctx1->add(substr($final, 0, 16)); }

        else { $ctx1->add($pw); }

        $final = $ctx1->digest;

    }

    $passwd = '';

    $passwd .= to64(int(unpack("C", (substr($final, 0, 1))) << 16)

                    | int(unpack("C", (substr($final, 6, 1))) << 8)

                    | int(unpack("C", (substr($final, 12, 1)))), 4);

    $passwd .= to64(int(unpack("C", (substr($final, 1, 1))) << 16)

                    | int(unpack("C", (substr($final, 7, 1))) << 8)

                    | int(unpack("C", (substr($final, 13, 1)))), 4);

    $passwd .= to64(int(unpack("C", (substr($final, 2, 1))) << 16)

                    | int(unpack("C", (substr($final, 8, 1))) << 8)

                    | int(unpack("C", (substr($final, 14, 1)))), 4);

    $passwd .= to64(int(unpack("C", (substr($final, 3, 1))) << 16)

                    | int(unpack("C", (substr($final, 9, 1))) << 8)

                    | int(unpack("C", (substr($final, 15, 1)))), 4);

    $passwd .= to64(int(unpack("C", (substr($final, 4, 1))) << 16)

                    | int(unpack("C", (substr($final, 10, 1))) << 8)

                    | int(unpack("C", (substr($final, 5, 1)))), 4);

    $passwd .= to64(int(unpack("C", substr($final, 11, 1))), 2);

    $final = '';

    $Magic . $salt . '$' . $passwd;

}

```

/EDIT: non sono riuscito a trovare nessun accenno alla licenza dello script originale quindi ho qualche dubbio su come comportarmi ... Ovviamente la paternità rimane all'autore originale ma non so se posso dire che sia GPL ...

----------

## randomaze

 *Kernel78 wrote:*   

> /EDIT: non sono riuscito a trovare nessun accenno alla licenza dello script originale quindi ho qualche dubbio su come comportarmi ... Ovviamente la paternità rimane all'autore originale ma non so se posso dire che sia GPL ...

 

Mi sembra che la licenza venga fuori nel riepilogo fornito da:

```
emerge -s quickcrypt 
```

...purtroppo non posso controllare perché non ho il mio PC sottomano.

----------

## Kernel78

@randomaze

Secondo emerge quickcrypt è distribuito sotto gpl-2 ma questa informazione non ha riscontro sul sito ne in nessuno dei files installati (e se fosse davvero sotto GPL tra questi dovrebbe esserci il file della gpl stessa). Da qui la mia dubbiosità ...

----------

## makoomba

tiè

```
--- pass.sh --- 

#!/bin/sh

SALT=$(tr -cd 0-9A-Za-z < /dev/urandom | dd count=1 bs=8 2>/dev/null)

openssl passwd -1 -salt $SALT $1
```

----------

