Editando número de série

19

No fórum oficial raspberrypi.org , "Dom" - um moderador escreveu:

Eu falsifiquei minha placa para ter seu número de série

Como edito o número de série de um Raspberry Pi?

Outro Simon
fonte
5
1. porque Por que não? Aprender as coisas não é o ponto principal do PI?
Outro Simon
4
2. Re roubar - o meu tempo vale mais do que os 2 libras eu salvar, mas eu tenho certeza que você entende o genérico "Você"
Outra Simon
3
3. Dom não é mágico, mas é muito qualificado. Ele usou uma versão Pi do disquete de inicialização antigo da HP setsys, ou gravou dados em um dos pinos do GPIO, ou algo mais? Essa é a minha pergunta.
Outro Simon
3
Atualizei minha resposta e adicionei um pedido de desculpas. Não estamos aqui para discutir a moralidade das coisas. Estamos aqui para fazer perguntas e obter respostas. Também voto a favor, pois é uma pergunta muito boa.
Vincent P
2
Por que não compilar um kernel personalizado que retorna o número de série que você gosta /proc/cpuinfo? Não tenho certeza se isso iria ajudar com bolhas decodificador embora ..
oberstet

Respostas:

9

Estou copiando isso deste tópico do fórum .

O Dom tem acesso a todo o código-fonte, ao depurador do Videocore e a muitas ferramentas específicas de VC fechadas. E liberar qualquer informação para permitir que você altere o número de série quebraria o mecanismo do licenciamento de codec, portanto nunca acontecerá.

Além disso, conforme publicado no tópico. O único motivo para alterar o serial seria copiar a licença MP4 de outra pessoa e usá-la. Como essa é a segurança em torno do licenciamento. Seu serial único está vinculado à licença MP4, portanto, mesmo que alguém tenha sua chave de licença, eles não poderão fazer nada com ela (a menos que possam alterar o número de série do Raspberry Pi.

ATUALIZAÇÃO: Para responder à pergunta real. Eu diria que, como o Dom tem a fonte do firmware de baixo nível real. Eu imagino que ele realmente está apenas alterando o código-fonte que lê o serial e forçando-o a retornar um valor diferente. Sinceramente, duvido que tenha sido realmente alterado (na CPU, quero dizer), mais como se ele tivesse alterado um pouco do código do firmware para retornar um serial diferente. Também pedimos desculpas ao solicitante, todos nós apenas demos a você um "Por quê? Isso não é legal. Seu roubo" em vez de responder à pergunta. Foi mal.

Vincent P
fonte
2
Agradecemos suas desculpas e sua tentativa de responder à pergunta. "Eu imagino que ele seja ..." as respostas do tipo são ótimas para fins de discussão, mas a resposta aceita deve estar na forma de "Isso é feito pelo utilitário xyz, disponível apenas para os funcionários da Broadcom ..." etc
Outro Simon
2
Estou um pouco surpreso que a suposição de que o número de série só seja alterado para fins nefastos seja tão prevalente em um dispositivo Linux. Gostaria de mudar para "por que devo permitir que terceiros identifiquem meu sistema exclusivamente"? Eu vejo isso como, entre outras coisas, um problema de privacidade. Por quê? Isso é da minha conta.
bobstro
6

No que diz respeito aos programas do espaço do usuário, é muito fácil enganá-los e falsificar o conteúdo de praticamente qualquer arquivo. Por exemplo, suponha que um programa C esteja usando o /proc/cpuinfoarquivo para verificar o número de série. O programa está protegido contra cópia e vinculado ao serial, e eu não tenho o código fonte. No entanto, ainda posso executar strace program 2>&1 | grep cpuinfo, o que revelará algo como:

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

Neste ponto, eu posso criar uma pequena biblioteca, cpuinfo.socom a seguinte função:

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 você pode ver, estou verificando se o usuário da biblioteca tenta abrir /proc/cpuinfo; nesse caso, eu abro /tmp/cpuinfo.

Depois, executarei o programa original protegido contra cópia como LD_PRELOAD=/path/to/cpuinfo.so program, e ele lerá felizmente meu arquivo falso, pensando que é /proc/cpuinfo, enquanto estiver trabalhando corretamente com o restante dos arquivos.

Observe que, se o software protegido contra cópia incluir objetos do kernel, será muito mais difícil de enganar, pois ele pode acessar o hardware diretamente. No entanto, esse software também funcionará apenas com o kernel para o qual foi construído, tornando a distribuição bastante impraticável.

Dmitry Grigoryev
fonte