Foros del Web » Programación para mayores de 30 ;) » Programación General »

Consejos para Sniffer de Red

Estas en el tema de Consejos para Sniffer de Red en el foro de Programación General en Foros del Web. Hola a Tod@s Me estaba preguntando cómo podría hacer una aplicación para trabajar con las capas mas bajas de los niveles de red. Es decir, ...
  #1 (permalink)  
Antiguo 04/07/2008, 04:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Consejos para Sniffer de Red

Hola a Tod@s

Me estaba preguntando cómo podría hacer una aplicación para trabajar con las capas mas bajas de los niveles de red. Es decir, poder leer directamente todo el flujo de datos que pasa por mi tarjeta de red, algó así como lo que hacen los sniffers pero no tan complejo. Por el momento me conformaría con leer cualqueir cosa del buffer en un instante determinado.

No se ni siquiera por qué lenguaje decidirme. Supongo que lo mejor es lenguajes de nivel intermedio como C o C++. También he oído que en Java existe un API para acceder al hardware llamada "pcap" pero no encuentro mucha documentación al respecto.

Cualquier sugerencia o consejo es bienvenido.

Gracias de antemano
  #2 (permalink)  
Antiguo 30/07/2008, 01:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Consejos para Sniffer de Red

Hola de nuevo,

He encontrado un ejemplo de algo parecido a lo que quiero, es más de lo que esperaba. Está programado en C++ y C#. Todabía no lo hemirado mucho pero bueno espero poder entreternerme y aprender un poquito. Os dejo el link por si a alguno os interesa y, si veis algún emjemplo o podeis darme algún consejo, siermpe estaré agradecido.

http://www.microsoft.com/spanish/msd...8/default.aspx

Un saludo
  #3 (permalink)  
Antiguo 18/10/2008, 18:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consejos para Sniffer de Red

hola Sil_va .....encontre algunas cosas interessantes en JPCAP para hacer un sniffer o monitor de red.....estoy haciendo un proyecto para la universidad ....

no se si ya se cerro este tema....o lo veras....si estas interesado.....enviame un mail
a [email protected]

y vemos si podes hacer algo....
  #4 (permalink)  
Antiguo 20/10/2008, 01:43
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Consejos para Sniffer de Red

Hola,

Lo cierto es que es un tema que quería tocar sólo por curiosidad y para el que todabía no he sacado tiempo. Aún así cualquier infomración es buena.

Aunque te pida por email la info, estaría bien si puedes dejar aquí algún link para que así los demas foreros puedan verlo, aunque claro... supongo que será complicaco poner todos los enlaces o toda tu documetnación aquí.

Un saludo
  #5 (permalink)  
Antiguo 20/04/2011, 16:40
 
Fecha de Ingreso: octubre-2008
Mensajes: 7
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Consejos para Sniffer de Red

Hola a todos,


Bueno, algo tarde ..pero ahi va.

He iniciado un blog, con info sorbe como iniciarse en un monitor de red desarrollado en JAVA.

http://pasininicolas.blogspot.com/

hay alguna regla en el foro que diga algo sobre poner enlaces a otro sitio ?
No vi mejor manera de compartir esta info.



Saludos,

Nico
  #6 (permalink)  
Antiguo 21/04/2011, 03:02
 
Fecha de Ingreso: diciembre-2007
Mensajes: 100
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Consejos para Sniffer de Red

Gracias,

Trataré de visitarlo.

Saludos
  #7 (permalink)  
Antiguo 18/06/2012, 19:45
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Respuesta: Consejos para Sniffer de Red

Hola.. soy nueva aqui.. la otra vez he puesto un nuevo tema y nadie me respondio..
asi que respondo con una pregunta..
tengo un trabajo de la facultad en donde me piden realizar un sniffer con llamadas al sistema, es esto loq me descoloca un poco, y la verdad no tengo mucha practica en el tema..tener modos de captura.. y los usuarios tienen que poder ingresar tipo de socket tcp o udp, y un puerto..
el main de lo que he hecho hasta ahora..

int main()
{ //desde ak
int MYPORT;
struct sockaddr_storage their_addr;
socklen_t addr_size;
struct addrinfo hints, *res;
int new_fd, data_size;

// Primero cargar la estructura de las direcciones con getaddrinfo():
memset(&hints, 0, sizeof hints); //poner en cero la estructura
hints.ai_family = AF_UNSPEC; // usa IPv4 o IPv6
hints.ai_socktype = SOCK_STREAM; //
hints.ai_flags = AI_PASSIVE; // para llenar el ip con localhost
//en null va llenar con localhost en myport uno que el usuario ingrese
getaddrinfo(NULL, MYPORT, &hints, &res);

// hacer el socket, bind y escuchar en el:
//crea un socket que sera el que monitorea los paquetes
//primer parametro indica que el socket es de red
//segundo parametro se puede indicar si es orientado a la conexion o no..
//tercer parametro indica el protocolo que queremos utilizar
sock_raw = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
//si es menor a cero no se puede crear el socket
if(sock_raw < 0)
{
printf("Error al crear el Socket\n");
return 1;
}
int rc = bind(sock_raw, res->ai_addr, res->ai_addrlen);
if(rc < 0)
{
printf("Error al conectar..\n");
return 1;
}
int escucha = listen(sock_raw, limit_time);
//si es menor a cero no se puede escuchar
if(escucha < 0)
{
printf("Error al realizar listen..\n");
return 1;
}

// aceptar conexiones entrantes:
addr_size = sizeof their_addr;
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &addr_size);
//si es menor a cero no se puede aceptar nuevas conexiones
if(new_fd < 0)
{
printf("Error al aceptar la conexion \n");
return 1;
}
//hasta ak

//se define un char buffer con una reserva en memoria de 65536
//el tamanho es debido a la cantidad max de informacion que puede manejar TCP
unsigned char *buffer = (unsigned char *)malloc(65536); //Its Big!
//log.txt nombre del fichero
//"w" : abrir un archivo para escritura, se crea si no existe o se sobreescribe si existe.
logfile=fopen("log.txt","w");
//si logfile devuelve nulo no se puede crear el archivo log
if(logfile==NULL) printf("No se pudo crear el archivo log");
printf("Iniciando...\n");

while(1)
{

/*Esta funcion recibe para el socket "sock_raw" una serie de datos que almacena en el array del parámetro buffer.
*El parámetro long_msj "65536" indica el tamaño del parámetro anterior. Una recepción normal de datos un 0.
*Esta función devuelve el número de bytes recibidos si todo ha ido bien, y SOCKET_ERROR si se ha producido un fallo al enviar.
*/
data_size = recv(int sock_raw, buffer, 65536, 0);
if(data_size <0 )
{
printf("Recv error , Fallo al recibir el paquete...\n");
return 1;
}
//Se procesa el paquete
//Se le envia lo recibido que esta almacenado en buffer y el tamnho de bytes recibidos
ProcessPacket(buffer , data_size);
}
close(sock_raw);
printf("Finalizado");
return 0;

}

si me pueden ayudar porfa, estoy yendo por buen camino...
  #8 (permalink)  
Antiguo 18/06/2012, 19:59
 
Fecha de Ingreso: mayo-2012
Mensajes: 3
Antigüedad: 12 años
Puntos: 0
Respuesta: Consejos para Sniffer de Red

la especificacion del trabajo
Escribir una aplicación sniffer en modo usuario para Linux. El sniffer debe permitir capturas de
por lo menos dos protocolos y desplegarlo en la consola de salida. Para el caso de protocolos
TCP y UDP se debe poder especificar el puerto origen y destino. La aplicación deberá utilizar
llamadas de sistemas para realizar la captura de datos de la red.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.