|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Okunev 2:5020/400 26 Sep 2001 18:40:11 To : Yuriy Talakan Subject : Re: ? --------------------------------------------------------------------------------
Hi,
On Sep 14, 2001 at 06:05, Yuriy Talakan' wrote:
> Требуется подобрать пароль тупым перебором. 6 символов -- 0..9,A..Z,a..z
> Как сделать, чтобы $pass постепенно увеличивался от "000000" до "zzzzzz"?
> 6 циклов for не хочу. Хочу, чтоб я мог задать начальный пароль, скажем,
> $pass="3fG56Z", и перебор бы начался именно с него.
если я правильно понял то примерно так можно:
- ---cut
#!/usr/bin/perl
use strict;
my $ind = 0;
my $word = shift || die "Где слово ?\a\n";
my $chars = shift || join '', (0..9,'A'..'Z','a'..'z');
my @chars = sort {$a cmp $b} keys %{{ map { $_, 1 } split //,$chars }};
my @livels;
die "Hедопустимый символ: '$1' [".ord($1)."]\a\n" if $word=~m{([^\Q$chars\E])}s;
sub create($$$) {
my ($str,$max,$ind,$cnt) = @_;
$ind++;
for $cnt ( $livels[$ind]..$#chars ) {
# $ind<$max?create($str.$chars[$cnt],$max,$ind):($livels[$ind]=(print($str,$
chars[$cnt],"\n")||die)-1);
$ind<$max?create($str.$chars[$cnt],$max,$ind):print($str,$chars[$cnt],"\n"),$
livels[$ind]=0;
}
}
foreach ( split(//,$word) ) {
for $ind ( 0..$#chars ) {
push(@livels,$ind),last if $chars[$ind] eq $_;
}
}
create('',length($word) - 1,-1);
- ---cut
первый аргумент командной строки твое слово, второй строка символов
из которых подбирать пароль (по умолчанию 0..9,A-Z,a-z), пароль
подбирается такой же длины как и заданное слово.
--
With best regards,
Okunev Igor mailto: igor@prv.mts-nn.ru
http://www.mts-nn.ru/~gosha
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/13511f4fea011.html, оценка из 5, голосов 10
|