การดาวน์โหลดและอัพโหลดไฟล์ผ่านเซสชัน telnet


16

Linux OSผมมีอุปกรณ์การเข้าร่วมทำงาน ฉันสามารถเชื่อมต่ออุปกรณ์นี้ผ่านเซสชัน telnet มีบางไฟล์ในอุปกรณ์ที่ฉันต้องการดาวน์โหลดและอัพโหลดด้วยไฟล์ใหม่ ฉันจะทำสิ่งนั้นได้อย่างไร ฉันมีความรู้ต่ำมากใน Linux OS คุณช่วยได้ไหม!

ป้อนคำอธิบายรูปภาพที่นี่


คุณต้องการถ่ายโอนไฟล์กี่ไฟล์? คุณสามารถวางที่เอาท์พุทของbusybox --helpและls -l /binและls -l /usr/binได้โปรด
jofel

จริง ๆ แล้วฉันต้องการเปลี่ยนพื้นหลังเดสก์ท็อปของอุปกรณ์การเข้าร่วมนี้และต้องการอัปโหลดโลโก้ บริษัท ของเราที่นั่นในอุปกรณ์ ตัวเลือกดังกล่าวไม่สามารถใช้ได้ในเมนูอุปกรณ์ (ฉันได้ขอตัวเลือกนี้ให้กับผู้ขายแล้ว) ดังนั้นฉันจึงเชื่อมต่อผ่านเซสชัน telnet และพบ desktop.jpg และไฟล์รูปภาพอื่น ๆ ในอุปกรณ์ ตอนนี้ฉันต้องการรับไฟล์เหล่านี้ในระบบภายในเครื่องของฉัน และหลังจากการตรวจสอบเดียวกันฉันจะอัปโหลดภาพที่ต้องการของฉันในอุปกรณ์ ดังนั้นมันจะอัปเดตอิมเมจอุปกรณ์ตามภาพที่ฉันต้องการ ฉันต้องการเปลี่ยนภาพเดสก์ท็อปอย่างน้อยซึ่งมีอยู่ในอุปกรณ์ที่ / mnt / mtdblock / image
PRdeep Kumawat

หากคุณต้องการเพิ่มข้อมูลในครั้งต่อไปโปรดแก้ไขคำถามของคุณแทนการเพิ่มความคิดเห็น
jofel

คำตอบ:


13

ขึ้นอยู่กับว่าเครื่องมือใดที่ติดตั้งบนอุปกรณ์ไคลเอนต์ / สนับสนุนโดยเคอร์เนล

วิธีการที่เป็นไปได้สำหรับการถ่ายโอนไฟล์ (ไม่ได้เรียงลำดับ):

  • 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 ที่ทำงานอยู่
jofel

ฉันไม่รู้ว่า .. มีวิธีอื่นในการรับ / อัพโหลดไฟล์จากอุปกรณ์นั้นหรือไม่?
PRdeep Kumawat

คุณสามารถใช้szเพื่อส่งไฟล์ผ่านเทอร์มินัล คุณจะต้องใช้ทั้งสองด้าน
slm

@PRdeepKumawat ฉันขยายคำตอบด้วยตัวอย่าง
jofel

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 Kb ไปยังระบบฝังตัวบน Linux BusyBox ผ่านพอร์ตอนุกรม

ไม่มีเครือข่ายไม่มีการถ่ายโอนไฟล์ ไม่มี Base64 utils หรือสิ่งใดที่เป็นประโยชน์ในระยะไกลบนอุปกรณ์

ในโฮสต์ฉันเข้ารหัสเฟิร์มแวร์ในรูปแบบดังต่อไปนี้ ชนิดของ hex-dump ที่ประกอบด้วยเชลล์ตัวอักษรรวมกับprintfคำสั่ง:

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

โดยทั่วไปแล้วprintfคำสั่งเชลล์ที่มี\xลำดับเอสเคปที่printfตีความ บนอุปกรณ์ที่ฉันทำ:

device $ cat > firmware.sh

จากนั้นใช้minicomไฟล์ ASCII ของ send ( 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=th

ไม่แน่ใจเกี่ยวกับลิงค์ของคุณใน # 3!

3
@Goro ลิงก์ในกรณีนี้ไม่ใช่คำอธิบายที่สามารถอ้างอิงได้มันเป็นเครื่องมือออนไลน์ที่จำเป็นสำหรับคำตอบ มันจะเป็นการดีกว่าถ้าคุณมีโปรแกรมท้องถิ่นสำหรับงานนั้น
RalfFriedl

ขอบคุณ @RalfFriedl ฉันแก้ไขคำตอบเพื่อความกระจ่าง
Igor Zelaya
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.