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:
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:
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
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:
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:
Usuário admin, senha gvt12345.
Do console do HomeGateway (utilitário do modem) você pode salta para o console do Linux execute:
Mas para atingir o nosso objetivo, isso não é necessário. Essa é a receita de bolo:
1. Modificar o runlevel do sistema:
2. Desligar o TR69 (para não permitir a operadora atualizar novamente o equipamento):
3. Salvar:
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
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 argenv 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
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.