Posez votre question Signaler

Perl port scanner, probleme de thread

Om3g4 - Dernière réponse le 19 nov. 2008 à 21:21


#!/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
Lire la suite 

Perl port scanner, probleme de thread »

1 réponses
Réponse
+0
moins plus
bonjour, est ce un scanner de port ce que tu as programmé, si c'est le cas il ne marche pas sur mon ordinateur, je ne sais pas pourquoi il n'écrit que les premières lignes et il s'arrête , donc si tu peux m'aider je te serai tés reconnaissant car j'en ai vraiment besoin. merci.
Ajouter un commentaire
Ce document intitulé « perl port scanner, probleme de thread » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?