Netcat

有什麼方法可以在 Telnet 中只發送“n”嗎?

  • December 18, 2016

我想知道是否有任何方法可以讓 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。如果我使用^Mor ,它也會發送 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.

引用自:https://unix.stackexchange.com/questions/331109