2009-07-08 19 views
7

Tôi đang cố gắng để ngăn chặn tiếng địa phương của một mật khẩu trong một phiên telnet bằng cách gửi 0xFF 0xFD 0x2D (IAC DO SUPPRESS_LOCAL_ECHO). Điều này hoạt động tốt.Làm thế nào để unsupress tiếng địa phương

Sự cố của tôi đang bật âm thanh cục bộ sau mật khẩu. Tôi đang gửi 0xFF 0xFE 0x2D (IAC DONT SUPPRESS_LOCAL_ECHO). Nhưng tôi không thấy bất kỳ lệnh nào mà tôi gõ sau đó.

Tôi đang sử dụng chương trình MS Telnet để kết nối.

IAC mô tả here.

Các Suppress Local Echo được định nghĩa here

+0

bạn có thể có thể cung cấp mã bạn sử dụng để gửi những đàn áp tiếng vang địa phương? Xem câu hỏi liên quan của tôi - http://stackoverflow.com/questions/6410579/how-to-disable-echo-when-sending-a-terminal-command-using-apache-commons-net-teln :) – mre

+0

Tôi không thể tìm một cách tốt để làm điều này. Cách giải quyết của tôi là gửi một backspace và sau đó một '*' để cố gắng ghi đè lên nhân vật.Điều này làm việc chủ yếu, nhưng nếu người dùng gõ nhanh 2 ký tự có thể xuất hiện và chỉ có 1 backspace được gửi đi. – Robert

Trả lời

-1

Gửi một phím xóa lùi và sau đó là *. Điều này sẽ sao lưu con trỏ và sau đó in * trên ký tự mà chúng vừa in. Nếu đó là kết nối chậm, nhân vật có thể ở đó trong một khoảng thời gian. Ngoài ra hãy tìm '\ n' và không cố ghi đè lên.

+0

Tôi không chắc đây có phải là câu trả lời được chấp nhận hay không (tôi biết, 8 tuổi!). Đây là ẩn nó _after_ nó đã được hiển thị _and_ gửi thêm ký tự. Lưu ý rằng nhiều khách hàng (nghĩ rằng Linux, Mac) sẽ không giải thích đúng về backspace. – Abel

9

Trong phiên telnet của bạn trong telnet.exe bạn có thể bật lên dấu nhắc telnet bằng cách nhấn tổ hợp phím Ctrl + ]

Sau đó, gõ "set localecho "hoặc" unset localecho "để bật hoặc tắt localecho.

Bấm Nhập để quay lại phiên telnet của bạn.

+2

Nhưng tôi muốn làm điều này từ phía xa. Phía xa là yêu cầu mật khẩu. Tôi đã nhận được sự đàn áp để làm việc, không phải là sự mất trí. – Robert

1

Theo điều tra của tôi ngày hôm nay:

  1. Client MS Telnet chấp nhận 'đặt localecho' và 'localecho unset' nhưng không làm gì với họ trừ kỷ lục nhà nước. Nó không gửi bất cứ thứ gì lên dây. Tình trạng thực sự của khách hàng vẫn là 'không có tiếng vang địa phương' bất kể bạn làm gì và những gì 'd' nói.

  2. Máy chủ MS Telnet gửi IAC, WILL, ECHO và trả lời chấp nhận IAC, DO, ECHO và IAC, DONT, ECHO, nhưng hoàn toàn bỏ qua chúng, còn lại trong trạng thái WILL ECHO trong suốt. Bạn có thể gửi IAC, DO, ECHO hoặc IAC, DONT, ECHO sau và thậm chí sẽ không trả lời.

Theo đó, nếu bạn đang sử dụng máy khách MS để nói chuyện với máy chủ MS Telnet hoặc sử dụng máy khách khác để nói chuyện với máy chủ MS Telnet, bạn tốt hơn ở chế độ không có tiếng địa phương. sẽ nhận được lặp lại kép.

Windows Vista 64.

+0

Máy khách MS Telnet được biết là bị hỏng về xử lý tùy chọn ECHO - khi Máy chủ lưu trữ kết nối Telnet trong "ECHO", điều này có nghĩa là nó sẽ lặp lại đầu kia __what được gửi tới nó__ (có thể không chính xác sao chép, nó được phép "nấu" dữ liệu) - tuy nhiên điểm bắt đầu cho bất kỳ máy khách/máy chủ Telnet nào không được gửi cho ECHO cho đến khi cả hai bên đồng ý với nó. Ngoài ra đối với tùy chọn cụ thể này, không được phép cho cả hai đầu lặp lại những gì họ nhận được vì sau đó các ký tự sẽ bị ECHO vô thời hạn - ngoại trừ MS sẽ nói nhưng sẽ không bao giờ (!) Và giữ đầu kia trong "no ECHO". – SlySven

1

Trình tự sai ở trên. Theo một số tài liệu tôi tìm thấy, trình tự của tôi phải sai (SILLN/WONT lộn). Tuy nhiên nó đã làm việc với Putty và MS Telnet - kỳ lạ.

Vui lòng thử này:

// Supress Echo on client: 
out.write(0xFF); // IAC 
out.write(0xFB); // WILL 
out.write(0x01); // ECHO 

// Enable again with: 
out.write(0xFF); // IAC 
out.write(0xFC); // WONT 
out.write(0x01); // ECHO 
Các vấn đề liên quan