Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::IP;
  4. use IO::Socket;
  5. use Term::ANSIColor;
  6. use vars qw( $PROG );
  7. use warnings;
  8. ( $PROG = $0 ) =~ s/^.*[\/\\]//;
  9. #Usage
  10. if ( @ARGV < 5 ) {
  11. print "Usage: ./$PROG [START-IP] [END-IP] [THREADS] [TIMEOUT] [OUTPUT]\n";
  12. exit;
  13. }
  14. my $threads = $ARGV[2];
  15. my @ip_team = ();
  16. $|= 1;
  17. my $ip = new Net::IP ("$ARGV[0] - $ARGV[1]") or die "Invaild IP Range.". Net::IP::Error() ."\n";
  18.  
  19.  
  20. #Start Forking :D
  21. while ($ip) {
  22. push @ip_team, $ip++ ->ip();
  23. if ( $threads == @ip_team ) { Scan(@ip_team); @ip_team = () }
  24. }
  25. Scan(@ip_team);
  26.  
  27. #Scan
  28. sub Scan
  29. {
  30. my @Pids;
  31. foreach my $ip (@_)
  32. {
  33. my $pid = fork();
  34. die "Could not fork! $!\n" unless defined $pid;
  35. if (0 == $pid)
  36. {
  37. alarm 1;
  38. #print "Current IP: $ip\n";
  39. #Open socket, save to list, print out open ports
  40. my $socket = IO::Socket::INET->new(PeerAddr => $ip , PeerPort => 123 , Proto => 'udp' , Timeout => $ARGV[3]);
  41.  
  42. my $payload = "\x97\x00\x00\x00\xAA\x00\x00\x00";
  43.  
  44. $socket->send($payload) or die "Nothing got sent.";
  45.  
  46. my $data;
  47. $socket->recv($data,64);
  48.  
  49. open (MYFILE, ">>$ARGV[4]");
  50. my $result = index($data, "\x97\x00\x00\x00");
  51. if($result != -1){
  52. print "Found $ip\n";
  53. print MYFILE "$ip\n" if $socket;
  54. }
  55. close (MYFILE);
  56. exit
  57. }
  58. else
  59. {
  60. push @Pids, $pid
  61. }
  62. }
  63.  
  64. foreach my $pid (@Pids) { waitpid($pid, 0) }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement