Tutto può essere fatto in Telnet?


Risposte:


8

Sì, anche se ciò perderebbe i benefici della compressione e lavorare con la risposta GET frammentata o il login / password con codifica Base64 in SMTP sarebbe doloroso, quindi non consiglierei effettivamente usarlo tranne a scopo di test, usa Perl o Python se vuoi per fare automaticamente qualcosa sul Web.

Inoltre, se vuoi fare richieste indistinguibili da quelle che un determinato browser fa (doverlo fare è una triste realtà quando stai provando a lavorare con siti protetti da sistemi come Bad Behavior), prendi in considerazione di scrivere un mini- server che produrrà la tua richiesta alla lettera (ci sono esempi simili che volano in giro, ma probabilmente avranno bisogno di qualche leggera modifica). Quindi sarai in grado di usarlo come modello per effettuare semplici richieste a tali siti.

Ad esempio, prova

telnet google.com 80

Al termine dell'inizializzazione, digitare

GET / HTTP/1.0

e premere INVIO due volte (come richiesto dal protocollo HTTP). Riceverai 302 risposte che un browser normalmente utilizzava per reindirizzarti a WWW.google.com.


Non ho ricevuto una risposta 302. Ha inviato la pagina.
tony_sid,

5
V'è una pagina in 302 risposta :)
Alexei Averchenko

3
Inoltre non preciso al 100%. Non stai richiedendo una pagina da google.com, la stai richiedendo dal suo IP! Questo è nelle specifiche HTTP, chiamate intestazione host. Devi fare `telnet google.com 80 _ GET / HTTP / 1.0 _ Host: google.com _ quindi funzionerà. Devi dire al server che stai cercando di richiedere "google.com" e nessun altro sottodominio o dominio da questo server
sinni800

7

Telnet può essere utilizzato per (quasi) connessioni TCP non elaborate e è possibile utilizzare protocolli basati sui caratteri, ma ci sono alcune differenze :

Pertanto, un'applicazione client Telnet può anche essere utilizzata per stabilire una sessione TCP grezza interattiva e si ritiene comunemente che tale sessione che non utilizza lo IAC (\ 377 carattere o 255 in decimale) sia funzionalmente identica. Questo non è il caso, tuttavia, poiché esistono altre regole del terminale virtuale di rete (NVT), come il requisito per un carattere di ritorno a capo nudo (CR, ASCII 13) a cui deve seguire un carattere NULL (ASCII 0), che distingue il protocollo telnet da sessioni TCP non elaborate.

Altrimenti, è possibile utilizzare protocolli di livello applicazione basati su caratteri come HTTP, FTP, SMTP e IRC utilizzando Telnet. Perché è una vera sfida leggere e scrivere i dati compressi manualmente, sei limitato a HTTP senza la compressione HTTP / 1.1. Per protocolli interamente binari, sei praticamente sfortunato.


Puoi effettivamente utilizzare HTTP 1.1 se proibisci esplicitamente la compressione nelle intestazioni.
Alexei Averchenko,

Siamo spiacenti, a meno che non si consenta esplicitamente la compressione nelle intestazioni.
Alexei Averchenko,

@Alexei Grazie per il suggerimento, modificato il post di conseguenza. Ora funziona in entrambi i modi.
Daniel Beck

L'applicazione telnet non utilizza il protocollo telnet per la connessione a una porta non telnet. Pertanto, il fatto che il protocollo telnet non sia una connessione TCP non elaborata è irrilevante.
Teddy

3
@Teddy: dipende da quale applicazione consideri "la". Ho testato telnetda GNU "inetutils", Arch "telnet-bsd", Debian "krb5-client", Debian "netkit-telnet-ssl", PuTTY-svn r9020, Windows XP "telnet.exe", Windows 98 "telnet. exe ", Windows XP" HyperTerminal "e tutti inviano CR / LF e rispondono alla negoziazione delle opzioni Telnet indipendentemente dalla porta TCP utilizzata dal server (in questo test, tcp / 9). L'unica differenza è che solo alcuni di loro (vale a dire PuTTY) avviano il nego senza attendere che il server lo faccia.
Grawity

1

Tecnicamente sì, puoi farlo. ma parlando pragmaticamente la risposta è no:

ad esempio, posso ottenere una pagina Web utilizzando

telnet www.page.com 80

ma otterrò il testo HTML da esso, non il, css, immagine e altre risorse.

Quindi, con il file html, è possibile ottenere tutti gli altri file con chiamate telnet consecutive. css è "banale" da ottenere, è lo stesso per ottenere un file, anche js e altri file "inclusi". ma i binari non sono così facili perché devo scaricarlo e poi elaborarlo, senza contare che alcune risorse richiedono un cookie specifico e un riferimento.

E il sito web potrebbe forzare la compressione z e molti altri "dettagli" che sono "dettagliati" nelle specifiche del protocollo, protocollo difficilmente patchato e con diverse eccezioni.

Anche se è possibile, ma è lo stesso creare un servizio / protocollo esistente da zero, quindi è lo stesso dire "posso costruire Windows solo" colpendo "zero e quelli". <- è possibile ma ci vorrà molto tempo assurdo per farlo.

Un esempio di un sito che non è possibile caricare completamente è gmail.com perché include anche un'ulteriore complessità: javascript (escluso Lynx perché non è nativo, né un'esperienza reale).

Ad ogni modo, al di fuori del web e della posta elettronica, esiste un protocollo a cui non è possibile accedere utilizzando un semplice telnet perché richiede una sorta di handshaking tempestivo (un paio di secondi se non inferiore) che non può essere imitato utilizzando due chiamate separate su telnet senza usando una sorta di automatismo, cioè stiamo parlando di un client che non è un vero client Telnet ma su di esso.


Per essere onesti, puoi reindirizzare l'input a Telnet, ma sì :)
Alexei Averchenko
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.