PDA

Просмотр полной версии : зацените сканер портов для диапазона ip


nerezus
06.06.2005, 13:47
сканер портов для диапазона ip
#!/usr/bin/perl -w

# PortMap by nerezus
# The Artistic License
# ICQ 547097
#
# A tool for scan ip range

use strict;
use Socket;

if (@ARGV<2) {print "Usage: portmap.pl from_host(ip) to_host(ip) [portfile.txt(ports via [space])]\n";exit(0);}
my $fremote=shift||'127.0.0.1';
my $tremote=shift||'127.0.0.1';
my $portfile=shift;
my $ports;
if ($portfile) {open (PF, $portfile); $ports=<PF>; close(PF);}
else {$ports="21 80";}
my @ports=split(/ /, $ports);
my @flist=split(/\./, $fremote);
my @tlist=split(/\./, $tremote);
my $fip=$flist[0]*256*256*256+$flist[1]*256*256+$flist[2]*256+$flist[3];
my $tip=$tlist[0]*256*256*256+$tlist[1]*256*256+$tlist[2]*256+$tlist[3];

for (my $i=$fip; $i<=$tip; $i++) {
my $tmp=$i;
my $d1=int($tmp / (256*256*256)); $tmp=$tmp-$d1*(256*256*256);
my $d2=int($tmp / (256*256)); $tmp=$tmp-$d2*(256*256);
my $d3=int($tmp / 256); $tmp=$tmp-$d3*256;
my $d4=$tmp;
my $ip="$d1.$d2.$d3.$d4";
my $host=gethostbyname($ip);
foreach my $port (@ports){
my $dest=sockaddr_in($port, $host);
socket (S, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
if (connect(S, $dest)) {print "[".scalar(localtime)."] $ip:$port OK\n";}
# else {print "[".scalar(localtime)."] $ip:$port ERR\n";}
close S;
}
}

m0nzt3r
06.06.2005, 14:06
наверно хорооший если это ты написал ))) жаль что не смогу щас заценить(я из клуба захожу))

Algol
08.06.2005, 14:34
А в мультипоточном режиме слабо ?
:)

nerezus
08.06.2005, 14:51
после 17(экзамен у меня последний)

CyberHack
08.06.2005, 18:30
ja v etom dele noob tak6to nesmejtes.
ego nado zakinut v php ili na delphi ili c++ pisat?
v kakom on farmate dolzen bit?

k00p3r
08.06.2005, 18:54
v Perl formate

nerezus
08.06.2005, 21:45
aga, iminna tak
pasledn'uu versjyu perla mojna skachat' na activestate.com

m0nzt3r
09.06.2005, 17:33
попробовал...неплохой вроде бы