netcat
, вероятно, не подходит для этого. Или, по крайней мере, вы захотите использовать какую-то другую программу для ввода данных.
Если бы я делал это, я бы закодировал что-то на python или C, которое одновременно подключалось бы к серверу и передавало ему любые данные, которые мне нужны для его отправки (и получения/интерпретации ответов), полностью исключая nc
. В сети много примеров.
Вы можете закодировать управляющие символы в строке байтов в python с синтаксисом b'\x16'
для вашего символа <sy>
. Большинство других языков имеют эквивалентную возможность.
Я не могу точно сказать, что это за персонажи. Скорее всего, это стандартные управляющие символы ASCII, но в них не используются стандартные сокращения (см. http://www.theasciicode.com.ar/ например). Таким образом, предположительно документация, которую вы просматриваете, содержит список соответствующих значений. Предполагая для примера, что <eq>
соответствует символу ASCII ENQ, а <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, поэтому вы можете заменить каждый 1
его двоичным эквивалентом b'\x31'
)
Чтобы вернуться к 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
на самом деле ничего не отправит, пока вы не введете новую строку (т.е. не нажмете клавишу возврата). Затем этот символ новой строки также будет отправлен на сервер, что может быть не тем, что вам нужно.
person
Gil Hamilton
schedule
13.04.2017