perl写端口多线程扫描器

本文介绍了一种使用Perl语言实现的多线程端口扫描技术,支持TCP连接和SYN扫描方式。作者分享了自己编写的端口扫描脚本,并解释了面向对象的语法及线程创建过程中可能遇到的问题。

      端口扫描这玩意我记得许多年前可是很火啊,随着防火墙和主动防御之类软件的普及,如今他的魅力已经大不如前了,不过在对于漏洞的利用上,端口扫描还是首当其冲的。以前也写过端口扫描,但是速度太慢,所以就此雪藏了。下面是我写的多线程扫描,有tcp连接和syn两种,看个人喜好吧。

#!/usr/bin/perl -w
use IO::Socket;
use Net::Ping;
use Thread;
sub t{
my ($ip,$minport) =(shift,shift)          ;
$s=IO::Socket::INET->new("$ip:$minport")       ;
if($s){
print "$minport is open/n"  ;
$s->close; 
}else{
print "$minport is close/n"  ; 
}
=abc
$syn=Net::Ping->new("syn");
$syn->{port_num}=$minport;
$syn->ping($ip);
if($syn->ack){
print "$minport is Opened!/n";
}else{
print "$minport is closeed!/n";  
}
$syn->close;
=cut
}
$ip=<>;
chomp($ip);
$minport=<>;
chomp($minport);
$maxport=<>;
chomp($maxport);   
my @tt;
for(;$minport<=$maxport;$minport++){
my $tt1=Thread->create(/&t,$ip,$minport) or warn "$!";
if($tt1){
     push(@tt,/$tt1)   ;
}
     
 

for $t1 (@tt){
 $$t1->join;
}
代码不难,注释里的是syn连接,都是面向对象的语法,我在调试时遇到Thread->create创建线程失败,所以我加了if判断,至于失败具体原因就不得而知了.

         文章不妥之处,还望各位多多指教。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值