/* This simple program changes the mac address of an interface for linux code by dr_fdisk dr_fdisk@raza-mexicana.org w w w . r a z a - m e x i c a n a . o r g */ #include #include #include char mac[6]; char maca[17]; struct ifreq interfaz; int i,eaea; void main(int argc , char *argv[]) { if (argc<3){ printf("MACFUCK by dr_fdisk^ (dr_fdisk@raza-mexicana.org)\n"); printf("=================================================\n"); printf("uso:%s interfaz mac-address\n",argv[0]); printf("ex:%s eth0 AA:AA:AA:AA:AA:AA\n",argv[0]); exit(0);} if (!(2[argv[2]] == ':' && 5[argv[2]] == ':' && 8[argv[2]] == ':' && 11[argv[2]] == ':' && 14[argv[2]] == ':' && strlen(argv[2]) == 17 )){ printf("La Mac que ingreso no es valida!\n"); printf("Ingresala en este formato: XX:XX:XX:XX:XX:XX\n");exit(0);} for(i = 0; i < 6; i++) i[mac] = (char)(strtoul(argv[2] + i*3, 0, 16) & 0xff); eaea = socket(AF_INET, SOCK_DGRAM, 0); if (eaea < 0){ perror("socket"); exit(1);} sprintf(interfaz.ifr_name, "%s",argv[1]); if (ioctl(eaea, SIOCGIFHWADDR, &interfaz) < 0){ perror(interfaz.ifr_name); exit(1);} for(i = 0; i < 6; i++) i[interfaz.ifr_hwaddr.sa_data] = i[mac]; if (ioctl(eaea,SIOCSIFHWADDR,&interfaz) < 0){ printf("No puedo cambiar la mac, revisa si %s, esta levantada\n",argv[1]); perror(interfaz.ifr_name); exit(1);} printf("EAEA!\nLa MAC actual es: "); for (i = 0; i < 6; i++){ printf("%2.2x:", i[interfaz.ifr_hwaddr.sa_data] & 0xff);} printf("\n"); close(eaea); }