Pobieranie i przesyłanie plików za pośrednictwem sesji Telnet


16

Mam uruchomione urządzenie asystujące Linux OS. Mogę podłączyć to urządzenie za pośrednictwem sesji Telnet. W urządzeniu jest kilka plików, które chciałbym pobrać i przesłać z nowymi plikami. Jak mogę to zrobić? Mam bardzo niską wiedzę na temat systemu operacyjnego Linux. Czy mógłbyś pomóc?

wprowadź opis zdjęcia tutaj


Ile plików chcesz przenieść? Czy możesz wkleić gdzieś dane wyjściowe busybox --helpi ls -l /bini ls -l /usr/bin, proszę.
jofel

tak naprawdę chcę zmienić tło pulpitu tego urządzenia obsługującego i chcę załadować tam logo naszej firmy. Takie opcje nie są dostępne w menu urządzenia (już poprosiłem o tę opcję do sprzedawcy). Więc podłączyłem go przez sesję telnet i znalazłem desktop.jpg i inne pliki obrazów w urządzeniu. Teraz chcę pobrać te pliki do Mojego systemu lokalnego. i po zweryfikowaniu tego samego załaduję pożądane obrazy do urządzenia. Więc zaktualizuje obraz urządzenia zgodnie z moimi pożądanymi obrazami. Chcę zmienić przynajmniej obraz pulpitu, który jest dostępny w urządzeniu na / mnt / mtdblock / image
PRdeep Kumawat

Jeśli chcesz dodać informacje następnym razem, edytuj pytanie zamiast dodawać komentarze.
jofel,

Odpowiedzi:


13

Zależy to od tego, które narzędzia są zainstalowane na urządzeniu klienckim / obsługiwane przez jądro.

Możliwe metody przesyłania plików (nieuporządkowane):

  • ssh / sftp
  • kodowanie plików binarnych do formatu możliwego do wyświetlenia za pomocą base64 / uuencode, a następnie kopiowanie z / do okna terminala Telnet.
  • nad prostego połączenia TCP z netcatlub socatlub z bashi / dev / tcp
  • przesyłanie / pobieranie z wgetlub curlz serwera sieciowego
  • serwer ftp z klientem ftp z linii poleceń
  • samba lub nfs mount

Przeczytaj Proste przesyłanie plików i Jak pobrać plik do hosta, gdy wszystko, co masz, to konsola szeregowa? więcej możliwości.


Skopiuj desktop.jpgz urządzenia na komputer za pomocą metody netcat / nc:

Na komputerze wyłącz tymczasowo (lub ponownie skonfiguruj, jeśli to możliwe) dowolną zaporę i uruchom ją

netcat -l -p 10000 > desktop.jpg

i na urządzeniu

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

gdzie musisz zastąpić ABCD adresem IP komputera. Gdy tylko transfer się powiedzie, proces netcat na twoim komputerze powinien zatrzymać się automatycznie. Jeśli nie, coś jest nie tak i można temu zapobiecCtrl+C

W przeciwnym kierunku wystarczy wymienić <i >po obu stronach. Najpierw wykonaj kopię zapasową oryginału desktop.jpg( cp desktop.jpg desktop_orig.jpg).


Próbowałem narzędzia WinSCP i próbowałem podłączyć urządzenie przy użyciu protokołu ftp / sftp / scp. ale się nie łączy. Jestem w stanie podłączyć urządzenie za pomocą polecenia telnet i mogę zobaczyć pliki, które chcę pobrać, i przesłać je ponownie do urządzenia.
PRdeep Kumawat

Prawdopodobnie twoje urządzenie nie ma uruchomionego serwera ssh lub ftp.
jofel

Cóż, nie wiem tego .. Czy istnieje inny sposób na pobieranie / przesyłanie plików z tego urządzenia?
PRdeep Kumawat,

Możesz także użyć szdo wysłania plików przez terminal. Będziesz go potrzebował po obu stronach.
slm

@PRdeepKumawat Rozszerzyłem odpowiedź o przykład.
jofel,

6

Nie mam ssh ani ftp (lub etc) na urządzeniu.

Więc robię dalej:

  1. telnet a.b.c.d | tee telnet.log
  2. zaloguj się i przejdź do pliku
  3. cat file.txt
  4. zamknij sesję (I zamknij panel tmux)
  5. usuń telnet.logz śmieci

Narzędzie do pobierania / wysyłania plików przez telnet powinno być łatwe do napisania


1

Spróbuj z rcppoleceniem.

Użyj, man rcpaby uzyskać więcej informacji, jeśli chcesz zautomatyzować przelewy.

Nawiasem mówiąc, wiesz, że to jest bardzo niepewne , prawda?


1

Właśnie przesłałem plik oprogramowania sprzętowego o wielkości ~ 7 Kb do systemu Linux opartego na BusyBox przez port szeregowy.

Bez pracy w sieci, bez narzędzi do przesyłania plików; brak narzędzi Base64 lub cokolwiek zdalnie przydatnego na urządzeniu.

Na hoście w prosty sposób zakodowałem oprogramowanie wewnętrzne w następującym formacie; rodzaj zrzutu szesnastkowego składającego się z literałów powłoki połączonych z printfpoleceniami:

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

w zasadzie printfpolecenia powłoki z interpretowanymi \xsekwencjami ucieczki printf. Na urządzeniu zrobiłem:

device $ cat > firmware.sh

następnie użył minicompliku ASCII send ( Ctrl-AS), aby wysłać ten plik do hosta. Mogłem po prostu użyć funkcji kopiuj i wklej, ponieważ ilość danych jest niewielka.

Następnie zaznaczył plik wykonywalny i uruchomił printfskrypt:

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

Sprawdzono za pomocą BusyBox, md5sumczy firmware.binsuma kontrolna urządzenia odpowiada oryginalnemu obrazowi oprogramowania układowego na hoście.

PS Składnia podwójnego cudzysłowu powłoki przechodzi przez \xdosłownie, ponieważ nie jest to rozpoznana sekwencja ucieczki; dlatego nie musimy podwajać ukośników odwrotnych.


0

@jofel i wszyscy inni, bardzo dziękuję za miłą pomoc. Wydaje mi się, że w urządzeniu zainstalowano dostosowany system operacyjny, ponieważ rozpoznawał tylko niektóre określone polecenia systemu Linux. Netcat nie jest rozpoznawany przez urządzenie. Jednak dzisiaj udało mi się przesłać plik za pomocą polecenia tftp. Pomyślnie zastąpiłem plik desktop.jpg tym poleceniem. Zrobiłem to, stworzyłem serwer tftp w systemie Windows. zaloguj się przez telnet na urządzeniu i uruchom następujące polecenia:

pobierz plik tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

prześlij plik tftp -l desktop.jpg -g 192.168.0.249 69


0

Zrobiłem to teraz za pomocą następujących metod:

Utwórz serwer ftp (instalując solerwinds) w systemie Windows. zaloguj się przez telnet na urządzeniu i uruchom następujące polecenia:

Aby pobrać plik:

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

Przykład:

tftp -l desktop.jpg -p 192.168.0.249 69

lub wgrać plik:

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

Przykład:

tftp -l desktop.jpg -g 192.168.0.249 69

domyślna lokalizacja pliku tftp to C:\TFTP-Root


-1

Korzystam z następującej metody, aby pobrać małe pliki binarne przez telnet do mojego okna systemu Windows:

  1. wykonaj hexdump -v -e '16 / 1 "% 02x" 'myfile.bin
  2. skopiuj zrzut heksowy z ekranu
  3. wklej zrzut heksowy do tego narzędzia online, aby utworzyć plik binarny: http://tomeko.net/online_tools/hex_to_file.php?lang=en

Nie jestem pewien swojego linku w punkcie 3!

3
@Goro Link w tym przypadku nie jest wyjaśnieniem, które można zacytować, jest to narzędzie online, które jest niezbędne do udzielenia odpowiedzi. Lepiej byłoby mieć program lokalny do tego zadania.
RalfFriedl

Dzięki @RalfFriedl. Zredagowałem swoją odpowiedź dla wyjaśnienia.
Igor Zelaya,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.