Загрузка и выгрузка файлов через сеанс telnet


15

У меня работает устройство посещаемости Linux OS. Я могу подключить это устройство через сеанс Telnet. В устройстве есть несколько файлов, которые я хотел бы загрузить и загрузить с новыми файлами. Как я могу это сделать? У меня очень низкие знания по ОС Linux. Не могли бы вы помочь!

введите описание изображения здесь


Сколько файлов вы хотите передать? Можете ли вы вставить куда-нибудь выходные данные busybox --helpи, ls -l /binи ls -l /usr/bin, пожалуйста.
jofel

на самом деле я хочу изменить фон рабочего стола этого устройства, и хочу загрузить логотип нашей компании туда на устройство. Такие опции недоступны в меню устройства (я уже просил эту опцию у продавца). Поэтому я подключил его через сеанс telnet и обнаружил в устройстве desktop.jpg и другие файлы изображений. Теперь я хочу получить эти файлы в моей локальной системе. и после проверки того же я буду загружать мои желаемые изображения в устройстве. Таким образом, он будет обновлять изображение устройства в соответствии с моими желаемыми изображениями. Я хочу изменить хотя бы изображение рабочего стола, которое доступно в устройстве по адресу / mnt / mtdblock / image
PRdeep Kumawat

Если вы хотите добавить информацию в следующий раз, отредактируйте свой вопрос вместо добавления комментариев.
Джофель

Ответы:


12

Это зависит от того, какие инструменты установлены на клиентском устройстве / поддерживаются ядром.

Возможные способы передачи файлов (неупорядоченные):

  • ssh / sftp
  • кодирование двоичных файлов в отображаемый формат с помощью base64 / uuencode, а затем копирование из / в окно терминала telnet.
  • через простое соединение TCP с netcatили socatили с bashи / dev / tcp
  • загрузка / загрузка с wgetили curlс веб-сервера
  • FTP-сервер с командной строкой FTP-клиент
  • Samba или NFS Mount

Прочтите Простая передача файлов и Как получить файл на хост, когда у вас есть только последовательная консоль? для большего количества возможностей.


Скопируйте desktop.jpgс устройства на компьютер с помощью метода netcat / nc:

На вашем компьютере временно отключите (или перенастройте, если возможно) любой брандмауэр и запустите

netcat -l -p 10000 > desktop.jpg

и на устройстве

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

где вам нужно заменить ABCD на IP-адрес вашего компьютера. Как только передача прошла успешно, процесс netcat на вашем компьютере должен автоматически остановиться. Если нет, то что-то не так, и вы можете остановить это сCtrl+C

По другому направлению просто обменяюсь <и >с обеих сторон. Сделайте сначала резервную копию оригинала desktop.jpg( cp desktop.jpg desktop_orig.jpg).


Я попробовал утилиту WinSCP и попытался подключить устройство по протоколу ftp / sftp / scp. но это не связано. Я могу подключить устройство с помощью команды telnet и увидеть файлы, которые хочу получить, и снова загрузить их на устройство.
PRdeep Kumawat

Возможно, на вашем устройстве не запущен ssh или ftp сервер.
Джофель

Ну, я не знаю, что .. Есть ли другой способ получить / загрузить файлы с этого устройства?
PRdeep Kumawat

Вы также можете использовать szдля отправки файлов через терминал. Вам это понадобится с обеих сторон.
СЛМ

@PRdeepKumawat Я расширил ответ с примером.
Джофель

6

У меня нет ssh или ftp (или т. Д.) На устройстве.

Итак, я делаю следующее:

  1. telnet a.b.c.d | tee telnet.log
  2. войдите и перейдите к файлу
  3. cat file.txt
  4. закрыть сеанс (закрываю панель tmux)
  5. очистить telnet.logот мусора

Должно быть легко написать утилиту для загрузки / выгрузки файла через telnet


1

Попробуй с rcpкомандой.

Используйте man rcpдля получения дополнительной информации, если вы хотите автоматизировать переводы.

Кстати, вы знаете, это очень небезопасно , верно?


1

Я только что загрузил файл прошивки размером ~ 7 Кбайт во встроенную систему Linux на базе BusyBox через последовательный порт.

Нет сетей, нет утилит для передачи файлов; Нет Base64 утилит или что-нибудь удаленно полезное на устройстве.

На хосте я тривиально зашифровал прошивку в следующий формат; своего рода шестнадцатеричный дамп, состоящий из литералов оболочки в сочетании с printfкомандами:

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

в основном printfкоманды оболочки с \xescape-последовательностями, которые printfинтерпретируют. На устройстве я сделал:

device $ cat > firmware.sh

затем использовал minicomфайл ASCII для отправки (Ctrl-AS ) для отправки этого файла на хост. Я мог бы просто использовать копирование и вставку, так как объем данных невелик.

Затем помечаем исполняемый файл и запускаем printfскрипт:

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

Проверено с помощью BusyBox, md5sumчтоfirmware.bin контрольная сумма на устройстве соответствует исходному образу прошивки на хосте.

PS Синтаксис двойных кавычек оболочки проходит \xдословно, потому что это не распознанная escape-последовательность; следовательно, нам не нужно удваивать обратную косую черту.


0

@jofel и все остальные, большое спасибо за вашу помощь. Я думаю, что устройство имеет настроенную ОС, так как распознает только некоторые конкретные команды Linux. Netcat не распознается устройством. Однако сегодня мне удалось передать файл с помощью команды tftp. Я успешно заменил файл desktop.jpg этой командой. То, что я сделал, создал tftp сервер в оконной системе. Войдите в систему через telnet на устройстве и выполните следующие команды:

скачать файл tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

загрузить файл tftp -l desktop.jpg -g 192.168.0.249 69


0

Я сделал это сейчас с помощью этих методов:

Создайте ftp сервер (установив solerwinds) в оконной системе. Войдите в систему через telnet на устройстве и выполните следующие команды:

Чтобы скачать файл:

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

Пример:

tftp -l desktop.jpg -p 192.168.0.249 69

или загрузить файл:

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

Пример:

tftp -l desktop.jpg -g 192.168.0.249 69

расположение по умолчанию для файла tftp C:\TFTP-Root


-1

Я использую следующий метод для загрузки небольших двоичных файлов через telnet в окно Windows:

  1. выполнить hexdump -v -e '16 / 1 "% 02x" 'myfile.bin
  2. скопировать шестнадцатеричный дамп с экрана
  3. вставьте шестнадцатеричный дамп в этот онлайн-инструмент для создания двоичного файла: http://tomeko.net/online_tools/hex_to_file.php?lang=en

Не уверен насчет вашей ссылки в # 3!

3
@Goro Ссылка в данном случае не является объяснением, которое можно процитировать, это онлайн-инструмент, который необходим для ответа. Для этой задачи было бы лучше иметь местную программу.
Ральф Фридл

Спасибо @RalfFriedl. Я отредактировал свой ответ для уточнения.
Игорь Селая,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.