Perl port scanner, probleme de thread
Om3g4
-
MHD -
MHD -
#!/usr/bin/perl
use IO::Socket::INET;
my $TIMEOUT = 10;
printf "*****************************************\n";
printf "* UnderAttack *\n";
printf "* By Om3g4 *\n";
printf "*****************************************\n";
if (! defined $ARGV[1]) {
printf "\nUsage: UnderAttack [TARGET] <OPTS>\n\n";
printf "Target Options:\n";
printf "[-I] --> Target IP Range\n";
printf "[-F] --> Target IP File\n\n";
printf "Options:\n";
printf "<-P> --> Ports To Scan\n";
printf "<-T> --> Thread (default = 10)\n";
printf "<-O> --> Output File\n";
exit 0; }
for (my $x=0;$x<=$#ARGV;$x++) {
if (@ARGV[$x]=~/\-i/) { @TARGET = make_ip(@ARGV[$x+1]); }
if (@ARGV[$x]=~/\-f/) { @TARGET = make_ip(@ARGV[$x+1],10); }
if (@ARGV[$x]=~/\-p/) { @PORTS = make_ports(@ARGV[$x+1]); }
if (@ARGV[$x]=~/\-t/) { $THREAD = @ARGV[$x+1]; }
if (@ARGV[$x]=~/\-o/) { $OUTPUT = @ARGV[$x+1]; } }
print "\nStarting Attack\t".(scalar localtime)."\n\n";
foreach (@TARGET) {
scan($_);
}
sub scan {
my ($ip)=@_;
for (my $i = $1; $i <=$#PORTS; $i++) {
check_port($ip, $PORTS[$i]);
next;
}
}
sub check_port {
my ($iaddr, $port) = @_;
printf "+%s: Scan For %s\n", $iaddr, $port;
my $sock = IO::Socket::INET->new(PeerAddr => $iaddr,
PeerPort => $port,
Timeout => 0.4) or print bleh;
if ($sock) { my $grab = grab($sock); printf "+%s: ==> %s Active : %s\n", $iaddr, $port, $grab; }
close $sock;
}
sub check_port2 {
my ($iaddr, $port) = @_;
printf "+%s: Scan For %s\n", $iaddr, $port;
my $proto = getprotobyname('tcp');
my $paddr = sockaddr_in($port, inet_aton($iaddr));
socket(SOCKET, PF_INET, SOCK_STREAM, $proto);
connect(SOCKET, $paddr);
if (<SOCKET>) { my $grab = grab(SOCKET); printf " ==> %s Active : %s\n", $iaddr, $port, $grab; }
}
sub grab { return <$_>; }
sub ping {
my ($ip) = @_;
my $p = Net::Ping->new("icmp");
print "Ping $host";
print "NOT " unless $p->ping($host, 2);
print "alive.\n";
$p->close(); }
sub make_ports {
my @port_strings = split(/,/, shift);
my @ports;
foreach (@port_strings) {
if (/(\d+)-(\d+)/) {
for (my $i = $1; $i <= $2; $i++) { push(@ports, $i); }
} else { push(@ports, $_); }
}
return @ports; }
sub make_ip {
my $ip = shift;
my $fonc = shift;
if (defined $fonc) {
open(IPLIST, $ip) or die "Unable to open iplist: $!";
@IP = <IPLIST>;
close(IPLIST);
chomp(@IP);
} else {
if ($ip=~/\-/) { ($IP1,$IP2)=split(/\-/,$ip); ($IP11,$IP12,$IP13,$IP14)=split(/\./,$IP1); ($IP21,$IP22,$IP23,$IP24)=split(/\./,$IP2);
$i = $IP14;
LOOP:
while($i<=$IP24) {
$i++;
my $ipaddr="$IP11.$IP12.$IP13.$i";
push(@IP, $ipaddr);
}
if ($IP13<$IP23) { $IP13++; $i = 1; goto LOOP }
} else { push(@IP, $ip); }
}
return @IP; }
je voudrait pouvoir créer plusieur socket, j ai essailler en assignant chaque socket dans un scalar mais sans resultat, j ai essailler avec la lib Thread mais elle bouffe le cpu, si kelkun pourrait m aider sa srait vraiment cool
A voir également:
- Perl port scanner, probleme de thread
- Advanced port scanner - Télécharger - Utilitaires
- Scanner qr code pc - Guide
- Angry ip scanner - Télécharger - Divers Réseau & Wi-Fi
- Installer scanner - Télécharger - Divers Utilitaires
- Port wsd ✓ - Forum Réseau