Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   uin;pass генератор по маскам (Perl) (https://forum.antichat.xyz/showthread.php?t=45018)

The_HuliGun 22.07.2007 12:17

uin;pass генератор по маскам (Perl)
 
Доброго времени суток!
На досуге написал скрипт генератора пар uin;pass. И не стоит сразу кричать, что тема боян, таких генераторов уже туча, и т. д. Я преследовал скорее идею показать посетителям мощь и простоту языка Perl, нежели написать супер практический многофункциональный скрипт. Я хочу, чтобы новички в программировании познакомились з базовыми конструкциями языка, а все, кто еще не знаком с регулярными выражениями увидели их гибкость и простоту в решении практических задач.

PHP код:

#!/usr/bin/perl 

 
$min  100000
 
$max  999999
 
$flag 0;   # Флаг маски
 
$pass;       # Файл с паролями
 
$t_pass 0;
 
$t_pair 0;

 
welcome();

 
$destination shift @ARGV;
 
open (OUT,">$destination");

 while ((
$p ne "-f")&&($p ne "-p")&&($p=shift @ARGV)) 
 {
  if (
$p eq "-i") { $a shift @ARGV;if ($a =~ m/^\d*$/) {$min $a }; $a shift @ARGV; if ($a =~ m/^\d*$/) {$max $a;}}
  if (
$p eq "-f") {$pass shift @ARGV;open(IN,"$pass"); last;}
  if (
$p eq "-p") { last;}
  if (
$p eq "-m") { $p shift @ARGV; if ($p eq "x"){$flag 1}; if ($p eq "xy"){$flag 2}; if ($p eq "xyz"){$flag 3};};
 }

 if (
$pass
 { 
  while(<
IN>) 
   {
    
$t_pass++;
    
chomp;
    
go($_);
   }
  
finish();
 }

 if (
$p eq "-p")
  {
   while (
$p shift @ARGV)
    {
     
$t_pass++;
     
go($p);
    }
   
finish();
  }

 
sub welcome()
  {
   print
"\n                UIN;PASS Generator\n";
   print
"\nUsage: \"perl gen.pl <output file> <options>\"\n";
   print
"\nOptions:\n";
   print
"-i Diapazon, example: \"perl gen.pl input.txt -i 10000 20000\"\n";
   print
"-m Mask, can be x, xy, xyz\n";
   print
"-f File with passwords in current dir\n";
   print
"-p Passwords separated by space\n";
   print
"\nExamples:\n";
   print
"perl gen.pl uin.txt -m xyz -f pass.txt\n";
   print
"perl gen.pl uin.txt -i 10000 50000 -p qwerty\n"
   print
"perl gen.pl uin.txt -m xy -p abc123 monkey grandpa\n";
   print
"perl gen.pl uin.txt -i 10000 30000 -m xyz -p myicqpass\n";
  };

 
sub go()
  {
   for (
$i $min$i <= $max$i++)
    {
     if (!
$flag) { print OUT "$i;$_[0]\n"$t_pair++; };
     if ((
$flag == 1)&&($i=~ m/^(\d)\1*$/)) { print OUT "$i;$_[0]\n"$t_pair++; };
     if ((
$flag == 2)&&($i=~ m/^(\d)\1*(\d)(\1|\2)*$/)) { print OUT "$i;$_[0]\n"$t_pair++; };
     if ((
$flag == 3)&&($i=~ m/^(\d)\1*(\d)(\1|\2)*(\d)(\1|\2|\4)*$/)) { print OUT "$i;$_[0]\n"$t_pair++; };
    }
  };

 
sub finish()
  {
   print 
"\nSuccess!\n";
   print 
"Generated $t_pair pairs with $t_pass pass and writed to $destination";
  }

 
# Если не задана опция -i, тогда интервал по дефолту от 100000 до 999999 

Возможности: генерация по маскам x, xy, xyz, использование файла с паролями, ведение статистики по количеству сгенерированных пар. Практичность том, что скрипт позволяет сгенерировать пары на удаленной тачке, если брут производится с дедика или захваченного сервера. ИМХО легче сгенерить файл на месте чем закачивать его на сервер.

genom-- 22.07.2007 13:38

ну такой скрипт на месте накропать дело 1 минуты -- тупо два фора один с номерами др с пачкой пассов и вывод в файл - и все =)

Isis 22.07.2007 13:54

genom--, да вы crazy coder =\
Тема баян...показывать простоту языка здесь совсем ни к чему..
Мб мне создать такое на пхп в 5 строк - покажу простоту языка пхп

genom-- 22.07.2007 15:11

я в 1 строку могу -- ток она будет длинная )))

Isis 22.07.2007 15:40

genom--, когда говорят про строки - имеется ввиду строка не больше 1000px в длину =)


Время: 20:54