zoukankan      html  css  js  c++  java
  • Perl 端口扫描的功能实现了有Bug。

    不知道为什么停不下来,坑爹。。

    #!/usr/bin/perl
    use threads;
    use Thread::Queue;
    use Thread::Semaphore;
    use Net::Ping;
    
    # create queue
    my $q=new Thread::Queue;
    # read for check list
    my @target=<>;
    my $se_max = Thread::Semaphore->new( 100 );
    
    
    foreach my $ip (@target){
       chomp($ip);
       foreach my $port(1..65535){
          $q->enqueue("$ip|$port");
       }
    }
    while(1){
      foreach(threads->list(threads::joinable))
      {
          $_->join();
      }
    
      my $item = $q->pending();
    
      if( $item == 0 )
      {
          my $active = threads->list(threads::running);
          if($active == 0)
          {
               print "全部跑完
    ";
               last;
          }
          else
          {
               next;
          }
      }
      $se_max->down;
      threads->create(&nex,$q->dequeue());
    }
    foreach(threads->list()){
       $_->join();
    }
    
    sub nex{
       local($tmp)=shift;
       @list=split(/|/,$tmp);
       $scan=Net::Ping->new('syn');
       $scan->port_number($list[1]);
       $scan->ping($list[0]);
       if($scan->ack){
          print "ip:$list[0] port:$list[1] open
    ";
       }
       $scan->close();
       $se_max->up;
    }
  • 相关阅读:
    T-SQL基础(1)
    shell命令--chage
    Oracle SQL Lesson (11)
    shell命令--chpasswd
    Oracle SQL Lesson (10)
    shell命令--passwd
    Oracle SQL Lesson (9)
    shell命令--usermod
    Spring中的工厂模式和单例模式
    Oracle SQL Lesson (8)
  • 原文地址:https://www.cnblogs.com/xiaoCon/p/3361418.html
Copyright © 2011-2022 走看看