• Publicidad

Establecer un control

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Establecer un control

Notapor BigBear » 2014-01-02 17:03 @752

Hola, necesito establecer un control en este código. La idea es que en el proxy server se detecte que si una URL tiene un "?", o sea, está haciendo un formulario, se modifique por Google y termine. El tema es que necesito establecer un control porque después detecta de nuevo el GET mandado, o sea, Google. Mi idea es hacer un control y que no detecte la URL a la que cual redirecciono.

El código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. elsif ( $ARGV[0] =~ /g/ ) {
  2.  
  3.     my $urlfinal;
  4.     my $control_get;
  5.  
  6.     $control_get = 1;
  7.  
  8.     if ( $message->uri =~ /(.*)\?(.*)/ and $control_get eq 1 ) {
  9.  
  10.         $control_get = 0;
  11.  
  12.         print "\n######################\n";
  13.         print "[+] GET : " . $message->uri;
  14.         print "\n######################\n";
  15.  
  16.         $message->uri("http://www.google.com");
  17.  
  18.         next;
  19.  
  20.         $control_get = 1;
  21.  
  22.     }
  23.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Acá está el problema:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
######################
[+] GET : http://localhost:8080/labs/get.php?prob ... con=forear
######################

######################
[+] GET : http://www.google.com.ar/?gfe_rd=cr&ei= ... 8QeazYCoDA
######################
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿ Alguien me puede ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Establecer un control

Notapor explorer » 2014-01-02 18:06 @796

Supongo que vale con mirar que en el URI esté o no la dirección google.com...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Establecer un control

Notapor BigBear » 2014-01-02 18:09 @798

No, el tema es que se repite. Si verifico como vos me decís voy a ignorar a Google o la URL redireccionada siempre. El tema es evitar la doble repetición en el momento. Mira, el código es algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use HTTP::Proxy;
  2. use HTTP::Proxy::BodyFilter::simple;
  3. use HTTP::Proxy::BodyFilter::complete;
  4. use Data::Dumper;
  5.  
  6. my $server = HTTP::Proxy->new( port => 8080 );
  7. $server->host();
  8.  
  9. $server->push_filter( mime => undef, response => HTTP::Proxy::BodyFilter::complete->new() );
  10.  
  11. $server->push_filter(
  12.     mime     => undef,
  13.     request  => HTTP::Proxy::BodyFilter::simple->new( \&enable ),
  14.     response => HTTP::Proxy::BodyFilter::simple->new( \&enable2 )
  15. );
  16.  
  17. $server->start();
  18.  
  19. sub enable {
  20.  
  21.     my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
  22.  
  23.     my $urlfinal;
  24.     my $control_get;
  25.  
  26.     $control_get = 1;
  27.  
  28.     if ( $message->uri =~ /(.*)\?(.*)/ and $control_get eq 1 ) {
  29.  
  30.         $control_get = 0;
  31.  
  32.         print "\n######################\n";
  33.         print "[+] GET : " . $message->uri;
  34.         print "\n######################\n";
  35.  
  36.         $message->uri("http://www.google.com");
  37.  
  38.         next;
  39.  
  40.         $control_get = 1;
  41.  
  42.     }
  43. }
  44.  
  45.  
  46.  
  47. sub enable2 {
  48.     my ( $j, $k, $l, $m, $n ) = @_;
  49.     savefile( $logs, "\n\n[START]\n\n" . $$k . "\n\n[END]\n" ) if $$k ne "";
  50. }
  51.  
  52. sub savefile {
  53.     open( SAVE, ">>" . $_[0] );
  54.     print SAVE $_[1] . "\n";
  55.     close SAVE;
  56. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Re: Establecer un control

Notapor explorer » 2014-01-02 18:57 @831

La variable $control_get no te sirve de nada, porque es una variable local, dentro de la subrutina: es creada al llamar a la subrutina, destruida al salir de ella, y desconocida para el resto del programa. Debes usar algo global.

No conozco HTTP::Proxy, pero juraría que la llamada al método uri() es la que hace que se ejecute por segunda vez... o es que quizás, el que hace la segunda petición, es el cliente web, al recibir la URI del proxy. No lo sé.

En la carpeta de ejemplos de HTTP::Proxy hay uno parecido a lo que quieres hacer, me parece.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados

cron