Hacking GVT/Vivo Sagemcom F@st 2764 GV (aka "Desbloqueio")

O firmware padrão entregue com esses dispositivos é totalmente "capado" pela operadora, não permitindo coisas simples como a operação em modo bridge, controle de firewall detalhado, entre outros.



No entanto todos estes recursos e alguns a mais (como compartilhamento através da USB de discos e impressoras) são suportados pelo dispositivo, estando apenas "ocultos" das mãos dos usuários. Alerta: o equipamento que você vai modificar pode, eventualmente, ser danificado. Desta forma, só execute o procedimento se o equipamento já é seu (existem dezenas à venda no ML, por exemplo).

 O meu objetivo era simples: queria colocar o equipamento em modo bridge para não precisar fazer NAT444 ao usar um access point Wifi decente.

Buscando na Internet existem várias referências a este dispositivo mas muitos deles apontam para a impossibilidade de executar os procedimentos de "desbloqueio" na versão 8480 (FAST2764_v8480). Para consultar a versão acesse a administração do equipamento (http://192.168.25.1 - admin, gvt12345) e verifique em "Sobre o Power Box". Possivelmente o procedimento aqui descrito serve para outras versões, mas não foi avaliado.

Para facilitar a sua vida, em relação aos posts na Internet, recomendo a olhada nesses que trazem informações úteis: 1, 2 , 3.

No entanto, nenhum deles dá todo o caminho das pedras e, no meu caso, eu não queria "inventar" muito c/ atualizações: só quero o modo bridge funcionando! :)

Para conseguir habilitar o modo avançado de configurações, verificando em outros fóruns, ficou claro que "só" precisava modificar o runlevel que o Linux executa no equipamento: no runlevel 4 tudo fica disponível.

Para ter acesso ao console serial você vai precisar de um conversor USB/Serial TTL, além de desmontar o equipamento. Aqui está a conexão que você precisa fazer no conector J101 da placa do equipamento: na sequencia da esquerda para a direita, conecte o GND, TX e RX:



A serial no host deve ser configurada em 8N1 e 115200bps. Ao dar o boot você verá algo mais ou menos assim:

SAGEM Secure-boot SU2_2_3 fast_2764

CPU: IKANOS Fusiv 180 Family
PCI:   33 MHz
DRAM:  128 MB
Flash: 32 MB
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   emac1

PHY 88e1119r detected at smi@0x1f
switch 88e6171 detected at smi@0x01
emac1

Permanent parameters are programmed and activated : use DSA signature
...
bootargs root=/dev/mtdblock6 ro rootfstype=squashfs operational_start=0xbe000000 rescue_start=0xbf080000 myfs_start=0xbeac0000 type=operational image_addr=0xBE000000
...
## Booting image at be000140 ...
   Image Name:   FAST2764_v8480.img
   Created:      2014-09-09  12:16:39 UTC
   Image Type:   MIPS Linux Kernel Image (gzip compressed)
   Data Size:    11227434 Bytes = 10.7 MB
   Load Address: 80010000
   Entry Point:  802e7000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

Starting kernel ...

Linux version 2.6.16.26 #1 Tue Sep 9 14:16:17 CEST 2014
...

Mas quando ele termina de carregar todo o sistema, você não tem um prompt de login: ele foi desativado :-/   Droga !

Bom, então vamos observar os detalhes para saber o que fazer. No início você vai encontrar as seguintes linhas:

Potential firmware found at address : be000000
Found 2 firmwares !
...
## Booting image at be000140 ...
   Image Name:   FAST2764_v8480.img

Ele encontrou dois firmwares para iniciar, o que é bem comum em sistemas embarcados Linux. Além do principal é comum haver o de "rescue" para emergências. Aqui já havia sido  reportado (apesar de versões diferentes) que o firmware "rescue" possuía o console habilitado, então vale a pena tentar.

A questão é como fazê-lo, já que o Uboot está configurado no dispositivo p/ não receber comandos. Bom, como o meu modem é "extra" (o da Vivo está conectado e não pretendo mexer nele), posso tomar atitudes mais extremas... Resolvi provocar um erro de leitura da flash durante a leitura do Uboot, assim o checksum não vai bater e vai forçar o carregamento do firmware "rescue". Apesar de existirem algumas formas de fazê-lo, vou no modo hard (mais rápido e arriscado): provocar um curto breve em algum dos pinos de endereçamento da flash (escolhidos os pinos 31 (A15) e 32 (A16) , no momento certo).

A chance disso queimar o processador ou a memória não é tão alto: tipicamente esses pinos possuem alta impedância de entrada e níveis baixíssimos de corrente. Mas é muito mais alto do que as operações normais, então você está por sua conta e risco! Desligue a energia, espere aparecer a mensagem
 
Verifying Checksum ...

e manda ver - basta um leve toque com uma pinça nos pinos, rapidinho (a flash é o único CI na parte de baixo da placa):





Se tudo der certo você verá uma mensagem diferente da primeira no que trata do checksum:


## Booting image at be000140 ...
   Image Name:   FAST2764_v8480.img
   Created:      2014-09-09  12:16:39 UTC
   Image Type:   MIPS Linux Kernel Image (gzip compressed)
   Data Size:    11227434 Bytes = 10.7 MB
   Load Address: 80010000
   Entry Point:  802e7000
   Verifying Checksum ... Bad Data CRC
alarmLEDMode(E_FLASH_RESCUE)!
Searching valid rescue firmware
Rescue Firmware validated at address bf080000
alarmLEDMode(E_BOOT_FLASH_RESCUE)!
recovery firmware at @0xBF080000 with key @0xBF0185A5 is OK
...
bootargs root=/dev/mtdblock5 ro rootfstype=squashfs rescue_start=0xbf080000 myfs_start=0xbf9c0000 myfs_size=0x00000000 type=rescue image_addr=0xBF080000
...
## Booting image at bf080130 ...
   Image Name:   FAST2764_v82P6.img
   Created:      2012-01-13  10:36:20 UTC
   Image Type:   MIPS Linux Kernel Image (gzip compressed)
   Data Size:    9631651 Bytes =  9.2 MB
   Load Address: 80010000
   Entry Point:  802e7000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK
Starting kernel ...

Linux version 2.6.16.26 #1 Fri Jan 13 11:36:08 CET 2012
argc 9 arg  env memsize=128


Voilá! Agora vamos ver como é o modo rescue. Para a minha surpresa é um firmware completo, na versão 82P6. Ele inicia os recursos como o outro e, inclusive, sincroniza no DSL e ativa o PPP. Continuamos, no entanto, com o mesmo dispositivo "capado" nas configurações web.

Mas parte do objetivo foi atingido: agora temos um terminal disponível para trabalhar:

JXU: set the rxBufsize to 3851

Username: admin
Password: ********

Usuário admin, senha gvt12345.


Do console do HomeGateway (utilitário do modem) você pode salta para o console do Linux execute:
HomeGateway>  System shell

Mas para atingir o nosso objetivo, isso não é necessário. Essa é a receita de bolo:

1. Modificar o runlevel do sistema:

HomeGateway> get set 4
Runlevel changed !!
level_cur = 2, level_new = 4!!

2. Desligar o TR69 (para não permitir a operadora atualizar novamente o equipamento):
HomeGateway> set SAGEM/TR69/ACS_URL http://

3. Salvar:
HomeGateway> flash commit

4. Reinicie o equipamento.

Pronto. Estas configurações são persistidas independente da versão do firmware, então após o reboot voltaremos à versão 8480, mas agora com o runlevel setado para 4.

Se tudo der certo, você deve ver os novos menus e opções ao acessar o equipamento pela interface Web:




No terminal do HomeGateway ou mesmo no shell do Linux existem muitas opções a serem exploradas.

Seja feliz! :-D

Comentários

Allyson Araújo disse…
Ola Roberto, você poderia me ajudar quanto a este modem 2764 ?
Fiz a instalação do Custom Firmware do TripleOxygen e até consegui alguns feitos dentro do modem. Com a versão dele, consegui fazer com que a versão que tem a página de gerenciamento completo do modem ficasse permanente, até ai tudo bem.
Decidi voltar a firmware ACxx e realizar alguns comandos para tornar a porta WAN sempre ligado quando o modem fosse reiniciado, só que ai que mora meu problema, o modem reiniciou, estou na custom firmware porém perdi acesso ao ssh que tava liberado anteriormente. Gostaria de saber se existe alguma forma de recuperar este acesso.
(O modem é apenas de teste, não é pra uso do dia-a-dia não).
Agradeço desde já de qualquer forma, se puder ou não puder ajudar.
Anônimo disse…
Olá Roberto. Uma curiosidade, como identificar os pinos 3(A15) e 4(A16) em seu local exato? N consegui encontrar.... Obrigado.
Unknown disse…
Este comentário foi removido pelo autor.
Roberto disse…
Corrigido a numeração dos pinos... Você pode ver na foto, é exatamente aonde a pinça está tocando (terceiro e quarto pinos desse lado do CI...)
Uma pergunt: apos colocar no runlevel 4 e modo bridge, a TV GVT continua funcionando?

Postagens mais visitadas deste blog

Alguns "Looking-glass" úteis.