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

PRdeep Kumawat
źródło
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).

Jofel
źródło
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

użytkownik104415
źródło
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?

YoMismo
źródło
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.

Kaz
źródło
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

PRdeep Kumawat
źródło
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

prdeepkumawat
źródło
-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
Igor Zelaya
źródło
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,