четверг, марта 13, 2008

Скрипт генерации паролей на Perl

Этот скрипт был написан/найден мной года 4 назад. С тех пор я периодически пользуюсь им для генерации паролей в консоли. Может кому пригодится. Называется passgen:
#!/usr/bin/perl
print "Password length:";
chomp($length=<stdin>);
$length=~s/\D*//g;
$length||='8';
srand();
@letters=('a'..'z','A'..'Z',0..9,'#','*','_','-','+','=');
for (1..$length){($pass.=$letters[rand(@letters)])};
print "\033[1;31m$pass\033[0;39m\n";

Есть еще неплохая утилита Pwgen.
Pwgen is a small, GPL'ed password generator which creates passwords which can be easily memorized by a human.
$ sudo apt-get install pwgen
А чем пользуетесь вы для генерации паролей?

11 комментариев:

Анонимный комментирует...

passook
emerge passook :)

CyberZX комментирует...

export LC_ALL=C && echo `tr -cd [:alnum:] < /dev/urandom |head -c16`

Tigro комментирует...

А что, про mkpasswd только я знаю (с детских лет)?

Анонимный комментирует...

dd if=/dev/urandom count=1 2>/dev/null|md5sum

Анонимный комментирует...

apg -a 1 -n 1 -m 16 -M ncl

Анонимный комментирует...

head -c6 /dev/random | uuencode -m - | sed -n '2s/=*$//;2p' | col -x

Deepwalker комментирует...

Мои пять копеек : )
bash:
cat /dev/urandom | tr -dc [:alnum:] | head -c 14; echo \n

python:
#! /usr/bin/python
from random import choice
import string
def genpw():
return ''.join([choice(string.ascii_letters+string.digits) for i in xrange(9)])
if __name__=='__main__':
print genpw()

Анонимный комментирует...

#!/usr/bin/perl

my $length = $ARGV[0] || 16;
my @chars = ('a'..'z', 'A'..'Z', '0'..'9');
print join ("", @chars[ map { rand @chars } ( 1 .. $length ) ] );


Вот как-то так =)
Вообще говоря, cookbook для того и писали...

Unknown комментирует...

apg и встроенная генерилка в keepassx

Анонимный комментирует...

Встроенная генерилка в KeepassX.

Eugene комментирует...

Спасибо всем комментаторам. Очень познавательно.