Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use Net::PcapUtils;
- use NetPacket::Ethernet;
- use NetPacket::IP;
- use NetPacket::TCP;
- use Data::HexDump; #Recordar: soltar volcado en Hex para otras herramientas
- use Term::ANSIColor;
- unless ($ARGV[0]) { &error_param; }
- my $option = $ARGV[0];
- if ($option eq "-h") { &help; }
- #Recordar: meter filtros al gusto mediante argumentos
- #Recordar: optimizar la selección de opciones, y añadir las que había pensado
- my %filter = (
- "-d" => "dst port 80",
- "-s" => "src port 80",
- "-b" => "port 80"
- );
- ETIQUETA: #Esto es una guarrada, pero no consigo hacerlo de otra forma
- print "\n\n";
- Net::PcapUtils::loop(\&process_pkt, SNAPLEN => 1000, FILTER => $filter{$option});
- #Aqui metemos la subrutina para leer los paquetes y limpiarlos
- sub process_pkt {
- my($arg, $hdr, $pkt) = @_;
- my $eth_obj = NetPacket::Ethernet->decode($pkt);
- if ($eth_obj->{type} == 0x0800) {
- my $ip_obj = NetPacket::IP->decode($eth_obj->{data});
- if ($ip_obj->{proto} == 6){
- my $tcp_obj = NetPacket::TCP->decode($ip_obj->{data});
- if ($tcp_obj->{data}){
- $tcp_obj->{data} =~ s/\r\n\r\n/\nxxxx/g;
- my @todo = split(/\r\n/,$tcp_obj->{data});
- foreach my $line (@todo) {
- if ($line =~ "xxxx"){ goto ETIQUETA; }
- print "\n$line";
- #Esto es otra guarrada, pero es que no consigo hacerlo de ninguna #otra manera. Y aun así a veces falla
- }
- }
- }
- }
- }
- sub error_param {
- use Term::ANSIColor qw(:constants);
- local $Term::ANSIColor::AUTORESET = 1;
- print RED "\n[+]";
- print "Necesitas añadir una opcion\nUso: perl 0verSniff.pl <opcion>\n\n";
- exit;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement