Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: C_1^N en 26 Noviembre 2012, 01:10 AM

Título: [C] Problema con ioctl para cambiar mac
Publicado por: C_1^N en 26 Noviembre 2012, 01:10 AM
Hola gente! Quiero cambiar la mac pero me da error Invalid Argument y no puedo saber por que..



int main(void)
{
struct ifreq net_dev;
int sockd;

if ((sockd = socket(PF_INET, SOCK_DGRAM, 0)) < 0){
perror("Socket");
exit(EXIT_FAILURE);
}

memset(&net_dev, 0, sizeof(net_dev));
memcpy(net_dev.ifr_name, "eth0", 4);

net_dev.ifr_hwaddr.sa_data[0] = (unsigned char) 0x00;
net_dev.ifr_hwaddr.sa_data[1] = (unsigned char) 0x11;
net_dev.ifr_hwaddr.sa_data[2] = (unsigned char) 0x22;
net_dev.ifr_hwaddr.sa_data[3] = (unsigned char) 0x33;
net_dev.ifr_hwaddr.sa_data[4] = (unsigned char) 0x44;
net_dev.ifr_hwaddr.sa_data[5] = (unsigned char) 0x55;

if (ioctl(sockd, SIOCSIFHWADDR, &net_dev) < 0){
perror("Ioctl");
close(sockd);
exit(EXIT_FAILURE);
}

printf("%s\n", net_dev.ifr_name);

        int i;

for (i = 0; i < 6; ++i)
printf("%02d:", (unsigned char) net_dev.ifr_hwaddr.sa_data[i]);
printf("\b \n");

close(sockd);

return 0;
}



Probe de bajar la interface pero siempre obtengo el mismo error..

Gracias de antemano!  :D