Esa es la gracia, que no había errores. Bueno gracias ivancea por esta aquí para ayudarme, odio esto de los tipos.
La verdad que lo conseguí solucionar de esta manera finalmente:
mac_adaptador = (u_char*)malloc(sizeof(u_char)* 6);
for (int i = 0; i < 6; i++)
mac_adaptador[i] = (u_char)(*adaptador)->Address[i];
Aunque tengo otra duda ahora, que es
¿como pasar de const u_char* a char*? he probado con prácticamente de todo, y he buscado lo que he podido y sigue sin dar resultado. He probado con:
pkt_data es un const char*, quiero pasarlo a cadena o mostrarlo caracter a caracter:
1: printf("%c", (char)(const_cast<u_char*>(pkt_data)[i]));
2: long a = (long)pkt_data[i];
//printf("%c", (char)a);
3: char* cadena=reinterpret_cast<char*>(const_cast<u_char*>(pkt_data))
Todas muestran basura, se supone que la tercera debería funcionar, pues const_cast pasa las variables de "const X" a "X", y luego una vez la tengo en u_char* sería pasarla a char* pero muestra basura y no funciona, eso sí todas las opciones compilan.
Edito: Aquí en una respuesta explica lo de el const_cast:
http://stackoverflow.com/questions/658913/c-style-cast-from-unsigned-char-to-const-charEdito: Más intentos fallidos:
printf("%s", (char*)const_cast<u_char*>(pkt_data));
//printf("%s", reinterpret_cast<char*>(const_cast<u_char*>(pkt_data)));
Salida:
p↑ï├'♠
Esto creo que funciona pero no obtengo en ASCII:
u_long MacAddr = (u_long)pkt_data;
BYTE *bMacAddr = (BYTE*)&MacAddr;
string res;
stringstream ss;
for (int i = 0; i < header->caplen; i++)
{
ss << hex << (int)bMacAddr[i];
res += ss.str();
ss.str("");
}
cout << res;
Reutilicé código del mismo proyecto XD, lo que pasa obtengo salidas como esta:
TAMAÐO : 1283
c2ee2cccccccccccccccc1000ccccccccccccccccc2ee2cccccccccccccccc6c12461ccccccccea4
745c10e4fd0b9881b010006cdffd0d07b1905810461c82ee16ce0fd034e2fd0060e77ecccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccacd1d1cccccccc6ce0
fd03551190000000004ce1fd034e2fd0060e77ecccccccccccccc0cccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccac
d1d1cccccccc4ce1fd025c1902ce2fd034e2fd0060e77ecccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccacd1d1cccccccc2ce2fd02e701a0ce3fd034e2fd00
60e77ecccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccca8
d1d1ccccccccce3fd0809f170ce4fd0c4e6fd0060e77eccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccc1072f1cccccccc1ce4fd0a84c1a0727d45cfce4fd0c
4e6fd0060e77eccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Ese mismo paquete, un HTTP con el wireshark (comprobe tamaños y los recogí a la vez) me sale en hexadecimal y en ASCII, yo aquí ¿estoy mostrando bytes? No entiendo, ¿como puedo hacer para obtenerlo en cadena decimal?
Saludos.