2020-08-19

bookmarklet to enable all html dom inputs (VIVO MODEM TRICK)

en: you may need to enable the input fields on a page, and for that we will use a simple bookmarklet / favelet / favlet - yeah, just a short JavaScript code saved as bookmark.

how-to: move this bookmarklet to your bookmark bar and use it anytime.

done!

br: os modems da VIVO apresentam firmware fortemente alterado e algumas limitações na interface de usuário impostos por simples DOM HTML (Document Object Model do Hyper Text Markup Language).

pode-se entender DOM como uma forma de manipular (acessar, alterar) objetos HTML, suas propriedades, seus métodos e seus eventos principalmente através de funções JavaScript.

uma das limitações impostas no firmware original da VIVO é a impossibilidade nativa de mudar o intervalo de operação DHCP.

os campos destinados à definição da rede estão bloqueados, forçando o usuário a trabalhar na rede interna na faixa "192.168.15/24".

ao olhar o código fonte da página de configuração do modem pode-se ver códigos semelhantes a este abaixo:

<input type="text" name="LanMask_1" class="router" maxlength="3" id="LanMask_1" value="" onkeydown="CheckDot(event, this.id)" disabled="">

o relevante para nós são apenas estas partes:

<input type="text" disabled="">

e nossa estratégia será criar um simples código JavaScript que se executado com a página do modem aberta sobre onde os botões aparecem irão atribuir "false" à propriedade "disabled" de todos inputs encontrados.

o efeito do script NÃO é persistente. ou seja, ele só age durante sua execução imediata sobre a página. caso ela seja fechada ou re-aberta, a página abrirá normalmente sem sinal de qualquer alteração.

1
2
3
4
5
6
  var btn = document.getElementsByTagName("input"); 
  
  for (var i = 0; i < btn.length; i++) { 
    btn[i].disabled = false;
  }
  void 0;

falta convertê-lo para bookrmarklet, condensando o código numa única linha.

javascript:var btn = document.getElementsByTagName("input"); for (var i = 0; i < btn.length; i++) btn[i].disabled = false; void 0;

e aqui está o código genérico para ativação de campos em ancoragem html:

<a href="javascript:var btn = document.getElementsByTagName(&quot;input&quot;); for (var i = 0; i &lt; btn.length; i++) btn[i].disabled = false; void 0;" rel="nofollow" target="_blank">bookmarklet</a>

infelizmente, o código acima ainda NÃO funciona para os modems VIVO, pois a página do modem, ao invés de ser um html simples, é dinamicamente criada através do uso de frames. por conta disso é preciso fazer uma pequena alteração para se pesquisar pelos campos de entrada presentes no frame de número 3 da página. 

assim, onde se lê 'document.getElementsByTagName("input");' precisa ser alterado para 'window.frames[3].document.getElementsByTagName("input");'

feito!

faça bom uso: ion (mova o link até a barra de favoritos do navegador. e apenas clique sobre ele quando estiver diante de uma página com inputs bloqueados para edição!)

antes

depois

conditions: MitraStar DSL-2401HN2-E1C BR_SA_g003_114WUQ0b19

description: (vendor) (model) (firmware version)

de nada!

source: https://en.wikipedia.org/wiki/Bookmarklet

source: https://www.w3schools.com/js/js_htmldom.asp

source: https://www.w3schools.com/whatis/whatis_htmldom.asp

source: https://www.w3schools.com/...getelementsbytagname.asp

source: https://codippa.com/how-to-select-an-element-inside-a-frame.../

soundtrack: Guns N' Roses - Welcome To The Jungle (by maromaro1337)


all html cod generated using hilite.me

Nenhum comentário:

Postar um comentário