|
72
|
Programación / Programación C/C++ / problema con read() y open() C
|
en: 1 Octubre 2012, 05:39 am
|
¡Buenas a todos! Tengo un problemilla con el open y el read. Este es mi codigo. char * leeFichero(char * path){ char * datos=""; int f=0; int fileSize=100; f=open(path, O_RDONLY); if(!f) return 0; read(f,datos,fileSize); return datos; }
El caso es que el printf(datos) me sale vacio a pesar de que le paso un path correcto de un fichero con datos... Y otra cosa mas, ¿como puedo calcular el tamaño del fichero? porque he puesto fileSize=100 porque no sabia calcularlo xD Gracias, un saludo.
|
|
|
73
|
Programación / Programación C/C++ / Re: funcion getPayloadTcp() en C
|
en: 30 Septiembre 2012, 16:25 pm
|
Pues....haber supuestamente al hacer el printf(buffer); deberia imprimirme el paquete completo...se que lo va a imprimir mal porque va intentar imprimir en ascii todo el buffer, pero si el tamaño del bufer es de 208 bytes, deberia imprimirme 208 caracteres ascii. Pêro no es asi....cuando hago un printf(buffer) solo me imprime 7 caracteres: L���puܸ" Y esto no deberia ser asi porque la funcion rcevfrom(); me retorna 208 bytes. data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &saddr , (socklen_t*)&saddr_size);
Por tanto si data_size=208 pero al hacer un printf(buffer); no imprime 208 caracteres...es porque algo falla.....y no doy con ello...
|
|
|
74
|
Programación / Programación C/C++ / Re: funcion getPayloadTcp() en C
|
en: 29 Septiembre 2012, 22:50 pm
|
Uuuups! vaya fallo. otra cosa mas.... la variable buffer es un puntero a un malloc(). ¿Como puedo imprimir el contenido del malloc? ejemplo: int data_size=0; char * buffer =(char *)malloc(65536); data_size = recvfrom(sock_raw , buffer , 65536 , 0 , &saddr , (socklen_t*)&saddr_size); printf("data_size: %d\n", data_size ); printf("sizeof: %d\n",sizeof(buffer )); // sizeof strlen y datasize no son iguales....por que? printf("buffer: \n%s\n", buffer ); //aqui me imprime el puntero buffer, pero no el contenido del malloc
|
|
|
75
|
Seguridad Informática / Seguridad / Re: Protegerse de sniffers en red local
|
en: 29 Septiembre 2012, 20:58 pm
|
¡Buenas chatarrero!
Si estas usando wifi, no puedes protegerte ya que todos los que estan a tu alrededor estan recibiendo las ondas wifi te tu PC y por tanto cualquiera puede poner un sniffer y capturar tus paquetes porque todos estais en un MITM.
Si estas usando ethernet y tienes conexion directa con el router, para que alguien este sniffeando tus paqutes, primero tiene que hacer alguna tecnica de MITM (Main In The Middle). Esto se suele hacer con un arp-poison (aunque hay mas tecnicas). Asi que para detectar un arp-poison puedes abrir un sniffer como wireshark y ver si estas recibiendo muchas tramas arp muy rapido, si es asi, entonces alguien te esta haciendo un arp-poison para poder sniffear tus paquetes.
Tambien creo que con nmap hay un tipo de escaneo que te permite ver si una tarjeta de red esta en modo monitor para sniffear, asi que puedes hacer ese escaneo con la ip que crees que te espia, y si decteta que esta en modo monitor, entonces es posible que te este espiando.
Un saludo.
|
|
|
76
|
Programación / Programación C/C++ / Re: funcion getPayloadTcp() en C
|
en: 29 Septiembre 2012, 18:32 pm
|
¡Buenas 0xDani ! He probado con un malloc y diclarandome la variable datos como un array de caracteres, y de ambas formas no me da fallo de segmentacion. El tema esta en que la variable datos se queda vacia, cuando deberia contener datos de la capa de aplicacion. char* getPayloadTcp(char* buffer){ int i=0; int f=0; int longitud=sizeof((char*)buffer); //tamaño total del paquete (tambien he probado con strlen(buffer)) struct iphdr *iph = (struct iphdr *)(buffer + sizeof(struct ethhdr)); int iphdrlen = iph->ihl*4; //tamaño de la cabecera ip int ethhdrlen= sizeof(struct ethhdr); //tamaño de la cabecera ethernet int tcphdrlen= sizeof(struct tcphdr); //tamaño de la cabecera tcp int totalhdrlen=(tcphdrlen + iphdrlen + ethhdrlen); //suma de todas las cabeceras char *datos =(char *) malloc(65565); printf("cabecera: %d\npaquete: %d\n",totalhdrlen , longitud ); for(f=totalhdrlen;f<longitud;f++){ datos[i]=buffer[f]; i++; } datos[i]='\0'; return datos; }
He hecho unos printf() de la variable totalhdrlen y de longitud y el resultado es 54 y 4 respectivamente....Cuando en realidad longitud deberia ser siempre mayor que totalhdrlen...algo debo estar haciendo mal...
|
|
|
77
|
Programación / Programación C/C++ / Re: funcion getPayloadTcp() en C
|
en: 28 Septiembre 2012, 01:05 am
|
Estoy probando ha hacer lo siguiente, pero no me sale bien....me da fallo de segmentacion char* getPayloadTcp(char* buffer){ int i=0; int f=0; int longitud =strlen((char*)buffer ); //tamaño total del paquete struct iphdr *iph = (struct iphdr *)(buffer + sizeof(struct ethhdr)); int iphdrlen = iph->ihl*4; //tamaño de la cabecera ip int ethhdrlen= sizeof(struct ethhdr); //tamaño de la cabecera ethernet int tcphdrlen= sizeof(struct tcphdr); //tamaño de la cabecera tcp int totalhdrlen=(tcphdrlen + iphdrlen + ethhdrlen); //suma de todas las cabeceras char * datos=""; for(f=totalhdrlen;f<longitud;f++){ datos[i]=buffer[f]; i++; } datos[i]='\0'; return datos; }
|
|
|
78
|
Programación / Programación C/C++ / funcion getPayloadTcp() en C
|
en: 28 Septiembre 2012, 00:14 am
|
¡Buenas a todos! Necesito hacer una funcion que me permita sacar el payload (campo de datos) de un paquete TCP. La funcion seria asi.... char * getPayloadTcp(char* buffer){ //separar la cabecera del campo de datos.... //¿como puedo hacer esto? no quiero codigo, solo el nombre de funciones que me permita hacerlo return payload; }
Estoy trabajando con C en linux. Un saludo.
|
|
|
79
|
Programación / Programación C/C++ / Problema de asignacion (diferentes tipos)
|
en: 26 Septiembre 2012, 02:02 am
|
¡Buenas a todos! Tengo un problemilla con una asignacion. char * pathGroup[8]; // variable global int funcion(char * paths[8]){ pathGroup=paths; // el error esta aqui. // resto del codigo................. return 0; }
Y el error reportado por gcc es: incompatible types when assigning to type ‘char *[8]’ from type ‘char **
¿Como puedo hacer esa asignacion correctamente?
|
|
|
80
|
Foros Generales / Dudas Generales / Re: Autor y herramientas hacker
|
en: 24 Septiembre 2012, 08:11 am
|
Y sobre FOCA ¿que opinan?, los autores han hecho un herramienta un tanto peligrosa y ellos se han presentado al mundo como si nada...Quizas el anonimato es mas para las personas que utilizan las herramientas hacker que para los programadores de estas herramientas, al fin y al cabo, programando una herramienta hacker demuestras tus dotes como informatico. En cambio si eres un usuario de dicha herramienta eso si que ya puede ser un problema y entiendo que el usuario prefiera mantenerse en el anonimato. Pero creo que los programadores no tienen problema, si fuera un problema programar aplicaciones hacker, no habria paginas (como FOCA) para descargar dichas herramientas ¿no?
¿ustedes que opninan?
|
|
|
|
|
|
|