elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Re: Hola Ayuda con c++ en: 12 Enero 2013, 05:10 am
Muchos responderian www.google.com.ar ...

Pero te paso las dos mas organizadas al menos para aprender el lenguaje..

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B


y

http://c.conclase.net/curso/index.php

Por lo general es mejor un libro y te remito de nuevo a Google..

Espero te sirvan.. Saludos
2  Programación / Scripting / Messenger Sniffer en Perl en: 29 Febrero 2012, 08:52 am
Hola amigos, hace unos dias comenze a estudiar perl, y por estar boludeando con wireshark me di cuenta que se puede leer una conversacion de msn, sin mas que un sniffer.
Perl me vino como anillo al dedo, por lo que hice una clase en perl, que una vez almacenados los paquetes capturados en un archivo, esta me extrae la conversacion en una bonita lista html.

Aqui adjunto la clase:

Código:
package Packet::Extractor;

use strict;
use warnings;
use Path::Class;
use autodie;

require Exporter;

our $VERSION = '0.001';

our @ISA = qw(Exporter);

# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.

# This allows declaration use Packet::Extractor ':all';
# If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
# will save memory.
our %EXPORT_TAGS = ( 'all' => [ qw(

) ] );

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw(

);

our $VERSION = '0.01';


# Preloaded methods go here.
  ######################################################################
  #Constructor de la clase
  #

sub new
{
my $this=shift; #Cogemos la clase que somos o una referencia a la clase (si soy un objeto)
    my $class = ref($this) || $this; #Averiguo la clase a la que pertenezco

    my $self={}; #Inicializamos la tabla hash que contendrá las var. de instancia
    $self ->{ENTRADA}  = ""; #La clase ExtractText nace sin un fichero de entrada
    $self ->{SALIDA}   = ""; #La clase ExtractText y sin uno de salida
    $self ->{PATRON_I} = ""; #Patrones de comienzo del paquete
    $self ->{PATRON_O} = ""; #Patrones del final del paquete
    $self ->{F_i} = undef; #Fichero de entrada
    $self ->{F_o} = undef; #Fichero de salida
    #$self ->{DATA} = undef; #
    $self ->{NUMBER} = 0; #Numero de mensajes encontrados
    $self ->{MSN} = 0; #Valor que determina si se extraera una conversacion de MSN o no
#Debe valer 1 en caso afirmativo, 0 en caso contrario

    $self ->{Fh_i} = undef; # File Handler de entrada
    $self ->{Fh_o} = undef; # File Handler de salida
   
    #my %mensaje = ("Sender" => "", "Nick" => "", "Content-Type" => "", "Font" => "", "Msj" => "");

    bless $self, $class; #Perl nos tiene que dar el visto bueno (bendecirla)
    return ($self); #Devolvemos la clase recién construida
  }
 
 
  ######################################################################
  #Métodos de acceso a los datos de la clase
  #

  #metodo para ver/cambiar el entrada
sub entrada
{
my $self=shift; #El primer parámetro de un metodo es la  clase
#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
if (@_)
{
$self->{ENTRADA}=shift;
# $self->abrir_i();
}

#Devolvemos el nombre
    return $self->{ENTRADA};
 
}
 
    #metodo para ver/cambiar el entrada
sub salida
{
my $self=shift; #El primer parámetro de un metodo es la  clase

#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
if (@_)
{
$self->{SALIDA}=shift;
# $self->abrir_o();
}
   
    #Devolvemos el nombre
    return $self->{SALIDA};

}
 
sub comienzo
{
my $self=shift; #El primer parámetro de un metodo es la  clase

#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
    $self->{PATRON_I}=shift if (@_);
   
    #Devolvemos el nombre
    return $self->{PATRON_I};

}
 
sub fin
{
my $self=shift; #El primer parámetro de un metodo es la  clase

#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
    $self->{PATRON_O}=shift if (@_);
   
    #Devolvemos el nombre
    return $self->{PATRON_O};

}

sub abrir_i
{

my $self=shift;  #El primer parámetro de un metodo es la  clase

if($self->{ENTRADA} ne "")
{
$self->{F_i} = file($self->{ENTRADA});
$self->{Fh_i} =  $self->{F_i}->openr();
}
else
{
print "Debe cargar el nombre del archivo de entrada primero\n";
}
}

sub abrir_o
{
my $self=shift;  #El primer parámetro de un metodo es la  clase

if($self->{SALIDA} ne "")
{
$self->{F_o} = file($self->{SALIDA});
$self->{Fh_o} =  $self->{F_o}->openw();
}
else
{
print "Debe cargar el nombre del archivo de salida primero\n";
}

}

sub run
{

my $self = shift;

$self->abrir_i();
$self->abrir_o();
if($self->{MSN})
{
$self->crear_tabla();
}
$self->buscar_mensajes();
if($self->{MSN})
{
$self->cerrar_tabla();
}

}

sub buscar_mensajes
{
my $self = shift;
my $pos;
my @pin= $self->adecuar_patrones();
my @po;
for( my $c = pop(@pin); $c>0; $c--)
{
$po[$c-1] = pop(@pin);
}


while ( !$self->{Fh_i}->eof() )
{
if($self->buscar_pat( $#pin, @pin ))
{
$pos = $self->{Fh_i}->getpos();
if($self->buscar_pat($#po, @po ))
{
$self->copiar($pos, $self->{Fh_i}->getpos());
}
}
}


}

sub buscar_pat
{
my $self = shift;
my $l = shift;
my @po;
for( my $c = 0; $c <= $l; $c++)
{
push(@po, shift);
}

my $caracter;
my $i;

#print "Buscando @po \n";

for($i =0; $i<= $#po && !$self->{Fh_i}->eof(); )
{
$caracter = $self->{Fh_i}->getc();
if ($caracter eq $po[$i])
{
$i++;
}
else
{
$i = 0;
}
}
return $i;

}

sub adecuar_patrones
{
my $self = shift;
my @pin;
my @pout;

my $len = length( $self->{PATRON_I} );
for( my $i = 0; $i < $len; $i++)
{
unshift(@pin, chop($self->{PATRON_I}));
}
$len = length( $self->{PATRON_O} );


for( my $i = 0; $i < $len; $i++)
{
unshift(@pout, chop($self->{PATRON_O}));
}

return @pin, @pout, $len;

}

sub copiar
{
my $self = shift;
my $inicio = shift;
my $final = shift;
my $caracter;

$self->{Fh_i}->setpos($inicio);
while( $self->{Fh_i}->getpos() ne $final)
{
$caracter .= $self->{Fh_i}->getc();
}
chop($caracter);
if( $self->{MSN} )
{
$caracter = $self->extraer_mensaje($caracter);
}

$self->{Fh_o}->print($caracter);

$self->{NUMBER}++;

}


sub set_msn
{
my $self=shift; #El primer parámetro de un metodo es la  clase
#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
$self->{MSN} = 1;

#Devolvemos el nombre
    return $self->{MSN};
 
}

sub unset_msn
{
my $self=shift; #El primer parámetro de un metodo es la  clase
#Miramos si se le ha pasado algún parámetro, en cuyo caso será el nombre
$self->{MSN} = 0;

#Devolvemos el nombre
    return $self->{MSN};
 
}

sub extraer_mensaje
{
my $self = shift;
my $mensaje = shift;
my @cadenas = split( "\n", $mensaje);
my @remitente;
if($#cadenas <3)
{
return "";
}
elsif ( $cadenas[2] =~ m/text\/plain/)
{
chop($cadenas[$#cadenas]);
chop($cadenas[$#cadenas]);
chop($cadenas[$#cadenas]);
@remitente = split ( " ", $cadenas[0]);
if($#remitente > 1 )
{
$cadenas[0] = "<td> $remitente[0] </td> <td> $remitente[1] </td>";
}
$mensaje = "<tr>".$cadenas[0]. "<td>" . $cadenas[$#cadenas]. "</td></tr>\n";
}
else{ return "";}
$mensaje =~ tr/áéíóúÁÉÍÓÚ/aeiouAEIOU/;
$mensaje =~ s/%20/ /g;
return $mensaje;

}

sub crear_tabla
{
my $self = shift;

my $table = "<table border=\"1\" align=\"center\" bgcolor=\"yellow\" style=\"text-align : center;\">
  <caption>Conversaciones grabadas con Packet::Extractor</caption>
  <thead>
    <tr>
      <th>Remitente</th>
      <th>Nick</th>
      <th>Mensaje</th>
    </tr>
  </thead>
  <tfoot bgcolor=\"cyan\" style=\" font : icon; font-style : oblique; text-decoration : underline; text-transform : none;\">
    <tr>
      <td>Hecho por </td>
      <td>Brian Schmidt</td>
      <td><a href=\"mailto:brians444\@hotmail.com\">brians444\@hotmail.com</a></td>
    </tr>
  </tfoot>
  <tbody>";
 
  $self->{Fh_o}->print($table);
 
}

 
 sub cerrar_tabla
{
my $self = shift;
my $table = "</tbody> \n </table>";

$self->{Fh_o}->print($table);

}
 
 
  ######################################################################
  #Destructor
  #

sub DESTROY
{
my $self=shift; #El primer parámetro de un metodo es la  clase
delete ($self->{ENTRADA});
delete ($self->{SALIDA});
    delete ($self->{PATRON_I});
    delete ($self->{PATRON_O});
    delete ($self->{EXTRAIDO});

}

  #Fin


1;
__END__
# Below is stub documentation for your module. You'd better edit it!

=head1 NAME

Packet::Extractor - Perl extension for extracting caracters between 2 string in a file

=head1 SYNOPSIS

use Packet::Extractor; #Please sorry by my english
 

=head1 DESCRIPTION

use Packet::Extractor; #Please sorry by my english again
 
my $asd;

$asd = Packet::Extractor->new(); #Create a object

$asd->entrada("packet.cap"); # Set the input file
$asd->salida("out.html"); # Set the output file

$asd->comienzo("MSG"); # Set the string to begin the cut
$asd->fin("IO"); # Set the string to finish the cut

$asd->set_msn(); # Here we tell to the class, that extract a MSN conversation from input file

$asd->run(); # We put to work the class

=head2 EXPORT

None by default.



=head1 SEE ALSO

Mention other useful documentation such as the documentation of
related modules or operating system documentation (such as man pages
in UNIX), or any relevant external documentation such as RFCs or
standards.

If you have a mailing list set up for your module, mention it here.

If you have a web site set up for your module, mention it here.

=head1 AUTHOR

Brian Eric Schmidt, E<lt>brians444@hotmail.com<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2012 by Brian Eric Schmidt

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.14.2 or,
at your option, any later version of Perl 5 you may have available.

=cut


Y un ejemplo de su uso :

Código:
use Packet::Extractor;

my $asd;

$asd = Packet::Extractor->new();   #Aqui creo el objeto
$asd->entrada("packet.cap");           #Aqui cargo el nombre del fichero de entrada
$asd->salida("out.html");                   #Aqui cargo el nombre del fichero de salida

$asd->comienzo("MSG");                 # Aqui ingreso, 2 patrones el de inicio, y el de salida.
$asd->fin("IO");                           # Los cuales corresponden al inicio de los datos sensibles de los
                                                   # paquetes de msn, el de fin a veces varias siendo tambien     
                                                    #posible  "MO"

$asd->set_msn();                 # Seteo que debe extraer una conversacion de msn
$asd->run();                             #Pongo la clase a trabajar


Mi idea ahora es usar la libreria Net::Pcap para que el script directamente capture el trafico, luego ver la posibilidad de que se pueda inyectar un paquete falso para poder responder sin que el usuario local se de cuenta.. (Desconozco si es posible)

Tengo varias consultas... Primero como la ven a la clase, que se puede mejorar, etc.. La idea es aprender y mejorar, por lo que cualkier sugerencia es aceptada :)

Ademas como se puede hacer para leer caracter a caracter una variable escalar (para compararla con los patrones)

Desde ya muchas gracias...

Por lo pronto ire actualizando cualquier mejora que consiga..

saludos  :D
3  Programación / Programación C/C++ / Re: Red Neuronal (BackPropagation) en: 26 Enero 2012, 14:31 pm
Hola cioran! Disculpa mi tardanza, es que estuve en epoca de finales, y luego me di unas vacaciones. Me gusta tu idea, de hacer varias aplicaciones con distintas rna, para poder entender los diferentes modelos!
En lo que respecta a las formulas, confio en ellas por q estan sacadas del libro "Redes Neuronales y Sistemas Difusos" de Martin del Brio, y "Redes Neuronales Artificiales"  José R. Hilera y Victor J Martinez.

Respecto a la programacion, en C/C++ o Python puedo ayudarte, con java no asi! Creo q por la necesidad de rapidez en calculo, siempre es conveniente un lenguaje compilado. Igual por si quieres un lindo tutorial de python que explica Threads de manera sencilla mira este : http://mundogeek.net/tutorial-python/ .

En el caso del perceptron simple, si te sirve te paso un simulador que hice (c++) y que me ha funcionado bien al que todavia se le podria agregar una interfaz grafica sencilla..

Actualmente estoy escribiendo un capitulo sencillo de redes neuronales (backpropagation), para un libro de un profesor mio, que cuando lo tenga terminado lo subire como apunte y podre dedicarme a la programacion!
4  Foros Generales / Noticias / Re: Google cierra el grifo gratuito al acceso intensivo a la API de Google Maps en: 28 Octubre 2011, 06:02 am
Jaja primero el caso del cierre de la Api de translate y luego esto... que sigue? se adueñaran de todo el codigo subido a google code? hace un tiempo hice una aplicacion de gps con google maps para uso propio,la verdad haber sabido buscaba otro medio para hacerlo pero la verdad q los escritores de esos 25000 programas los deben estar odiando de momento ...
5  Informática / Electrónica / Re: Bobina Tesla para una casa? en: 28 Octubre 2011, 04:36 am
En efecto anonymous250 esa seria la forma mas practica, agua, aire y sol.

Hace unos dias tuve una disertacion sobre energias renovables y nos contaban que un molino pequeño(realizable en casa) genera unos 700 watts/hora, luego sigue con el sol y el agua si dispone de un arrollo como ya dijo anonymous. Necesitaras un sistema de almacenamiento ya que unas baterias no te duraran demasiado y no tendras el voltaje necesario ni para hacer funcionar la television.

Autosustentable proviene ademas de no contaminar nada, por lo que se tendran que aprovechar las aguas residuales(lease "la del baño" jaj) para riego y/o para generacion de energia, ya q esta puede generar gases como el butano; asi tambien se pueden generar fertilizantes, por la urea de la orina.
Para no desperdiciar energia ademas, la casa debera tener una muy buena aislacion termica, como pq ventanas de doble vidrio u otras.

Espero que te alla servido. Un saludo
6  Programación / Scripting / Re: PYTHON en: 28 Octubre 2011, 03:59 am
Creo que en Python no se ponen paréntesis en los condicionales.

Es indistinto si se colocan o no.. Ya habia probado el codigo y funcionaba  :rolleyes:

Saludos
7  Programación / Programación C/C++ / Re: [Capitulo III]Threads. en: 28 Octubre 2011, 03:43 am
Espectacular Lord Hace rato queria encontrar algo asi!
Ahora me voy a sentar a probarlo!

Muchisimas gracias!  Un abrazo  :D
8  Foros Generales / Noticias / Re: El CERN encuentra partículas que se mueven más rápido que la luz en: 27 Octubre 2011, 10:29 am
De hecho el HLC es el proyecto que consume y ha consumido mas electricidad en todo el mundo hasta ahora con 7 TeV (Teraelectronvoltios) o sea unos 7000000000000 voltios (7x10^12).


Disculpa que corrija,  pero 7 TeV es la cantidad de (Potencial electrico * Carga) es decir la variacion de energia cinetica por unidad de carga, mientras que el consumo se mide en Watts, el cual viene de la derivada de la energia potencial respecto del tiempo, o es decir la cantidad de energia consumida en un tiempo(siempre y cuando sea constante)..

Por lo tanto lo que consumio el proyecto no esta dado por esa magnitud, mas bien corresponde a la energia potencial necesaria para acelerar las particulas a un velocidad deseada.


mira el lado positivo, podriamos cargar una pagina antes de saber que lo queresmos hacer  ::)

ajajja esta bueno el razonamiento q tuviste!

Pero no es asi, el que alla particulas que lleguen antes que la velocidad de la luz, no significa que puedas recibir informacion antes de enviarla.
Primero ya que si envias informacion debes hacerlo a travez de un medio, si en este caso es la luz, el detector sensara la luz (una onda electromagnetica, o un foton por la dualidad onda particula, no las particulas que llegaron antes o cualkier otro tipo de particulas
Y segundo que las particulas que llegaron antes, proviene de que tardaron menor tiempo en recorrer la misma distancia no las de la luz ,es decir llegaron literalmente mas rapido que las de la luz.
9  Sistemas Operativos / Windows / Re: Archivos txt se deforman cuando paso de linux a windows en: 26 Octubre 2011, 19:28 pm
Debes convertir el "\n", ya que no es igual en linux que en windows (si siempre windows dando la nota). En linux se utiliza LF mientras que el w$ CR/LF ..

Una forma facil de convertirlo es utilizar Geany un IDE para Linux, en este vas a "Documento->Establecer fin de linea" y eliges convertirlo al formato que desees.

Espero haber solucionado tu problema

Saludos  :D
10  Programación / Scripting / Re: PYTHON en: 26 Octubre 2011, 07:14 am
Creo que esta de mas decirlo que aqui no se hacen tareas, pero hace rato no programo en python asi que aqui va el primero..

Código:
print 'Ingrese un numero:'

num = int(raw_input())

if (num%2==0) :
    print 'El numero', num,' es par '
else:
    print 'El numero ',num,' es impar'
   

La operacion % de la condicion del if te da el resto de la division con el numero que le sigue...

Aqui te dejo una web con un tutorial sobre Python : http://www.mclibre.org/consultar/python/index.html

Tambien hay un manual llamado Python para todos que me resulto muy bueno, creo q esta disponible aqui en esta web
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines