Un serveur Telnet peut-il détecter le client utilisé via le protocole?

9

Alors que les navigateurs Web envoient, entre autres, la User-Agentchaîne, le protocole Telnet a-t-il une méthode similaire pour déterminer quoi que ce soit au sujet du client qui s'y connecte? OS? Client Telnet spécifique? Etc.

Thufir
la source

Réponses:

14

Il n'y a pas d'agent utilisateur, mais il existe quelques options de protocole Telnet pour l'envoi des informations client:

  • TERMINAL TYPE- montre le type de terminal utilisé (par exemple xterm, urxvt, screen-256color ...) Vous ne pouvez pas vraiment vous en débarrasser sans casser les choses. Il en va de même pour NAWSqui indique la taille de la fenêtre (colonnes × lignes).

  • OLD-ENVIRONet NEW-ENVIRON- peut révéler certaines variables d'environnement spécifiques; certains clients révèlent également leur nom de domaine complet dans une fausse variable $ DISPLAY. L'envoi des paramètres régionaux de votre système ($ LANG, $ LC_ *) ou du fuseau horaire ($ TZ) n'est pas rare non plus.

  • XDISPLOC - similaire à ci-dessus, certains clients envoient votre FQDN comme emplacement d'affichage X11.

  • Si l'une des fonctionnalités d'authentification est activée, elle peut révéler votre nom d'utilisateur OS.

  • Enfin, l'ensemble des options reconnues varie selon les implémentations et peut être utilisé comme une empreinte digitale de style Panopticlick.

frost $ echo $ DISPLAY
: 0

frost $ telnet
telnet> définir les options
Affiche le traitement des options.
telnet> ouvrez m-net.arbornet.org
Essayer 162.202.67.157 ...
Connecté à m-net.arbornet.org.
Le caractère d'échappement est '^]'.
SENT DO SUPPRESS ALLER DE L'AVANT
ENVOYÉ LE TYPE DE TERMINAL
ENVOYÉ LES NAWS
ENVOYÉ SERA TSPEED
ENVOYÉ LFLOW
ENVOYÉ LE MODE DE LIGNE
ENVOYÉ LE NOUVEL ENVIRONNEMENT
SENT DO STATUS
ENVOYÉ SERA XDISPLOC
RCVD DO AUTHENTIFICATION
ENVOYÉ AUTHENTIFICATION
RCVD SUPPRIMERA ALLER DE L'AVANT
RCVD DO TERMINAL TYPE
RCVD DO NAWS
ENVOYÉ IAC SB NAWS 0 95 (95) 0 46 (46)
RCVD DO TSPEED
RCVD DO LFLOW
RCVD DO LINEMODE
SENT IAC SB LINEMODE SLC SYNCH NOSUPPORT 0; IP VARIABLE | FLUSHIN | FLUSHOUT 3; AO VARIABLE 15; AYT NOSUPPORT 0; ABORT VARIABLE | FLUSHIN | FLUSHOUT 28; EOF VARIABLE 4; SUSP VARIABLE | FLUSHIN 26; CE VARIABLE 127; EL VARIABLE 21; EW VARIABLE 23; RP VARIABLE 18; LNEXT VARIABLE 22; XON VARIABLE 17; XOFF VARIABLE 19; FORW1 NOSUPPORT 0; FORW2 NOSUPPORT 0;
SENT DO SUPPRESS ALLER DE L'AVANT
RCVD DO NEW-ENVIRON
RCVD STATUT
RCVD DO XDISPLOC
RCVD CRYPTERA
SENT DONT ENCRYPT
RCVD DO OLD-ENVIRON 
SENT WONT OLD-ENVIRON
ENVOI DE VITESSE TERMINALE RCVD IAC SB
ENVOYÉ IAC SB TERMINAL-SPEED IS 38400,38400
RCVD IAC SB X-DISPLAY-LOCATION ENVOYER
ENVOYÉ IAC SB X-DISPLAY-LOCATION EST "frost.nullroute.eu.org:0"
RCVD IAC SB NEW-ENVIRON ENVOYER 
ENVOYÉ IAC SB NEW-ENVIRON EST VAR "DISPLAY" VALUE "frost.nullroute.eu.org:0"
ENVOI DE TYPE TERMINAL RCVD IAC SB
ENVOYÉ LE TYPE DE TERMINAL IAC SB EST "XTERM-256COLOR"
RCVD DO ECHO
SENT WONT ECHO
RCVD WILL ECHO
SENT DO ECHO
RCVD IAC SB BASCULEMENT-COMMANDE DE FLUX OFF
RCVD IAC SB TOGGLE-FLOW-CONTROL RESTART-XON
RCVD DONT LINEMODE
ENVOYÉ WONT LINEMODE
RCVD IAC SB LINEMODE SLC IP VARIABLE | ACK | FLUSHIN | FLUSHOUT 3; AO VARIABLE | ACK 15; ABORT VARIABLE | ACK | FLUSHIN | FLUSHOUT 28; EOF VARIABLE | ACK 4; SUSP VARIABLE | ACK | FLUSHIN 26; CE VARIABLE | ACK 127; EL VARIABLE | ACK 21; EW VARIABLE | ACK 23; RP VARIABLE | ACK 18; LNEXT VARIABLE | ACK 22; VARIABLE XON | ACK 17; XOFF VARIABLE | ACK 19;

FreeBSD / i386 (m-net.arbornet.org) (pts / 5)

s'identifier: 
user1686
la source
2
excellente réponse. quand je lis man telnetle seul bug répertorié est: The source code is not comprehensible. Curieux de savoir si quelqu'un a déjà écrit un client à jour dans autre chose que C.
Thufir
3
Cela ne serait pas d'une grande utilité, car le protocole lui-même est également obsolète, comme la plupart des serveurs ... SSHv2 est le remplacement moderne. // également, notez qu'il existe plusieurs clients différents appelés "telnet" - inetutils-telnet & netkit-telnet, entre autres.
user1686
1
Bien que, sur une note liée, SSH n'avoir une chaîne de l' agent utilisateur.
user1686
1
Cependant, @grawity telnet est encore largement utilisé, par exemple pour les diagnostics. Cela devient un peu moins courant grâce à la prolifération de TLS (en faveur d'OpenSSL -connect, par exemple ), mais il existe encore de nombreuses utilisations valides pour une connexion texte raisonnablement simple, tout comme Telnet vous donne lorsqu'elle est invoquée contre un serveur non Telnet. Bien sûr, votre argument reste que telnet n'est pas simplement un logiciel, c'est un protocole; c'est un peu comme appeler un navigateur Web HTTP.
un CVn du
1
@ MichaelKjörling Mais lorsque la commande telnet est utilisée pour déboguer la communication réseau, elle ne parle pas réellement le protocole telnet. Avec le client telnet que je viens de tester, je lui dis simplement à quel numéro de port se connecter le fera changer de comportement.
kasperd