Netcat
有什麼方法可以在 Telnet 中只發送“n”嗎?
我想知道是否有任何方法可以讓 telnet 只發送一個
\n
,而不是一個\r\n
.例如,如果一個程序正在偵聽這樣的埠,則列印接收到的任何流量的字節:
nc -l 1234 | xxd -c 1
從 netcat 連接到它
nc localhost 1234
,然後輸入“hi$$ enter $$“:
0000000: 68 h 0000001: 69 i 0000002: 0a .
使用 telnet 連接到它
telnet localhost 1234
,然後輸入“hi$$ enter $$"
0000000: 68 h 0000001: 69 i 0000002: 0d . 0000003: 0a .
Telnet 正在為換行發送 0x0d0a 而不是 0x0a。我知道這是一個 CRLF,而不是 LF。如果我使用
^M
or ,它也會發送 CRLF^J
。我以為我找到了一個直接解決這個問題的解決方案,通過使用
toggle crlf
,但即使設置了這個選項,Telnet 總是發送\r\n
. 我也在各種 telnet 客戶端上試過這個,所以我猜我誤解了切換應該做什麼。有什麼方法可以
\n
通過 telnet 發送,輸入或其他方式?
您可以協商二進制模式。一旦進入此模式,您將無法離開它。協商意味著
telnet
客戶端將向伺服器發送一個特殊的字節序列,如果你沒有實現協議,你將不得不忽略它。後續數據以線路模式不變地發送。客戶:
$ telnet localhost 1234 Connected to localhost. Escape character is '^]'. ^] telnet> set binary Negotiating binary mode with remote host. hi ^] telnet> quit
和伺服器
$ nc -l 1234 | xxd -c 1 00000000: ff . 00000001: fd . 00000002: 00 . 00000003: ff . 00000004: fb . 00000005: 00 . 00000006: 68 h 00000007: 69 i 00000008: 0a .
您的
telnet
客戶可以選擇以二進制模式啟動,或者您可以輸入一個條目~/.telnetrc
localhost set binary
您可以在每個方向上獨立應用二進制模式,因此您可能更喜歡
set outbinary
.