Jump to content

Recommended Posts

Posted

Olá, sou novo aqui. Mas já ando há muito tempo na ptnet e vim aqui para vos chatear  um pouco.

Não sei exactamente onde colocar esta questão. Se neste tópico se no javascript. Já vão perceber porque

Então é assim: tenho pelo menos 1 bot eggdrop, gosto de programar em tcl. Já tinha com sucesso antigamente pôr o bot a dar-me info pró canal de irc sobre o status do router, ligação e afins. Na altura, tinha um zyxel p660w-ti v3 e depois fiz um script tcl para um thomson. Posso mais tarde talvez copiar codigo meu em tcl mas reparei que nao existem secção tcl no Portugal-a-programar e se existe, não vi. Com a ajuda dos cookies, pude então entrar no meu zyxel e o script de tcl agarrava na info e botava coisas no canal.

Mas mudei para fibra no ano passado. Tentei fazer o mesmo com o router de fibra.gr241ag da altice labs mas reparei que tem muitos ficheiros js, alguns htmls, etc. E o problema é que não consegui fazer o bot entrar no router e obter info. Sei que o utilizador é meo e passe é meo. Eu tentei algumas formas mas não consegui. Tentei usar https://192.168.1.254/index.html?username=meo&password=meo&submit=submit etc etc. E sim eu usei o Rede nas ferramentas de desenvolvimente do browser firefox e não vi nada a ser mandado, nem headers e cookies.

Se alguem tivesse este router ou semelhante e usasse uma consola para tentar fazer login.

Cumprimentos

Posted

Bem vindo. 🙂

TCL? Ora ai está uma coisa onde eu não bato código há mais de 15 anos, nessa altura era a minha linguagem de programação profissional, ganhava a vida a bater código TCL!  🙂Mais recentemente fiz uma incursão de novo no TCL a nível profissional há uns 4 anos...

Quanto à tua questão, invocar via URL dessa forma (GET) não vais lá. O login é garantidamente feito por POST e dado que é via HTTPS, tenho dúvidas que consigas obter informação visível.
Para ultrapassares isso, vais ter de conseguir fazer um form submit em POST.
Como te referi, há muito anos que estou longe do TCL, mas de certeza que tens ferramentas para web scrapping equivalentes (senão mesmo iguais) ao "mechanize" do Perl e do Python que te abstraem e simplificam muito a vida para esse tipo de situações.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Posted
21 horas atrás, M6 disse:

Bem vindo. 🙂

TCL? Ora ai está uma coisa onde eu não bato código há mais de 15 anos, nessa altura era a minha linguagem de programação profissional, ganhava a vida a bater código TCL!  🙂Mais recentemente fiz uma incursão de novo no TCL a nível profissional há uns 4 anos...

Quanto à tua questão, invocar via URL dessa forma (GET) não vais lá. O login é garantidamente feito por POST e dado que é via HTTPS, tenho dúvidas que consigas obter informação visível.
Para ultrapassares isso, vais ter de conseguir fazer um form submit em POST.
Como te referi, há muito anos que estou longe do TCL, mas de certeza que tens ferramentas para web scrapping equivalentes (senão mesmo iguais) ao "mechanize" do Perl e do Python que te abstraem e simplificam muito a vida para esse tipo de situações.

Bom dia, obrigado por responder.

Sim, só programo tcl por diversão. O pacote http permite-me ir aos sites e pescar o html das páginas e depois com código tcl é possivel separar o trigo do joio.

Não tem de ser https, apesar de o pacote tls estar lá para isso. Usei recentemente este pacote tls para obter os resultados do futebol da primeira liga do site da sapo, o url do sapo tem mesmo de ser https ou não consigo sacar nada do site. Outro projecto que fiz foi um guia de tv. Basicamente o bot saca a programação do site do epg do sapo e armazena offline e é possivel pesquisar e mostrar no canal de irc.

E sim, tambem tenho ideia tem de ser por POST, mas estando eu em http://192.168.1.254 e fazer meo/meo no ecrã de autenticação, não venho nenhuma linha POST a ser mandada. Vejo é uma data de javascripts a serem sacados à medida que o browser controi a página e depois o que vejo é um parametro id ou algo do género, não me lembro agora. E uma vez lá dentro do router, o meu código ainda não desenvolvido de tcl, com uma data de regexps e regsubs, serei capaz de apresentar em canal de irc o status do meu router de fibra por exemplo. Quando eu faço logout, o browser mostra-me http://192.168.1.254/login.html. Deduzo que tenho de sacar o html desta página e tentar fazer POST, Ainda não vi atentamente o código. Talvez este fim-de-semana. Também seria giro a meobox disponibilizar uma página mas não... só tem uma porta 8082 que podemos usar para mandar keystokes...

Eu fiz foi este snippet tcl https://pastebin.com/Asrzbq2f

Apesar de ter mensagens em inglês, fui eu que criei e funcionava bem com o zyxel p660w-t1 v3. Olhando para este snippet, axo que podia eliminar ali uns regsub e meter uns string maps. E depois já aqui tive a ver mas não sei onde meti o código para o thomson mas no entanto tenho outra tcl experimental que usa cookies acho eu.

Se eu não tiver projectos este fim-de-semana, tentarei novamente fazer o bot entrar no router de fibra. Ainda ponderei usar telnet ou ssh mas é complicado para mim...

Cumprimentos e Obrigado.

Posted

Boas.

Não conheço a biblioteca http do TCL, mas pelo que percebi, "não é mais" do que um curl ou um wget, ou seja, faz pedidos HTTP e pode manipular, até certo ponto, as respostas. É por isso que não consegues fazer login, porque não consegues fazer POST (pelo que vi até tem um método de GET), mas mesmo que consigas não sei se depois consegue manter a sessão. Esses Javascript todos que vez por provavelmente são do bootstrap ou chamadas ajax (em que uma delas até pode ser para fazer a autenticação).

O que necessitas é de um mechanize, que te permite navegar mesmo pela página, por exemplo, aceder aos objetos username e password do form e preenchê-los e depois aceder ao botão de submit e pressioná-lo. Deixo-te aqui alguma informação sobre esse tipo de módulo (em Python) pode ser que conheças o equivalente em TCL (eu desconheço): http://mechanize.readthedocs.io/en/latest/

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.