2012-09-13 13 views
5

Necesito escribir un pequeño fragmento de código para simular el tráfico de diferentes direcciones IP de origen y me pregunto si eso se puede hacer falsificando las direcciones con Perl.Spoof IP con Perl LWP

me trataron Net :: RawIP y que funcionaba, pero tengo que enviar algo de tráfico HTTP más complejo (es decir, datos POST) y fue incapaz de hacerlo con RawIP

Con LWP Intenté usar UA-> local_address pero me da esta respuesta:

Can't connect to 10.x.x.x:8080 

LWP::Protocol::http::Socket: Cannot assign requested address at /usr/lib/perl5/site_perl/5.10.0/LWP/Protocol/http.pm line 51. 

este es el código que estoy usando:

#!/usr/bin/perl -w 

use strict ; 
use warnings ; 
use LWP::UserAgent ; 
use URI::URL ; 

my $path = 'http://142.133.114.130:8080' ; 
my $url = new URI::URL $path; 
my $ua  = LWP::UserAgent->new(); 

$ua->local_address('10.121.132.112'); 
$ua->env_proxy ; 
my $effing = 'blaj.jpg' ; 
my $response = $ua->post($url, 
         'Content-Type' => "multipart/form-data", 
         'Content' => [ userfile => ["$effing" ]], 
         'Connection' => 'keep-alive') ; 
print $response->decoded_content(); 

Respuesta

2

no se puede obtener una respuesta si envía desde una dirección que no es la suya. Eso significa que todo lo que puede hacer es enviar la solicitud. Usted indicó que puede hacer el envío, por lo que todo lo que necesita es la solicitud de envío. Eso es fácil.

use strict; 
use warnings; 

use HTTP::Request::Common qw(POST); 

my $req = POST('http://www.example.org/', 
    'Content-Type' => "multipart/form-data", 
    'Content'  => [ userfile => [ $0 ]], 
    'Connection' => 'keep-alive', 
); 

print $req->as_string(); 

Salida:

POST http://www.example.org/ 
Connection: keep-alive 
Content-Length: 376 
Content-Type: multipart/form-data; boundary=xYzZY 

--xYzZY 
Content-Disposition: form-data; name="userfile"; filename="x.pl" 
Content-Type: text/plain 

use strict; 
use warnings; 

use HTTP::Request::Common qw(POST); 

my $req = POST('http://www.example.org/', 
    'Content-Type' => "multipart/form-data", 
    'Content'  => [ userfile => [ $0 ]], 
    'Connection' => 'keep-alive', 
); 

print $req->as_string(); 

--xYzZY-- 
+0

El envío del archivo no es un problema, que está cambiando la IP de origen de la solicitud. Estoy en una LAN y tengo control sobre las rutas y el servidor de escucha, así que está bien – blackbird

+0

Dijiste que ya puedes hacer eso con Net :: RAWIP. Lo único que no pudo hacer con Net :: RAWIP es formatear la solicitud y le mostré cómo hacerlo. – ikegami

+0

¡Esto es para RAWIP! déjame intentar ... – blackbird

Cuestiones relacionadas