Advertisement
Guest User

Untitled

a guest
Feb 24th, 2013
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.62 KB | None | 0 0
  1. use autodie;
  2. use LWP::UserAgent;
  3. use Text::Autoformat;
  4. use Digest::MD5 qw(md5_hex);
  5.  
  6. my $PASS_FILE = undef;
  7.  
  8. # Uncomment to read passwords from file
  9. # (C:\Users\ArmAUser\arma3arg_passwords.txt).
  10. # Put there passwords one by line.
  11. #
  12. #$PASS_FILE = "$ENV{HOME}/arma3arg_passwords.txt";
  13.  
  14.  
  15. # Tried ones are stored here.
  16. my $TRIED_PWS_FILE = "$ENV{HOME}/arma3arg_tried_pws.txt";
  17.  
  18. my @USERS = qw(jerryhopper melteme);
  19.  
  20.  
  21.  
  22. my %tried;
  23. if (-e $TRIED_PWS_FILE) {
  24.     open(my $fh, $TRIED_PWS_FILE);
  25.     while (<$fh>) {
  26.         chomp;
  27.         $tried{$_} = 1;
  28.     }
  29.     close($fh);
  30. }
  31.  
  32. my $ifh;
  33. unless (defined $PASS_FILE) {
  34.     $ifh = *STDIN;
  35. } else {
  36.     open($ifh, $PASS_FILE);
  37. }
  38.  
  39. while (defined (my $pw = <$ifh>)) {
  40.     chomp($pw);
  41.  
  42.     # try verbatim
  43.     try_pass($pw);
  44.  
  45.     # sentence   'limnos times' -> 'Limnos times'
  46.     # title      'limnos times' -> 'Limnos Times'
  47.     # highlight  'Martin And Ivan' -> 'Martin and Ivan'
  48.     # upper      'Hi Bro' -> 'HI BRO'
  49.     # lower      'Hi Bro' -> 'hi bro'
  50.     # uc ~ upper
  51.     # lc ~ lower
  52.     for my $style (qw(sentence title highlight upper lower)) {
  53.         my $new_pw = autoformat($pw, { case => 'sentence' });
  54.         $pw =~ s/\s*$//m;
  55.         try_pass($pw);
  56.     }
  57.  
  58.     # remove all spaces
  59.     my $nonws_pw = $pw;
  60.     $nonws_pw =~ s/\s//g;
  61.     try_pass($nonws_pw);
  62.     try_pass(lc($nonws_pw));
  63.     try_pass(uc($nonws_pw));
  64.  
  65.  
  66.     # replace all spaces with '_'
  67.     my $uc_pw = $pw;
  68.     $uc_pw =~ s/\s/_/g;
  69.     try_pass($uc_pw);
  70.     try_pass(lc($uc_pw));
  71.     try_pass(uc($uc_pw));
  72. }
  73.  
  74. sub try_pass($) {
  75.     my $pw = shift;
  76.  
  77.     if (exists $tried{$pw}) {
  78.         return;
  79.     }
  80.  
  81.     my $ua = LWP::UserAgent->new;
  82.     for my $u (@USERS) {
  83.         my $creds = "$u:$pw";
  84.         my $md5 = md5_hex($creds);
  85.         print "Trying '$creds'...\n";
  86.  
  87.         my $req = HTTP::Request->new('POST', 'http://m26.node-42.rv4a3.org/json-rpc-service-demo.php');
  88.         $req->content_type('application/json');
  89.         $req->header(Accept => 'application/json, text/javascript, */*; q=0.01');
  90.         $req->header(Origin => 'http://m26.node-42.rv4a3.org');
  91.         $req->header('X-Requested-With' => 'XMLHttpRequest');
  92.         $req->header(Referer => 'http://m26.node-42.rv4a3.org/');
  93.         $req->header('User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22');
  94.         $req->content(<<EOF);
  95.             {
  96.                 "jsonrpc":"2.0",
  97.                 "method":"ls",
  98.                 "params":["$md5","\/var\/spool\/mail\/jerryhopper"],
  99.                 "id":1
  100.             }
  101. EOF
  102.         my $res = $ua->request($req);
  103.         if ($res->content !~ /Access Denied/) {
  104.             print "*** SUCCESS ***\n";
  105.             print "Login: $u\n";
  106.             print "Password: $pw\n";
  107.             exit 0;
  108.         }
  109.     }
  110.  
  111.     $tried{$pw} = 1;
  112.     open(my $fh, '>'.$TRIED_PWS_FILE);
  113.     print $fh $pw, "\n";
  114.     close($fh);
  115. }
  116.  
  117. 1;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement