# FHTTP Kit by Xianur0
# Copyright (C) 2011 Oscar García López (http://hackingtelevision.blogspot.com)
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# xianur0.null@gmail.com
# http://hackingtelevision.blogspot.com/
package analizador;
$idioma = &main::mods("--lang");
# Analizador de metodos
sub grafico() {
my $ventana = Gtk2::Window->new('toplevel');
$ventana->set_title(dic::titulos($idioma,0));
$ventana->set_default_icon_from_file("icono.jpg");
$ventana->set_border_width(5);
$ventana->set_default_size(20, 20);
$ventana->set_resizable(FALSE);
$hbox = Gtk2::VBox->new(0, 0);
$hbox->set_border_width(5);
$caja = Gtk2::HBox->new(0,0);
$etiqueta = Gtk2::Label->new('URL: ');
$url = Gtk2::Entry->new();
&main::share($url);
$caja->pack_start($etiqueta, FALSE,FALSE,2);
$caja->pack_start($url, FALSE,FALSE,2);
$boton = Gtk2::Button->new(dic::fingerlabels($idioma,1));
$boton->signal_connect('clicked' => sub {$threadproxy = threads->create('iniciaranalisis'); });
$mostrar = Gtk2::Label->new(dic::fingerlabels($idioma,2));
&main::share($mostrar);
$imagen = Gtk2::Image->new_from_file("logo.png");
$hbox->pack_start($imagen, FALSE, FALSE, 2);
$hbox->pack_start($caja, FALSE, FALSE, 2);
$hbox->pack_start($boton, FALSE, FALSE, 2);
$hbox->pack_start($mostrar,FALSE,FALSE,2);
$hbox->show;
$ventana->add($hbox);
$ventana->show_all;
Gtk2->main;
}
sub new {
if(&main::mods("Gtk2") == 1) {
grafico();
} else {
iniciaranalisis();
}
}
sub iniciaranalisis {
my @encabezadoss = ("User-Agent: Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8");
$mostrar->set_text(dic::mensajes($idioma,5)."...\n") if(&main::mods("Gtk2") == 1);
my $puerto = 80;
my $path = "/";
my $ssl = 0;
my $host = "";
my $hostenvio = "";
my $puertoenvio = "";
my $resto = "";
my $scheme = "";
my $urlactual = ((&main::mods("Gtk2") == 1) ? $url->get_text : $ARGV[1]);
die(dic::comunes($idioma,0).": fhttp.pl 2 [url]\n") if($urlactual !~ /^http/);
($scheme,$resto) = ($urlactual =~ /^(https?):\/\/(.*)/);
$ssl = 1 if($scheme eq "https");
print "SSL: ".$ssl."\n";
if($resto =~ /(.*?)\/(.*)/) {
$path = "/".$2;
$resto = $1;
}
if($resto =~ /(.*?):([\d]*)$/) {
$host = $1;
$puerto = $2;
} else {
$host = $resto;
$puerto = "443" if($ssl == 1);
}
if(&main::mods("Cheat---proxy") =~ /^([^:]+):(\d+)$/) {
$hostenvio = $1;
$puertoenvio = $2;
} else {
$hostenvio = $host;
$puertoenvio = $puerto;
}
print dic::mensajes($idioma,6).": ".$hostenvio.":".$puertoenvio."\n\n";
$mostrar->set_text(join "","SSL: ",$ssl,"\n".dic::comunes($idioma,2).": ",$puerto,"\n".dic::comunes($idioma,3).": ",$host,"\n".dic::comunes($idioma,4).": ",$path,"\n") if(&main::mods("Gtk2") == 1);
if(($puerto != 80 && $ssl == 0) || (($puerto != 443 || $puerto ne "https") && $ssl == 1)) {
$lineaurl = join "",$scheme,"://",$host,":",$puerto,$path;
} else {
$lineaurl = join "",$scheme,"://",$host,$path;
}
$mostrar->set_text(join "",dic::mensajes($idioma,5),": ",$urlactual,"\n") if(&main::mods("Gtk2") == 1);
my $textomostrarfinal = "";
print &main::red, "[-] ".dic::mensajes($idioma,5)."...\n", &main::reset;
# Enviamos un Expected
my $paquete = http->new("GET",$lineaurl,"1.1");
$paquete->agregarencabezados(0,@encabezadoss);
$paquete->agregarencabezados(0,("Expected: ","Connection: Close\r\nProxy-Connection: Close\r\n"));
$paquete->print;
%estructura = $paquete->enviar($hostenvio,$puertoenvio,$ssl);
if($estructura{contenidos}[0] =~ /"));
$paquete->print;
%estructura = $paquete->enviar($hostenvio,$puertoenvio,$ssl);
if($estructura{contenidos}[0] =~ /