• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Perl端口扫描的脚本(SYN)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

可能脚本会有Bug,我只是用来工作上用一下,具体有没有BUG没测。

项目估计马上结束了。 这个入库的是MYSQL的。原理是先Ping,如果通的话,则加入队列,

通过队列再进行SYN探测。

#!/usr/bin/perl
use threads;
use DBI;
use Thread::Queue;
use Thread::Semaphore;
use Net::Ping;
use Term::ProgressBar;



# create queue
my $q=new Thread::Queue;
# read for check list
my @target=<>;
my $se_max = Thread::Semaphore->new( 100 );
my $se_ping= Thread::Semaphore->new( 1000 );

foreach (@target){
  chomp($_);
  if(${$se_ping} <=0){
     for my $t(threads->list(threads::joinable)){
            $t->join();
            $se_ping->up();
      }
     redo;
  }
  $se_ping->down();
  threads->create(\&alive,$_);
}
for my $t(threads->list()){
   $t->join();
}

sub alive{
  my $ip =shift;
  $ping=Net::Ping->new();
  if($ping->ping($ip)){
      foreach my $port(1..65535){
         $q->enqueue("$ip|$port");
      }
  }
}

$all_sum=$q->pending();
print $all_sum;
my $progress = Term::ProgressBar->new({name  => '扫描进度',count => $all_sum});
$progress->max_update_rate(1);

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 "全部跑完\n";
              last;
        }
        else
        {
              next;
        }
  }
  $se_max->down;
  threads->create(\&nex,$q->dequeue());
  $progress->update()
}
foreach(threads->list()){
   $_->join();
}
print "\n";

sub nex{
   local($tmp)=shift;
   @list=split(/\|/,$tmp);
   my $scan = Net::Ping->new("syn");
    $scan->port_number($list[1]);
    $scan->ping($list[0]);
    if($scan->ack){
        db_insert($list[0],$list[1]);
    }
    $scan->close();
   $se_max->up;
}

sub db_insert{
  my $host=shift;
  my $port=shift;
  my $in=DBI->connect("DBI:mysql:database=port_scan;host=localhost","root","") or die "NO :$!";
  my $insert=$in->do("insert into result(ip,port)values('$host',$port)");
  $in->disconnect();
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何在Windows Server 2003的IIS 6上安装Perl发布时间:2022-07-22
下一篇:
perl基本语法发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap