Может, кому-нибудь пригодится. Сгенерировать набор (псевдо) случайных паролей в *nix можно, например, так:
$ dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w30 | sed -n 1,45p | tr -d '+/=' | cut -c1-10
Приведенная последовательность команд генерирует 45 случайных 10-символьных паролей, состоящих из больших латинских букв, маленьких латинских букв и цифр.
И Аналогично можно вот так:
dd if=/dev/urandom bs=1 count=64 2>/dev/null | uuencode -m - | head -n2 | tail -n1 | cut -c1-10
А вот способ ещё короче:
cat /dev/urandom | tr -cd A-HJ-NP-Za-km-z1-9 | head -c 12
Вот так можно обойтись без использования спецсредств типа pwgen.
POS_troi
27.10.2007, 21:00
а Random по клавишам уже не катит?
а Random по клавишам уже не катит?
ну-ну, давай 100 паролей по клавишам набивай=)
L0rd_Ha0S
28.10.2007, 18:55
А вот способ ещё короче:
cat /dev/urandom | tr -cd A-HJ-NP-Za-km-z1-9 | head -c 12
А зачем ты задал такие промежутки A-HJ-NP-Za-km-z1-9, можно ведь просто задать a-zA-Z0-9:
echo `cat /dev/urandom | tr -cd a-zA-Z0-9 | head -c 12`
Результат тот же. Во всяком случае я разницы не заметил.
А вот на перл:
#!/usr/bin/perl
$m = 16;
$x = 8;
$y = 92;
my $pass = "";
$n = 1;
@mass = ( "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", # 10
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", # 20
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", # 30
"u", "v", "w", "x", "y", "z", # 36
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", # 46
"K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", # 56
"U", "V", "W", "X", "Y", "Z", # 62
"`", "-", "=", "\\", ";", "'", ",", ".", "/", "~", # 72
"!", "@", "#", "\$", "%", "^", "&", "*", "(", ")", # 82
"_", "+", "|", "{", "}", ":", "\"", "<", ">", "?", # 92
);
while ( $n <= $m ) {
$k = 0;
$pass = "";
while ( $k < $x ) {
srand;
$b = int(rand($y));
$pass = "$pass".$mass[$b];
$k++;
}
print "$n\t\t$pass\n";
$n++;
}
есть утилита pwgen, делает всё то что тут написали только во много раз лучше :)
вот от меня небольшой скрипт
#!/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";
EST a1ien
16.03.2008, 00:49
А зачем ты задал такие промежутки A-HJ-NP-Za-km-z1-9, можно ведь просто задать a-zA-Z0-9:
Думаю изза буквы O и цифры 0 и еше из-за l
А затем чтобы вы, уважаемые, пароли не путали когда у вас 1 = I а 0 = O и т.д.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot