Postar resposta

Observação: Este post não será mostrado enquanto não for aprovado por um moderador.

Nome:
Email:
Assunto:
Ícone de mensagem:

Verificação:
Escreva as letras mostradas na imagem
Escutar as letras / Pedir uma nova imagem

Escreva as letras mostradas na imagem:
Escreva "convidado" (sem as aspas) na caixa ao lado (ou abaixo).:

atalhos: pressione alt+s para enviar ou alt+p para pré-visualizar


Resumo do Tópico

Enviado por: ygor.almeida
« Online: Outubro 24, 2009, 12:37:27 am »

Apenas se for para ajudar.

Eu ainda tenho um Player DVP5990 Lacrado com uma firmware original da Philips - alguém precisa da firmware original de um player que nunca foi alterado nada !?

Eu me habilito a extrair a firmware com o cabo se alguém for precisar para algum estudo ou mesmo para tentar recuperar o do Rafa.

Basta me dizer qual o programa preciso e qual o procedimento para ter 100% de certeza que a firmware esta OK.

Att
Enviado por: Jefferson
« Online: Outubro 03, 2009, 10:15:31 am »

Mais sobre como as chaves HDCP podem estar presentes nos aparelhos.

http://focus.ti.com/lit/an/slla131/slla131.pdf
A respeito de componentes da Texas Instruments para interfaces DVI
Citar
...For proper HDCP operation, the TFP501 must have appropriate keys loaded in an external
EEPROM and encrypted by the device.

18. Do I need an EEPROM for HDCP keys with the TFP510?
The TFP510 has a provision to use keys stored elsewhere in memory and sent to it. The
keys are still encrypted uniquely to the device. See related documents for more details.

17. Should I write protect the HDCP key EEPROM?
Yes. The TI device will read from the EEPROM, check an indicator value and decide
whether to read and use the keys stored there or encrypt them. There is only 1 64 bit value
of the indicator which will cause the device to re-write the EEPROM. Improper write to the
EEPROM by the device is unlikely, however, the EEPROM could possibly interpret power
transients as a write command and alter its memory. Write protecting the EEPROM is
advised after the TI device has encrypted the keys.


19. Do I need an EEPROM for HDCP keys with the TFP501?
Yes, the TFP501 has no other user interface over which keys can be transferred.

20. How does the TI device differentiate between the key EEPROM and other I2C EEPROMs
in the system?
The TI devices use an isolated I2C bus for the EEPROM load. The device is always bus
master, but talks to the EEPROM only at a well defined time after reset, so access to the
EEPROM for factory programming or re-programming is easy
.

O que isso nos diz:

  • As chaves podem estar aparentemente expostas no firmware ou em EEPROM, mas provavelmente (se o fabricante não for idiota) estão criptografadas por processo conhecido apenas pelo chip que as lê. Isso confirma minha teoria de alguns posts atrás;
  • Mesmo que o fabricante grave as chaves do jeito que as recebeu alguns chips tem a capacidade de ao perceber isso criptografar o bloco automaticamente;



Manual de serviço da TV VIZIO L30WGU
http://buttfuzz.net/downloads/tv/vizio_l30wgu_service_manual.pdf

Citar

HDCP Keys EEPROM
The SiI 169 comes pre-programmed with a production set of HDCP keys in its internal EEPROM. In
this way the keys are provided the highest level of protection as required by the HDCP specification.
Silicon Image manages all aspects of the key purchasing and programming. There is no need for the
customer to purchase HDCP keys from the licensing authority. For security reasons, the keys cannot
be read out of the device.
Samples of the SiI 169 are available with the B1 public keys as listed in the back of the HDCP
specification. These are marked with a -PUB part number as noted in the Ordering Information
section. Make sure to request either “Public” or “Production” keys when requesting samples. Before
receiving samples of the SiI 169 with production keys a customer must have signed the HDCP
license agreement.

Essa era a única possibilidade que eu conhecia, antes de "me tocar" para a possibilidade de uma segunda camada de criptografia: o chip já vem pré-fabricado com as chaves não havendo como um hacker comum ter acesso a elas (piratas em escala industrial tem seus meios). No caso do chip acima existe uma EEPROM interna que provavelmente só pode ser acessada com ferramentas do fabricante. Isso evita o enorme custo associado a gravar chaves diferentes em cada chip direto na pastilha de silício. Usando uma EEPROM interna o fabricante do chip pode gravar as chaves depois da criação da pastilha e em seguida "cortar" (física ou logicamente) o acesso externo à EEPROM.

Só para dar uma idéia de como pode ser difícil ler algo quando o fabricante não dá acesso externo, somente após 10 anos alguém conseguiu fazer um "dump" da boot ROM do Gameboy Color.
Enviado por: Jefferson
« Online: Outubro 01, 2009, 06:04:19 pm »

No momento só quem está habilitado a fazer isso é o Rafa, porque ele tem um aparelho que sabidamente perde o HDMI sem o tal bloco (os meus até agora são imunes).

Quase consegui um aparelho para fazer testes.

Remontei meu DVP5960 (que não é exatamente meu, mas o dono deixou comigo há anos dizendo que pediria se um dia precisasse) e testei o HDMI. Como eu esperava, não deu imagem no meu monitor e verifiquei (pela analógica) que o menu HDMI estava desabilitado. Instalei via serial o firmware completo para DVP5960/37 e o menu foi habilitado, mas eu não posso escolher a resolução (fica em AUTO). O monitor fica piscando como se estivesse tentando combinar a resolução com o player, mas não chegam a um acordo e não dá imagem nunca.

Sem imagem, qualquer teste que eu faça só me dará uma meia resposta, mesmo me baseando pelo menu HDMI.
Enviado por: rictad
« Online: Outubro 01, 2009, 03:45:54 am »

Segundo a especificação,  cada Blu-ray player do mercado possui uma "revocation list" com todas as KSV revogadas.

Pior ainda: Os discos de blu-ray foram projetados para conter atualizações de firmware e da revocation list para cada blu-ray player do planeta. E essa atualização é do tipo "mandatory". Ou seja: você compra um disco blu-ray novo, bota prá assistir e de repente pode ocorrer uma de duas coisas:

1) Seu player comprometido é atualizado e não pode mais reproduzir discos piratas.
2) Seu receiver comprometido (a TV ou outro dispositivo que você tenha no caminho) não autentica mais com o player.
:o  :o
Então está explicado! Mas isso no Brasil ia dar problemas, pois viola nossas leis de defesa do consumidor. Daria um monte de processos. Parece filme americano, quando a pessoa está com o cartão de crédito expirado ou bloqueado: o atendente da loja pega o cartão e quebra. :laugh: Lá isso é permitido, aqui não.

Para mim, a lógica deveria ser a seguinte: se o fabricante tivesse sua licença revogada, ficaria impedido de produzir novos modelos com aquela HDCP key e teria seus estoques apreendidos. Já seria uma dura pena a ele. Mas os modelos que foram vendidos, foram vendidos com a licença ainda válida para o consumidor final, que não teria nada a ver com isso. Mas as leis autorais e de patentes americanas são terríveis para o consumidor final... ::)

Porém basta fazer um simples checksum para invalidar todo o bloco e dificultar o intercâmbio de chaves entre modelos. É facílimo para o firmware fazer essa verificação.

É, acho que deve ter checksum mesmo.
Enviado por: Jefferson
« Online: Outubro 01, 2009, 03:38:09 am »


E isso dá para saber se alguém que perdeu sua HDMI só conseguir fazê-la funcionar com o HDCP block do seu modelo.

Não, não é isso. O objetivo de criptografar o "HDCP block" é apenas evitar que as chaves sejam expostas. Um hacker teria que descobrir a criptografia da Mediatek antes de poder considerar aquilo um conjunto de "HDCP keys" válido e passar para a próxima fase. A chave de criptografia da Mediatek poderia ser a mesma, sempre, desde que estivesse embutida no chip.

Então, mesmo que a Mediatek aplique sua própria criptografias às chaves, um bloco de um modelo pode funcionar em outro modelo.

Porém basta fazer um simples checksum para invalidar todo o bloco e dificultar o intercâmbio de chaves entre modelos. É facílimo para o firmware fazer essa verificação.
Enviado por: Jefferson
« Online: Outubro 01, 2009, 03:28:41 am »

Agora aqui eu fiquei confuso. Você está dizendo que cada Blu-ray sai de fábrica com informações sobre a licença HDCP de cada modelo de aparelho que ele pode rodar? Ou pelo menos com a informação das licenças revogadas? Só assim ele pode "saber" se o HDCP key do aparelho é válido.

Segundo a especificação,  cada Blu-ray player do mercado possui uma "revocation list" com todas as KSV revogadas.

Pior ainda: Os discos de blu-ray foram projetados para conter atualizações de firmware e da revocation list para cada blu-ray player do planeta. E essa atualização é do tipo "mandatory". Ou seja: você compra um disco blu-ray novo, bota prá assistir e de repente pode ocorrer uma de duas coisas:

1) Seu player comprometido é atualizado e não pode mais reproduzir discos piratas.
2) Seu receiver comprometido (a TV ou outro dispositivo que você tenha no caminho) não autentica mais com o player.

Eu li em algum lugar que para evitar que um hacker comprometa um modelo e isso vitimize todos os compradores do mesmo modelo, cada aparelho no mundo tem uma KSV própria.

Mas a realização disso é ainda mais difícil de entender que cada modelo no mundo com uma KSV distinta.

Enviado por: rictad
« Online: Outubro 01, 2009, 03:09:21 am »

Só faria algum sentido para mim se de alguma forma esse "HDCP block" estiver também criptografado por uma rotina embutida no chip MT1389.

E isso dá para saber se alguém que perdeu sua HDMI só conseguir fazê-la funcionar com o HDCP block do seu modelo.

Ainda não sabemos sequer se o "HDCP block" da LG fica no mesmo endereço. Nunca vimos um firmware LG "completo".
Se tudo o mais estiver certo, pode ser que o firmware faça alguma espécie de checksum no bloco.

Isso é mais fácil que a criptografia! Pode ser isso. Mas só com o teste citado anteriormente para saber...

1) Não faz nenhum sentido revogar a licença de um DVD player, porque ele vai continuar funcionando com o hardware que foi fabricado antes de sua licença ser revogada. Faz sentido em um Blu-ray player, porque o aparelho deixará de ser capaz de reproduzir discos novos. É possível até desabilitar o aparelho por comando de um programa no disco blu-ray, para que não possa reproduzir mais nada.

Agora aqui eu fiquei confuso. Você está dizendo que cada Blu-ray sai de fábrica com informações sobre a licença HDCP de cada modelo de aparelho que ele pode rodar? Ou pelo menos com a informação das licenças revogadas? Só assim ele pode "saber" se o HDCP key do aparelho é válido.
Enviado por: Jefferson
« Online: Outubro 01, 2009, 03:04:26 am »


Considerando que a HDCP key do Philips 5990 não serviu no LG DV397H do rictad, será que essa tal HDCP key tem que ser específica para cada modelo?

Ainda não sabemos sequer se o "HDCP block" da LG fica no mesmo endereço. Nunca vimos um firmware LG "completo".

Se tudo o mais estiver certo, pode ser que o firmware faça alguma espécie de checksum no bloco.

No momento só quem está habilitado a fazer isso é o Rafa, porque ele tem um aparelho que sabidamente perde o HDMI sem o tal bloco (os meus até agora são imunes). Rafa poderia trocar o bloco dele por outro para ver se continua funcionando.

Não estou dizendo que ele deva fazer isso. É arriscado e ele precisa muito do HDMI de seu player.
Enviado por: Jefferson
« Online: Outubro 01, 2009, 02:56:51 am »


Ela até deve ser uma por modelo, devido à licença.

Isso está me deixando confuso. Segundo o que é dito no artigo na Wikipedia, cada modelo tem um conjunto de keys diferente, para que seja possível revogar a licença de apenas um modelo. Porém a revogação só faz sentido no caso de aparelhos de blu-ray, porque os discos blu-ray também fazem autenticação com o player.

1) Não faz nenhum sentido revogar a licença de um DVD player, porque ele vai continuar funcionando com o hardware que foi fabricado antes de sua licença ser revogada. Faz sentido em um Blu-ray player, porque o aparelho deixará de ser capaz de reproduzir discos novos. É possível até desabilitar o aparelho por comando de um programa no disco blu-ray, para que não possa reproduzir mais nada.

2) Do ponto de vista da fabricação é dificíl ter HDCP keys diferentes para cada modelo sem deixá-las expostas de alguma forma. Você não pode ter um chip HDMI (MT1392, PrismaClear) fabricado sob medida para cada modelo. Então o mais "fácil" é realmente essas HDCP Keys serem gravadas na flash ou em uma EEPROM (até mesmo numa PROM). Porém isso expõe as keys, violando a licença.

Só faria algum sentido para mim se de alguma forma esse "HDCP block" estiver também criptografado por uma rotina embutida no chip MT1389.

Enviado por: rictad
« Online: Setembro 30, 2009, 10:04:45 pm »

Eu não me disponho a fazer isso. Pelo menos não agora. Esse aparelho fica totalmente inútil pra mim sem HDMI (o meu display não tem outra entrada compatível com o DVP5990). Estou com medo de escrever na FLASH dele via serial, apesar de já ter entendido que, pela lógica, eu não corro risco, pois poderia ter a FLASH do jeito que está, mas tenho medo igual. Talvez o buraco seja mais embaixo.
É, eu entendo. Por isso disse "cuidado" :angel:. Nunca se sabe... :laugh:

Considerando que a HDCP key do Philips 5990 não serviu no LG DV397H do rictad, será que essa tal HDCP key tem que ser específica para cada modelo? Só podemos ter certeza disso se alguém que possue um LG DV397H com chip MT1389S extrair o firmware por cabo para fazer essa doação para o rictad, e talvez assim finalmente consertar sua HDMI.  ;D Se mesmo assim não der certo, o mistério continuará...

Ela até deve ser uma por modelo, devido à licença. Mas não acho que precisaria ser diferente para funcionar, pela regra da criptografia. A não ser que essa HDCP key que estamos vendo ainda é mesclada com algum valor de identificação do hardware. Neste caso, teremos uma única funcional por modelo.

Difícil é achar outro proprietário do LG DV397H MT1389S disposto a fazer o cabo. A HDMI não está me fazendo falta, pois a Vídeo Componente não deixa nada a desejar. Além disso, a única entrada HDMI da minha TV está ligada a um STB :). Mas a curiosidade para saber se tinha uma HDCP key naquele endereço (ou em outro lugar) é grande.

EDIT: Consegui apagar a FLASH inteira usando o MT1389 Flasher. Era uma limitação do MTKTool, então. Além disso, mesmo com o driver prolific do Windows, a gravação é tão rápida quanto com MTKTool no Linux (via Wine), usando módulo pl2303 (uns 3 minutos).
Enviado por: zeurt
« Online: Setembro 30, 2009, 09:10:29 pm »

A HDCP key do Philips 5990 do Rafalibrenz está presente no firmware extraído por cabo (no mesmo endereço #1FFC00), e não está presente no firmware oficial da Philips (conforme esperado). A HDCP key é diferente da HDCP key do outro firmware do 5990/37 extraído por cabo (enviado pelo jmaraujo).

Considerando que a HDCP key do Philips 5990 não serviu no LG DV397H do rictad, será que essa tal HDCP key tem que ser específica para cada modelo? Só podemos ter certeza disso se alguém que possue um LG DV397H com chip MT1389S extrair o firmware por cabo para fazer essa doação para o rictad, e talvez assim finalmente consertar sua HDMI.  ;D Se mesmo assim não der certo, o mistério continuará...
Enviado por: rafalibrenz
« Online: Setembro 30, 2009, 09:09:05 pm »

Mas você atualizou via CD ou pen drive, certo?
Sim. Hoje eu só escrevi na FLASH uma vez, quando coloquei o firmware oficial via USB. O teste da HDMI no final do processo foi para ter certeza que não havia ocorrido algum tipo de esquesitice eletro-magnética nociva à saúdo do aparelho durante o manuseio do aparelho.

Tenta atualizar via serial com o firmware original para ver se HDMI ainda funciona. Se não funcionar, você tem o conteúdo extraído para deixar sua FLASH como antes. Mas... cuidado...  ;)
Eu não me disponho a fazer isso. Pelo menos não agora. Esse aparelho fica totalmente inútil pra mim sem HDMI (o meu display não tem outra entrada compatível com o DVP5990). Estou com medo de escrever na FLASH dele via serial, apesar de já ter entendido que, pela lógica, eu não corro risco, pois poderia ter a FLASH do jeito que está, mas tenho medo igual. Talvez o buraco seja mais embaixo.

Jmaraujo, você comentou que tinha usuários no seu fórum que perderam a HDMI do DVP5990, né? Avise eles que eu fiz a extração do firmware totalmente funcional via serial, acho que eles vão gostar de saber.
Enviado por: rictad
« Online: Setembro 30, 2009, 08:08:31 pm »

Testei a HDMI do DVP5990 depois de tudo isso e continua ok.

Mas você atualizou via CD ou pen drive, certo? Tenta atualizar via serial com o firmware original para ver se HDMI ainda funciona. Se não funcionar, você tem o conteúdo extraído para deixar sua FLASH como antes. Mas... cuidado...  ;)
Enviado por: rafalibrenz
« Online: Setembro 30, 2009, 07:37:37 pm »

Depois de horas de vai-e-vem, consegui extrair o firmware do DVP5990.

Um pouco de história:

Primeiro não achei a serial. Aí o Jefferson me deu as dicas aqui no tópico e eu fui lá com o multímetro e constatei que o que eu achava que era a serial, era mesmo! Aí outro problema: meu conector do "o cabo" não encaixava no conector da serial. Tive que encontrar um (tirei de um cabo de áudio de drive de CD, que tinha uma das pontas duplas. A branca foi a que serviu) e trocar a ponta do meu cabo. Feito isso, testei o cabo (queria ter certeza se havia ligado certo o GND, TX e RX) com o DVP5980 antes de metê-lo no DVP5990. Leu direitinho a flash.

Aí fui pegar o firmware oficial do DVP5990 no site da Philips. Não consegui. Minha internet está maluca hoje à tarde. Então minha irmã, que mora bem longe, baixou o arquivo e me mandou por e-mail. Aí beleza: atualizei o firmware para a versão oficial. Testei. Tudo certo. Aí fui ler o firmware pela porta serial... E o programa (Mtk Flasher) não reconheceu a flash. Lá vou eu, com as unhas, tirar o adesivo... ficou uma meleca... lá vou eu, com um paninho com álcool, limpar a meleca... Ok! Consegui ler!

O chip de memória FLASH do meu DVP5990 é o ESMT F49L160BA-70T.

Com um pouco de Google consegui isso:

0x8C,  0x49,  0x200000, 0x10000, 4, EFST(F49L160BA)

Foi só adicionar no arquivo INI e aí consegui ler a Flash.

Abri o arquivo extraído no MtkReMaker, e abriu direitinho, sem erros.

Testei a HDMI do DVP5990 depois de tudo isso e continua ok.

Ou seja: tudo certo! :)

Segue o arquivo oficial que usei e o extraído via serial.
Enviado por: rictad
« Online: Setembro 30, 2009, 05:28:03 pm »

Rictad,

A flash do seu aparelho (MXIC MX29LV160C) parece ser capaz de programação byte-por-byte. Isso não está absolutamente claro no datasheet. Mas uma coisa está clara (página 16):

Citar
Programming is allowed in any sequence and across
sector boundaries. A bit cannot be programmed from a
"0" back to a "1"
. Attempting to do so may cause the
device to set Q5 to "1", or cause the Data# Polling algo-
rithm to indicate the operation was successful. However,
a succeeding read will show that the data is still "0".
Only erase operations can convert a "0"  to a "1".

Isso significa que, de qualquer forma, sua flash não é exatamente "byte-programmable". A CPU pode até escrever em algum lugar onde previamente haviam "FF"s, mas não pode mudar esse valor a não ser usando um ciclo "copia, apaga, muda e cola".

Então é como eu cheguei a dizer. Aquele trecho a partir de #1F0000 deve ser copiado na memória, ter alguns bytes alterados e regravado no setor da FLASH após este ter sido apagado. Isso justifica alguns bytes #BB ainda sobrarem em meio aos modificados, já que essa FLASH não permite o erase por byte, só por setores (apesar de permitir gravar por bytes). Caso fosse uma tentativa de gravar os bytes individuais, o trecho ficaria errado. Por exemplo, o byte correspondente ao "M" da string "MT23" gravado em #1F0000 tem valor #4D, quem em binário é 01001101. Se tiver um #FF na posição, obviamente #4D pode ser gravado, alterando os bits 7, 5, 4 e 1 da posição de "1" para "0". Mas se tiver o #BB na posição, que em binário é 10111011, uma tentativa de gravar #4D na posição, resultaria em 00001001 = #09 (os bits "0" não podem ser mudados para "1"). Como isso não ocorre, temos certeza que o setor foi apagado antes.

E também está claro o porquê de não conseguir "apagar" o setor final, de 256 bytes. Esse setor é o único não apagado pelo erase do MTKTool. Mas é possível programá-lo. Depois de programá-lo com #BB, tentei programá-lo com #FF, mas está mais do que claro que isso é algo impossivel de se fazer nessas FLASH's (é o mesmo que tentar rodar os bits 0 de cada #BB para 1, algo feito apenas no erase). Agora, como programei com #00 esse setor final, será impossível gravar qualquer valor naquelas posições. Só se um dia conseguir um erase total. ;D