Título: Estructura ARP a buffer unsigned char * Publicado por: ahkbar87 en 2 Febrero 2012, 22:08 pm Hola hackearianos maestros,
Perdón la ausencia no he ingresado mucho por trabajo aunque no me cuesta nada, igual me escuso, trataré de ayudar en lo que pueda, aunque siempre que se algún tema alguien los contesta, ni que decir Ethernal Idol un mostro. Esta está difícil, yo no comprendo que pasa el caso es el siguiente: tengo una estructura declarada de la siguiente manera, que son los campos de ARP. Código
y en el main tengo el siguiente código. Código
El problema es que al momento de pasar esta linea. memcpy( szBuff, &arp, sizeof(arp)); Los 0xffffffff asignados ( arp.spa.s_addr) no comienzan desde el indice 14 (szBuff[14]) como debería ser, si no que desde el 16. de antemano gracias. saludos! Título: Re: Estructura ARP a buffer unsigned char * Publicado por: rir3760 en 3 Febrero 2012, 00:53 am En una estructura los campos de esta no necesariamente están colocados uno inmediatamente después del otro (como sucede en el caso de los arrays).
Si es necesario para cumplir con los requisitos de alineación algunos bytes no se utilizan (eso se conoce como "padding"). Casi te puedo asegurar que el tamaño del tipo "in_addr" dado por "sizeof(in_addr)" es cuatro y de ahí que la siguiente posición libre utilizada y que debe ser múltiplo de ese numero es 16. Un saludo Título: Re: Estructura ARP a buffer unsigned char * Publicado por: ahkbar87 en 3 Febrero 2012, 01:28 am Gracias rir3760,
Estaba buscando el problema del padding en las estructuras, aún no se como solventar el problema, para que el padding no lo haga entre sha y spa: u_char sha[6]; // Aquí el compilador le agregar 2 bytes de padding. in_addr spa; ¿Sabes cual podría ser la solución? :) Título: Re: Estructura ARP a buffer unsigned char * Publicado por: ahkbar87 en 3 Febrero 2012, 01:44 am Llegue a la solución gracias por leer.
http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/2009-July/006339.html __attribute__ ((packed)) arp |