Muchas gracias por las respuestas!
Ahora ya parece claro cual es el fallo...
Lo que no tengo tan claro es como corregirlo, pero eso es otro tema, y cuestión de pensar un poco en esa DB.
Lo dicho, con esa lista, ahora ya sé por donde tirar.
En cuanto tenga el código, lo posteo por si fuera útil para alguien más.
Un saludo.
Lo dicho, por si le puede servir a alguien:
Al final usé el fichero OUI.list que hay en /usr/share/macchanger/
En este fichero están los 6 primeros bytes que especifican el fabricante, separados por espacios, junto con el fabricante en cuestión. Hacemos una copia del fichero y trabajaremos sobre la copia, a la que llamamos lista_de_macs:
# Solo nos interesan los 3 primeros campos (los 6 bytes)
# Además, sustituimos los espacios en blanco por ":"
cat OUI.list | cut -d " " -f 1,2,3 |sed 's/ /:/g' > lista_de_macs
# Podemos comprimir la lista de macs para ahorrar espacio, y leerla con zcat
tar zcvf lista_de_macs.tar.gz lista_de_macs
# Se lee una línea aleatoria.
# Para eso es necesario contar el número de líneas
numlineas=$(zcat lista_de_macs.tar.gz |wc -l)
# Obtenemos un número aleatorio entre 0 y el número de líneas
numaleatorio=$(($RANDOM%$numlineas))
# Se lee la línea $numaleatorio, y solamente esa (tail -1)
zcat lista_de_macs.tar.gz |head -$numaleatorio |tail -1
Y con esto ya tenemos media mac pseudoaleatoria.
Los otros 6 bytes restantes pueden ser completamente aleatorios, y así obtenemos una mac válida.
Gracias nuevamente!