ทุกอย่างสามารถทำได้ใน Telnet หรือไม่?


7

เป็นความจริงไหมว่าทุกสิ่งที่คุณทำบนเว็บเช่นการท่องเว็บและอ่านอีเมลที่คุณสามารถทำได้กับ Telnet?


1
ไอ netcat กระแอม
barrycarter

ฉันหวังว่ามันจะไม่ถูกทำให้เสียหายใน Fedora <_ <
Alexei Averchenko

@Alexei: FYI มีการใช้งานที่แตกต่างกันอย่างน้อยห้าnetcatรายการ ในทางกลับกันsocatก็เหมือนกันทุกที่
grawity

คำตอบ:


8

ใช่แม้ว่าจะเสียประโยชน์จากการบีบอัดและการทำงานกับการตอบกลับแบบ GET หรือการเข้ารหัส / การเข้าสู่ระบบ / รหัสผ่านแบบ 64 บิตใน SMTP จะเจ็บปวดดังนั้นฉันจะไม่แนะนำให้ใช้จริงยกเว้นการทดสอบใช้ Perl หรือ python ถ้าคุณต้องการ เพื่อทำบางสิ่งบนเว็บโดยอัตโนมัติ

นอกจากนี้หากคุณต้องการทำคำขอที่แยกไม่ออกจากสิ่งที่เบราว์เซอร์บางตัวทำ (การทำเช่นนี้เป็นเรื่องจริงที่น่าเศร้าเมื่อคุณพยายามทำงานกับไซต์ที่ได้รับการป้องกันโดยระบบเช่นพฤติกรรมแย่) ลองเขียนมินิ - เซิร์ฟเวอร์ที่จะส่งออกคำต่อคำคำขอของคุณ (มีตัวอย่างดังกล่าวบินไปรอบ ๆ แต่พวกเขาอาจจะต้องมีการแก้ไขเล็กน้อย) จากนั้นคุณจะสามารถใช้เป็นเทมเพลตเพื่อส่งคำของ่ายๆไปยังไซต์ดังกล่าว

ตัวอย่างเช่นลอง

telnet google.com 80

เมื่อเริ่มต้นเสร็จแล้วให้พิมพ์

GET / HTTP/1.0

และกด ENTER สองครั้ง (ตามที่โปรโตคอล HTTP ต้องการ) คุณจะได้รับการตอบกลับ 302 ครั้งโดยปกติแล้วเบราว์เซอร์จะใช้เพื่อเปลี่ยนเส้นทางคุณไปยัง WWW.google.com


ฉันไม่ได้รับการตอบสนอง 302 มันส่งหน้า
tony_sid

5
มีเป็นหน้าในการตอบสนองต่อ 302 :)
อเล็กซี่ Averchenko

3
ยังไม่แม่นยำ 100% คุณไม่ได้ร้องขอหน้าเว็บจาก google.com คุณกำลังขอหน้าเว็บจาก ip นี่เป็นข้อมูลจำเพาะ HTTP เรียกว่าส่วนหัวของโฮสต์ คุณต้องทำ `telnet google.com 80 _ GET / HTTP / 1.0 _ โฮสต์: google.com _ จากนั้นมันจะทำงาน คุณต้องบอกเซิร์ฟเวอร์ว่าคุณกำลังพยายามขอ "google.com" ไม่ใช่โดเมนย่อยอื่นหรือโดเมนอื่นจากเซิร์ฟเวอร์นี้
sinni800

7

Telnet สามารถใช้สำหรับการเชื่อมต่อ TCP แบบดิบ (เกือบ) และคุณสามารถใช้โปรโตคอลแบบอักขระได้ แต่มีความแตกต่าง :

ดังนั้นแอปพลิเคชันไคลเอนต์ Telnet อาจถูกใช้เพื่อสร้างเซสชัน TCP แบบโต้ตอบดิบและเป็นที่เชื่อกันโดยทั่วไปว่าเซสชันดังกล่าวซึ่งไม่ได้ใช้ IAC (\ 377 ตัวอักษรหรือ 255 ในรูปทศนิยม) เป็นหน้าที่เหมือนกัน นี่ไม่ใช่กรณีอย่างไรก็ตามเนื่องจากมีกฎเครือข่ายเสมือนเทอร์มินัลเสมือน (NVT) อื่น ๆ เช่นข้อกำหนดสำหรับอักขระคืนค่าขนส่งเปล่า (CR, ASCII 13) ที่จะตามด้วยอักขระ NULL (ASCII 0) ที่แยกความแตกต่าง โปรโตคอล telnet จากเซสชัน TCP ดิบ

มิฉะนั้นคุณสามารถใช้โปรโตคอลเลเยอร์แอปพลิเคชันแบบอักขระเช่น HTTP, FTP, SMTP และ IRC โดยใช้ Telnet เนื่องจากมันค่อนข้างท้าทายในการอ่านและเขียนข้อมูลที่ถูกบีบอัดด้วยตนเองคุณ จำกัด อยู่ที่ HTTP โดยไม่มีการบีบอัดของ HTTP / 1.1 สำหรับโปรโตคอลที่เป็นเลขฐานสองทั้งหมดคุณค่อนข้างโชคดี


คุณสามารถใช้ HTTP 1.1 ได้จริงหากคุณห้ามการบีบอัดในส่วนหัวอย่างชัดเจน
Alexei Averchenko

ขออภัยเว้นแต่คุณจะอนุญาตให้มีการบีบอัดในส่วนหัว
Alexei Averchenko

@Alexei ขอบคุณสำหรับคำแนะนำแก้ไขโพสต์ตาม ตอนนี้มันใช้ได้ทั้งสองทาง
Daniel Beck

แอปพลิเคชัน telnet ไม่ได้ใช้โปรโตคอล telnetเมื่อเชื่อมต่อกับพอร์ตที่ไม่ใช่ telnet ดังนั้นความจริงที่ว่าโปรโตคอล telnet ไม่ใช่การเชื่อมต่อ TCP แบบดิบนั้นไม่เกี่ยวข้อง
เท็ดดี้

3
@Teddy: ขึ้นอยู่กับแอปพลิเคชันที่คุณพิจารณาว่า "the" ฉันได้ทดสอบtelnetจาก GNU "inetutils", Arch "telnet-bsd", Debian "krb5-clients", Debian "netkit-telnet-ssl", PuTTY-svn r9020, Windows XP "telnet.exe", Windows 98 "telnet exe ", Windows XP" HyperTerminal "และพวกเขาทั้งหมดส่ง CR / LF และตอบสนองต่อการเจรจาต่อรองตัวเลือก Telnetโดยไม่คำนึงถึงพอร์ต TCP ที่ใช้โดยเซิร์ฟเวอร์ (ในการทดสอบนี้ tcp / 9) ความแตกต่างเพียงอย่างเดียวคือบางส่วนของพวกเขา (เช่น PuTTY) เริ่มต้น nego โดยไม่ต้องรอให้เซิร์ฟเวอร์ทำ
grawity

1

ในทางเทคนิคแล้วคุณสามารถทำได้ แต่ในทางปฏิบัติการพูดคำตอบคือ:

ตัวอย่างเช่นฉันสามารถใช้เว็บเพจได้

telnet www.page.com 80

แต่ฉันจะได้รับข้อความ html จากมันไม่ใช่, css, รูปภาพและทรัพยากรอื่น ๆ

จากนั้นด้วยไฟล์ html คุณสามารถรับไฟล์อื่น ๆ ทุกไฟล์ด้วยการโทร telnet ติดต่อกัน css เป็น "เรื่องไม่สำคัญ" ที่จะได้รับมันเป็นเหมือนกันที่จะได้รับไฟล์เช่นเดียวกับ js และไฟล์ "รวม" อื่น ๆ แต่ไบนารีนั้นไม่ใช่เรื่องง่ายเพราะฉันต้องดาวน์โหลดแล้วประมวลผลโดยไม่ต้องนับว่าทรัพยากรบางอย่างจำเป็นต้องใช้คุกกี้ที่เฉพาะเจาะจงและการอ้างอิง

และเว็บไซต์อาจบังคับให้บีบอัด z และ "รายละเอียด" อื่น ๆ อีกมากมายที่ "ละเอียด" ในข้อกำหนดของโปรโตคอลโปรโตคอลที่แทบจะไม่ได้รับการแก้ไขและมีข้อยกเว้นหลายประการ

ในขณะที่เป็นไปได้ แต่มันก็เหมือนกันในการสร้างบริการ / โปรโตคอลที่มีอยู่ตั้งแต่เริ่มต้นดังนั้นมันก็เหมือนกันที่จะพูดว่า "ฉันสามารถสร้าง Windows ได้เพียง" poking "เลขศูนย์และคน <- เป็นไปได้ แต่มันจะใช้เวลานานมากในการทำสิ่งนั้น

ตัวอย่างของเว็บไซต์ที่คุณไม่สามารถโหลดได้อย่างเต็มที่คือ gmail.com เพราะมันมีความซับซ้อนเป็นพิเศษเช่น: จาวาสคริปต์ (ยกเว้น Lynx เพราะไม่ใช่เจ้าของภาษาและไม่ใช่ประสบการณ์จริง)

อย่างไรก็ตามเว็บและอีเมลภายนอกมีโปรโตคอลบางอย่างที่ไม่สามารถเข้าถึงได้โดยใช้ telnet ธรรมดาเพราะต้องมีการจับมือกันในเวลาที่เหมาะสม (ไม่กี่วินาทีถ้าไม่น้อยกว่า) ที่ไม่สามารถลอกเลียนแบบได้โดยใช้การแยกการโทรไปยัง telnet สองครั้ง ใช้การจัดเรียงอัตโนมัติบางอย่างเช่นเรากำลังพูดถึงลูกค้าที่ไม่ได้เป็นลูกค้า telnet ที่เหมาะสม แต่มันมากกว่า


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