netcat
可能是這個錯誤的工具。或者至少你會想用其他程序來爲它提供輸入。
如果我這樣做了,我會用python或C編寫一些東西,它們都會連接到服務器併爲它發送它所需的任何數據(並接收/解釋響應),完全廢除nc
。網絡上有很多例子。
您可以使用語法b'\x16'
對您的<sy>
字符在Python中以字節字符串編碼控制字符。大多數其他語言具有相同的功能。
我不能確定這些字符究竟是什麼。看起來它們可能是標準的ASCII控制字符,但它們沒有使用標準縮寫(例如參見http://www.theasciicode.com.ar/)。所以大概你正在看的文檔有一個相應值的列表。假設爲了舉例,<eq>
對應於ASCII EQ字符和<et>
對應於ASCII EOT(並且假定您已經知道<sy>
等同於ASCII SYN),則您所需的字符串<sy><sy><eq>111<et>
可以用python字節字符串編碼:b'\x16\x16\x05111\x04'
(或等價b'\x16\x16\x05\x31\x31\x31\x04'
如果你喜歡規律性:在1
字符是簡單的ASCII數字,這樣你就可以用等值的二進制數b'\x31'
替換每個1
)
要返回nc
,試圖在鍵入控制字符到nc
從終端輸入在大多數情況下,儘管可能會很困難且容易出錯。您需要知道等效的控制字符映射(例如,0x16是「Ctrl-V」),並且需要知道如何讓終端接受該文字字符(巧合的是,在Linux中,您必須在大多數控制字符之前用Ctrl-V輸入它們作爲輸入,並避免以通常的方式解釋它們:Ctrl-D == EOF,Ctrl-C == Interrupt,Ctrl-W == Delete-Previous-Word等)。
所以,如果你想進入上述數據爲nc
的命令行輸入,你需要鍵入這些字符:
Ctrl-V Ctrl-V <sy>/SYN
Ctrl-V Ctrl-V <sy>/SYN
Ctrl-V Ctrl-E <eq>/ENQ
1
1
1
Ctrl-V Ctrl-D <et>/EOT
不過還有一點需要注意的是,通常nc
實際上不會發送任何東西,直到你輸入一個換行符(即按回車鍵)。然後這個換行符也會被髮送到服務器,這可能不是你想要的。
我想使用Ruby on Rails框架和稱爲Bindata的gem來實現這個目標,但是還沒有成功。 – Arif