web-dev-qa-db-fra.com

Téléchargement et téléchargement de fichiers via une session Telnet

J'ai un appareil d'assistance en cours d'exécution Linux OS. Je peux connecter cet appareil via une session telnet. Il y a des fichiers dans l'appareil que je voudrais télécharger et télécharger avec de nouveaux fichiers. Comment puis je faire ça? J'ai très peu de connaissances sur Linux OS. Pourriez-vous s'il vous plaît aider!

enter image description here

16
PRdeep Kumawat

Cela dépend des outils installés sur le périphérique client/pris en charge par le noyau.

Méthodes possibles pour le transfert de fichiers (non ordonné):

  • ssh/sftp
  • encoder des fichiers binaires dans un format affichable avec base64/uuencode, puis copier depuis/dans la fenêtre de votre terminal telnet.
  • sur une simple connexion tcp avec netcat ou socat ou avec bash et/dev/tcp
  • upload/download avec wget ou curl depuis un serveur web
  • serveur ftp avec un client ftp en ligne de commande
  • montage samba ou nfs

Lisez Transfert de fichier simple et Comment obtenir un fichier sur un hôte alors que vous n'avez qu'une console série? pour plus de possibilités.


Copie desktop.jpg de l'appareil à votre PC avec la méthode netcat/nc:

Sur votre PC, désactivez temporairement (ou reconfigurez si possible) tout pare-feu et exécutez

netcat -l -p 10000 > desktop.jpg

et sur l'appareil

busybox nc A.B.C.D -p 10000 < desktop.jpg

où vous devez remplacer A.B.C.D par l'adresse IP de votre PC. Dès que le transfert a réussi, le processus netcat sur votre PC devrait s'arrêter automatiquement. Sinon, quelque chose ne va pas et vous pouvez l'arrêter avec Ctrl+C

Pour l'autre sens, échangez simplement < et > sur les deux côtés. Faites d'abord une sauvegarde de l'original desktop.jpg (cp desktop.jpg desktop_orig.jpg).

13
jofel

Je n'ai aucun ssh ou ftp (ou etc.) sur l'appareil.

Donc, je fais ensuite:

  1. telnet a.b.c.d | tee telnet.log
  2. connectez-vous et accédez au fichier
  3. cat file.txt
  4. fermer la session (je ferme le volet tmux)
  5. clair telnet.log de la corbeille

Il devrait être facile d'écrire un utilitaire pour télécharger/télécharger un fichier sur telnet

6
user104415

Je viens de télécharger un fichier de firmware ~ 7 Kb) sur un système embarqué Linux basé sur BusyBox via le port série.

Pas de réseau, pas d'utilitaires de transfert de fichiers; pas d'utilitaires Base64 ou quoi que ce soit d'utile à distance sur l'appareil.

Sur l'hôte, j'ai encodé trivialement un firmware au format suivant; une sorte de vidage hexadécimal composé de littéraux Shell combinés avec des commandes printf:

printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"

essentiellement des commandes Shell printf avec des séquences d'échappement \x que printf interprète. Sur l'appareil, j'ai fait:

device $ cat > firmware.sh

puis utilisé le fichier ASCII send (minicom)Ctrl-AS) pour envoyer ce fichier à l'hôte. J'aurais pu simplement utiliser le copier-coller, car la quantité de données est petite.

Ensuite, marqué exécutable et exécuté le script printf:

device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin

Vérifiez à l'aide de md5sum De BusyBox que la somme de contrôle firmware.bin Sur le périphérique correspond à l'image du micrologiciel d'origine sur l'hôte.

P.S. La syntaxe de guillemet double Shell passe par \x Textuellement car ce n'est pas une séquence d'échappement reconnue; nous n'avons donc pas à doubler les barres obliques inverses.

1
Kaz

Essayez avec la commande rcp.

Utilisation man rcp pour plus d'informations si vous souhaitez automatiser les transferts.

Au fait, vous savez que c'est très peu sûr, non?

1
YoMismo

@jofel et tous les autres, Merci beaucoup pour votre aimable assistance. Je pense que l'appareil a un système d'exploitation personnalisé installé car il ne reconnaît que certaines commandes Linux spécifiques. netcat n'est pas reconnu par l'appareil. Cependant, aujourd'hui, j'ai réussi à transférer le fichier à l'aide de la commande tftp. J'ai réussi à remplacer le fichier desktop.jpg par cette commande. Ce que j'ai fait, c'est créer un serveur tftp sur un système de fenêtres. connectez-vous via telnet sur l'appareil et exécutez ces commandes:

télécharger le fichier tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

télécharger le fichier tftp -l desktop.jpg -g 192.168.0.249 69

0
PRdeep Kumawat

Je l'ai fait maintenant par ces méthodes:

Créez un serveur ftp (en installant solerwinds) sur le système de fenêtres. connectez-vous via telnet sur l'appareil et exécutez ces commandes:

Pour télécharger un fichier:

tftp -l <FileName> -p <TFTP Server IP> <Port No of TFTP>

Exemple:

tftp -l desktop.jpg -p 192.168.0.249 69

ou pour télécharger un fichier:

tftp -l <FileName> -g <TFTP Server IP> <Port No of TFTP>

Exemple:

tftp -l desktop.jpg -g 192.168.0.249 69

l'emplacement par défaut du fichier tftp est C:\TFTP-Root

0
prdeepkumawat