Edición del número de serie

19

En el foro oficial de raspberrypi.org , "Dom" - un moderador escribió:

He falsificado mi placa para tener su número de serie

¿Cómo edito el número de serie de una Raspberry Pi?

Otro simon
fuente
55
1. ¿Por qué? Por qué no? ¿No es el aprendizaje de las cosas el punto principal del PI?
Otro Simon
44
2. Volver a robar: mi tiempo vale más que las 2 libras que ahorraría, pero estoy seguro de que te referías al genérico "Tú"
Otro Simon
3
3. Dom no es mágico, pero es muy eficiente. ¿Utilizó una versión Pi del antiguo disquete de arranque de setsys de HP, o escribió datos en uno de los pines GPIO, o alguna otra cosa? Esa es mi pregunta
Otro Simon
3
Actualicé mi respuesta y agregué una disculpa. No estamos aquí para discutir la moralidad de las cosas. Estamos aquí para hacer preguntas y obtener respuestas. También vota porque es una muy buena pregunta.
Vincent P
2
¿Por qué no compilar un núcleo personalizado que devuelve la serie que desee /proc/cpuinfo? Sin embargo, no estoy seguro de si eso ayudaría con los blobs del decodificador ..
oberstet

Respuestas:

9

Estoy copiando esto de este hilo del foro .

Dom tiene acceso a todo el código fuente, el depurador de Videocore y muchas herramientas específicas de VC cerradas. Y la publicación de cualquier información que le permita cambiar el número de serie rompería el mecanismo para la concesión de licencias de códec, por lo que nunca sucederá.

Además según lo publicado en el hilo. La única razón para cambiar la serie sería copiar la licencia MP4 de otra persona y usarla. Como esa es la seguridad en torno a la licencia. Su serie única está vinculada a la licencia MP4, por lo que incluso si alguien obtuvo su clave de licencia, no podrán hacer nada con ella (a menos que puedan cambiar el número de serie de la Raspberry Pi).

ACTUALIZACIÓN: Para responder a la pregunta real. Yo diría que como Dom tiene la fuente del firmware real de bajo nivel. Me imagino que realmente solo está cambiando el código fuente que lee el serial y lo obliga a devolver un valor diferente. Sinceramente, dudo que se haya cambiado realmente (en la CPU, quiero decir), más como si hubiera cambiado parte del código de firmware para devolver una serie diferente. También disculpas al autor de la pregunta, todos le dimos un "¿Por qué? Eso no es bueno. Su robo" en lugar de responder la pregunta. Culpa mía.

Vincent P
fuente
2
Gracias por sus disculpas y su intento de responder la pregunta. "Me imagino que él es ...", las respuestas de tipo son excelentes para fines de discusión, pero la respuesta aceptada tendrá la forma de "Se hace a través de la utilidad xyz que solo está disponible para los empleados de Broadcom ..." etc.
Otro Simon
2
Estoy un poco sorprendido de que la suposición de que el número de serie solo se cambie con fines nefastos es tan frecuente en un dispositivo Linux. Me gustaría cambiarlo a "¿por qué debería permitir que un tercero identifique mi sistema de forma exclusiva"? Lo veo como, entre otras cosas, un problema de privacidad. ¿Por qué? Ese es mi problema.
bobstro
6

En lo que respecta a los programas de espacio de usuario, es bastante fácil engañarlos y falsificar el contenido de casi cualquier archivo. Por ejemplo, suponga que un programa C está usando un /proc/cpuinfoarchivo para verificar el número de serie. El programa está protegido contra copias y está vinculado a la serie, y no tengo el código fuente. Sin embargo, todavía puedo correr strace program 2>&1 | grep cpuinfo, lo que revelará algo como:

open("/proc/cpuinfo", O_RDONLY) = 3

En este punto, puedo crear una pequeña biblioteca, cpuinfo.socon la siguiente función:

int open(const char *file, int flags) {
    static int (*real_open)(const char *file, int flags);
    if(!real_open) real_open = dlsym(RTLD_NEXT, "open");
    if(!strcmp(file, "/proc/cpuinfo")) file = "/tmp/cpuinfo";
    return real_open(file, flags);
}

Como puede ver, estoy verificando si el usuario de la biblioteca intenta abrir /proc/cpuinfo, en cuyo caso abro en su /tmp/cpuinfolugar.

Luego ejecutaré el programa original protegido contra copia como LD_PRELOAD=/path/to/cpuinfo.so program, y felizmente leerá mi archivo falso pensando que es /proc/cpuinfo, mientras funciona correctamente con el resto de los archivos.

Tenga en cuenta que si el software protegido contra copia incluye objetos del núcleo, será mucho más difícil engañarlo, ya que podría acceder al hardware directamente. Sin embargo, dicho software también solo funcionará con el núcleo para el que fue construido, lo que hace que sea poco práctico distribuirlo.

Dmitry Grigoryev
fuente