programmation_perl
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
programmation_perl [2010/01/13 16:42] – thierry | programmation_perl [2011/10/11 21:19] (Version actuelle) – thierry | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Crypt ====== | ||
+ | |||
+ | Liens: | ||
+ | *http:// | ||
+ | *http:// | ||
+ | *http:// | ||
+ | |||
+ | But: comparer et construire des clés " | ||
+ | |||
+ | Voila: | ||
+ | # | ||
+ | | ||
+ | use strict; | ||
+ | use warnings; | ||
+ | | ||
+ | { | ||
+ | # From package: libauthen-simple-passwd-perl | ||
+ | # | ||
+ | use Authen:: | ||
+ | | ||
+ | # Où: | ||
+ | # password = mot de passe saisie (en clair) | ||
+ | # encrypted = le hash recupéré dans une base (ou fichier shadow ...) | ||
+ | # Exemple: | ||
+ | # encrypted format: | ||
+ | # $< | ||
+ | # $1$12345678$1234567890123456789012 | ||
+ | # ou $6$12345678$xxxxxxxxxxxxxxx... | ||
+ | sub check_password | ||
+ | { | ||
+ | my ( $password , $encrypted ) = @_; | ||
+ | return Authen:: | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | # Créer de la poussiere | ||
+ | # 8 caracteres aléatoires | ||
+ | | ||
+ | sub crypt_salt | ||
+ | { | ||
+ | my $salt = `( date +%s%N ; ps aux ) | md5sum | openssl base64`; | ||
+ | return substr( $salt, 0, 8 ); | ||
+ | } | ||
+ | | ||
+ | { | ||
+ | # From package: libcrypt-unixcrypt-perl | ||
+ | # | ||
+ | use Crypt:: | ||
+ | | ||
+ | sub crypt_password | ||
+ | { | ||
+ | my ( $p , $s ) = @_; | ||
+ | if ( !defined( $s ) ) { | ||
+ | # Créer la poussiere | ||
+ | $s = ' | ||
+ | } | ||
+ | return crypt($p, | ||
+ | } | ||
+ | } | ||
+ | | ||
+ | # -------------------------------------- | ||
+ | # Chiffrement crypt : $1$salt45678 | ||
+ | # Chiffrement sha512 : $6$salt45678 | ||
+ | # | ||
+ | # le " | ||
+ | # -------------------------------------- | ||
+ | | ||
+ | { | ||
+ | # ----------------------------- | ||
+ | # Coder un mot de passe | ||
+ | # ----------------------------- | ||
+ | | ||
+ | my $c_password = ' | ||
+ | my $e_password = crypt_password( $c_password ); | ||
+ | | ||
+ | print "Mot de passe en clair: $c_password\n"; | ||
+ | print " | ||
+ | | ||
+ | # ---------------------------- | ||
+ | # Vérifier mot de passe | ||
+ | # ---------------------------- | ||
+ | | ||
+ | print " | ||
+ | | ||
+ | # ---------------------------- | ||
+ | } | ||
+ | |||
+ | Test: | ||
+ | ./ | ||
+ | Mot de passe en clair: M0t2P4ss3 | ||
+ | Devient chiffré en sha512: $6$OGViYWMx$M8GagcogWG18BoF7qVpgczE9ArxrFQk5YcAnqbiBAuWni37MVYG.GDT57Isy.3Z3qTVFCMn2UbB8nFLKrQA/ | ||
+ | Vérification du mot de passe : OK | ||
+ | |||
+ | ====== Random Quantum ====== | ||
+ | |||
+ | ===== Install ===== | ||
+ | Une vraie source aléatoire en ligne: http:// | ||
+ | |||
+ | Créer un compte par là: http:// | ||
+ | |||
+ | |||
+ | Récupérer les sources perl d'un module par là: http:// | ||
+ | |||
+ | Pré-requis: | ||
+ | # aptitude install libmoose-perl | ||
+ | |||
+ | | ||
+ | $ perl Makefile.PL | ||
+ | $ make | ||
+ | $ make test | ||
+ | # make install | ||
+ | Installing / | ||
+ | Installing / | ||
+ | Writing / | ||
+ | Appending installation info to / | ||
+ | |||
+ | |||
+ | ===== Test ===== | ||
+ | |||
+ | Petit test: | ||
+ | |||
+ | # | ||
+ | | ||
+ | use strict; | ||
+ | use warnings; | ||
+ | | ||
+ | use Random:: | ||
+ | | ||
+ | { | ||
+ | if ( my $cl = new Random:: | ||
+ | print $cl-> | ||
+ | print $cl-> | ||
+ | print $cl-> | ||
+ | print sprintf(" | ||
+ | my $h = unpack( " | ||
+ | print "At last: $h\n"; | ||
+ | } | ||
+ | } | ||
+ | Exemple: | ||
+ | $ ./ | ||
+ | 196 | ||
+ | 222 | ||
+ | 3806413886 | ||
+ | 2591528E | ||
+ | At last: 508757233b068245788774a4c94cfcdc5b74 | ||
+ | |||
+ | Ca " | ||
+ | |||
+ | ===== pwgen ===== | ||
+ | |||
====== Ftp SSL ====== | ====== Ftp SSL ====== | ||
Installer d' | Installer d' | ||
- | # apt-get install libnet-ssleay-perl | + | |
Et puis enfin: | Et puis enfin: | ||
- | # cpan -i IO:: | + | |
- | # cpan -i Net::FTPSSL | + | # cpan -i Net::FTPSSL |
Parce que ' | Parce que ' | ||
Ligne 14: | Ligne 164: | ||
Des dates a comparer... mais **'' | Des dates a comparer... mais **'' | ||
- | Il faut utiliser le formidable module **'' | + | Il faut utiliser le formidable module **'' |
+ | |||
+ | Liens | ||
+ | *http:// | ||
+ | *http:// | ||
==== module ==== | ==== module ==== | ||
Ligne 44: | Ligne 198: | ||
Donc: | Donc: | ||
* **'' | * **'' | ||
+ | * **'' | ||
- | Pour avoir le nombre de jours de " | + | Pour avoir le nombre de jours de " |
| :!: mais il faut l' | | :!: mais il faut l' | ||
Ligne 52: | Ligne 207: | ||
Oui, on est la veille de Noël ! | Oui, on est la veille de Noël ! | ||
- | ==== Tout est objet... ==== | + | | :!: | '' |
- | On peut simplifier l' | + | ==== Nombre de secondes... ==== |
- | | + | |
- | my $dt_loin = DateTime-> | + | my $dt_loin = DateTime-> |
- | + | my $nbsec = $dt_now-> | |
- | print " | + | |
+ | print " | ||
+ | print " | ||
+ | Resultat: | ||
+ | secondes: 3775448 | ||
+ | jours: 43 | ||
On peut aussi créer 2 dates avec un écart de 100 jours, comme cela: | On peut aussi créer 2 dates avec un écart de 100 jours, comme cela: | ||
my $dt_end = DateTime-> | my $dt_end = DateTime-> | ||
my $dt_start = $dt_end - DateTime:: | my $dt_start = $dt_end - DateTime:: | ||
- | |||
- | print ( $dt_end - $dt_start )-> | ||
- | |||
- | |||
===== en bref ===== | ===== en bref ===== |
programmation_perl.1263400944.txt.gz · Dernière modification : 2010/01/13 16:42 de thierry