-->

sexta-feira, 2 de fevereiro de 2007

Firmwares de DivX players - Possível revolução à vista

No último dia 18 um indiano, dizendo trabalhar para um fabricante de DVD players, deixou uma mensagem no grupo MT13x9 dizendo possuir o código fonte da CPU MT1369 e solicitando o código fonte da MT1389. Essa declaração dele, claro, foi recebida com desdém pela maioria e com desconfiança por uns poucos outros, porque jamais alguém havia posto os olhos no código fonte da Mediatek (até onde sei, de fabricante nenhum).

Isso deve ter atiçado silenciosamente a curiosidade de alguém porque hoje, para surpresa geral, um outro hacker da MT13x9 publicou o endereço de um site de onde poderia ser baixado o código fonte MT1389. Para minha surpresa, no mesmo site também podem ser baixados códigos-fonte de CPUs Zoran e Sunplus!

Eu dei uma olhada nas listagens, em C, e parecem genuínas. Um hacker do MT13x9 confirma que os programas MT1389 parecem legítimos.

[08/06] São legítimos. Isso já foi verificado pelos hackers do MT13x9.

Qual a importância disso? Toda!

Com a análise das listagens de código, o trabalho dos hackers do grupo OpenMTK pode ser muito acelerado e outros programadores que não conseguem entender assembly mas são bons em C podem entrar no jogo. Além disso, abre-se uma possibilidade agora para que surjam os primeiros hacks de Zoran e Sunplus do mundo.

Os arquivos:

mt1389d.rar - MT1389 - Contém o código fonte da seção 8032, alguns executáveis que podem ser parte do processo de montagem do arquivo de firmware e vários arquivos .bat que dão dicas de como o firmware é montado. Eu entendo muito pouco de microcontroladeres 8051, mas me parece que o compilador usado é um compilador comercialmente disponível, como o Keil . Se isso for verdade, os hackers poderão deixar de editar firmwares "na munheca" para construir firmwares do jeito que quiserem.

[08/06] Isso ainda não é possível, mas a leitura dos fontes está ajudando os hackers a fazer progresso em outras atividades.

sunplus-DVD.rar - Uma parte do código fonte em C da Sunplus.

zr882.rar - Parece ser o código fonte do Zoran 882. O arquivo está corrompido mas ainda é possível ver muita coisa.

8202ap-sh-ep-ba5954-0.rar - Arquivo .DSN (OrCAD) com o diagrama de um DVD player baseado em Sunplus 8200a.

8202S-16-SY-216-0-B.rar - Arquivo .DSN (OrCAD) com o diagrama de um DVD player baseado em Sunplus 8200s.

dc0_sch_v20.rar - Arquivo .DSN (OrCAD) com o diagrama de um DVD player baseado em Zoran 996.

8202s.rar - Código fonte de um firmware da CPU Sunplus 8202s (9.7MB)

8202a.rar - Código fonte de um firmware da CPU Sunplus 8202a (15MB).


[15/02] Os diagramas realmente são do OrCAD. Abri todos com a versão 9.

16 comentários:

  1. Eu não entendo nada de microcontroladores.

    Mas mesmo assim resolvi me arriscar e baixei o keil, e conseguir compilar o código, as únicas alterações que foi necessário fazer foi no makefile, já que o nmake da microsoft, não reconhecia a diretiva !elif, sendo necessário substituir por !elseif

    Colo abaixo o final da compilação...

    -----
    Program Size: data=160.5 xdata=573 code=165139
    LINK/LOCATE RUN COMPLETE. 35 WARNING(S), 0 ERROR(S)
    WARNING ONLY
    EVERY THING OK!!
    ------

    Fiz uma pesquisa na pasta para verifcar as datas de alterações e havia dois arquivos.bin com a data de hj.
    São eles o mlogo0.bin e o user4m.bin

    ResponderExcluir
  2. Fernando,

    Eu não entendo nada de C, nem instalei o Keil ainda para fuçar, mas pelo que eu pude ver no arquivo "mg79.bat", deveria ter sido criado um arquivo "target.bin" em algum lugar.

    Talvez você tenha feito a compilação, mas falte rodar o .bat certo para juntar todos os arquivos compilados em um firmware. Isso é feito com "merge.exe".

    ResponderExcluir
  3. Realmente faltou executar o mg79.bat,

    Depois disso foi gerado target.bin

    Como eu não sou doido pra testar isso no meu dvp5100 deixo o link pra baixa-lo no rapidshare, caso alguem queira se arriscar a deixo o link para baixa-lo

    http://rapidshare.com/files/14934393/target.bin.html

    Agora só não sei dizer se este firmware gerado é de algum player especifico, se algo mais generico que é entregue pras fabricantes de dvd.

    ResponderExcluir
  4. As chances de que funcione no DVp5100 são mínimas.

    Se você olhar o conteúdo de DO.BAT, DO_C.BAT e DO2.BAT, verá que é preciso chamar o NUI*.BAT com o parâmetro correspondente ao tipo de servo (loader) usado no seu player.

    Nem DO*.BAT nem NUI*.BAT parecem ser chamados de outros lugares, por isso parece ser necessário que o programador rode DO*.BAT nanualmente com o parâmetro correspondente ao loader *antes* de rodar MG79.BAT.

    Os parâmetros estão listados nos NUI*.BAT então não há segredo (temos Mitsumi, Hitachi, Sony, etc.). O problema é que não sabemos ainda qual o servo usado no DVP5100. Isso vai ter que sair por tentativa e erro.

    Esse é UM dos problemas. Um dos outros é inserir a tabela Philips de controle remoto e do display.

    Como você vê, a descoberta do código-fonte permite que até um programador amador como eu crie um firmware, mas para criar o firmware certo ainda é preciso descobrir outras coisas.

    ResponderExcluir
  5. Se você olhar no final de cada um NUI*.BAT, verá uma chamada

    rem call mg79.bat

    Então, "DO" vem antes de "MG" no processo de criação.

    ResponderExcluir
  6. E ainda é preciso ver o conteúdo dos 35 "Warnings" que o KEIL deu a você.

    ResponderExcluir
  7. Fernando,

    O firmware que você criou é pequeno demais para um DivX player. Certamente faltou inserir alguma coisa.

    O firmware do DVP5100 tem 1.3MB e o que você criou tem 0.5M.

    O ponto positivo é: o checksum está correto, então o procedimento está certo.

    ResponderExcluir
  8. Fernando,

    Se você não tiver o arquivo:
    .\custom\demo\userdata\user4m.bin

    Faltou fazer uma compilação. Eu acho que você precisa compilar
    .\custom\demo\makefile

    Lembre-se: não entendo nada de C. Isso são palpites meus baseados na análise dos arquivos.

    ResponderExcluir
  9. Aparentemente, ainda não é o KEIL o compilador usado por quem criou o "pacote".

    CLEAN.BAT faz uma referência a "MAKE"
    DL.BAT faz uma referência a "FLASHDL.EXE"

    Nenhum dos dois existe no KEIL C51

    O HI-TECH 8051 é uma alternativa que vou investigar.

    ResponderExcluir
  10. Ignore o que falei sobre o USER4M.BIN duas mensagens atrás. logo na sua primeira mensagem você disse que o arquivo foi criado.

    ResponderExcluir
  11. Fernando,

    Eu estou usando o NMAKE 1.50 da MS e modifiquei o MAKEFILE como você disse. O KEIL foi instalado em C:\C51 e eu criei uma variável de sistema C51PATH apontando para lá. Mas ao rodar NMAKE eu recebo a seguinte saída:


    Microsoft (R) Program Maintenance Utility Version 1.50
    Copyright (c) Microsoft Corp 1988-94. All rights reserved.

    O sistema não pode encontrar o caminho especificado.
    O sistema não pode encontrar o caminho especificado.

    NMAKE : fatal error U1073: don't know how to make 'config.h'
    Stop.

    Se eu usar NMAKE /D tenho:

    Microsoft (R) Program Maintenance Utility Version 1.50
    Copyright (c) Microsoft Corp 1988-94. All rights reserved.

    servo_lib target does not exist

    O sistema não pode encontrar o caminho especificado.
    O sistema não pode encontrar o caminho especificado.

    adac.c Mon Aug 09 17:37:50 2004
    version.h Mon Aug 09 17:41:42 2004
    general.h Mon Aug 09 17:37:54 2004
    typedef.h Mon Aug 09 17:37:58 2004
    config.h target does not exist

    NMAKE : fatal error U1073: don't know how to make 'config.h'
    Stop.

    E eu não estou entendo esse erro. Parece ser algo que ocorre na seção SERVO_LIB do makefile, mas isso é só suposição.

    ResponderExcluir
  12. Acabo de constatar que o HITECH 8051 8.0 também não tem os arquivos MAKE e FLASHDL.EXE

    ResponderExcluir
  13. OK. Descobri que quem cria config.h são os NUI*.BAT, mas agora dá erro reclamando de mt1369.h, mas o sistema não deveria estar passando por essa linha do makefile, porque qeremos compilar para MT1389!

    ResponderExcluir
  14. O make é utilitario, para fazer todo o trabalho de compilação automaticamente...
    http://pt.wikipedia.org/wiki/Make

    ops...esqueci tem que corrigir o makefile do \custom\demo\makefile

    outra coisa se der erro executa o clean.bat para limpar os .obj

    eu compilei executando do_c.bat

    outra coisa o flashdl.exe pode ser um utilitário, que não faz parte do keil.

    ResponderExcluir
  15. Outra coisa, eu mudei o nome do nmake para make, e coloquei ele no diretorio do c51/bin

    ResponderExcluir
  16. Consegui compilar. Obrigado!

    Eu havia cometido um erro besta: criei a variável SETPATH apontando para C:\C51 quando deveria apontar para C:\C51\C51

    Eu vou transferir toda a informação que está aqui e mais algumas coisas para o meu fórum, porque lá fica muito mais fácil organizar e formatar. Você não precisa se cadastrar lá, porque eu vou continuar acompanhando aqui também.

    Depois eu dou o endereço do tópico. Obrigado novamente!

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.