十六进制输入的终端转义字符

Bja*_*sen 9 networking linux terminal gnome ubuntu

在我通常的 gnome 终端中,我做了一个

netcat -u somewhere 1234
Run Code Online (Sandbox Code Playgroud)

开始向某处发送 UDP 数据包。我需要传输以下 5 个字节,以十六进制表示:“01 00 af 0f e1”。现在我如何在我的终端中键入一个转义序列,使其将这些确切的 5 个字节发送到 netcat 的标准输入?

更新: 只是为了澄清。我知道将我想要的字节实际输入到程序中的几种方法。这不是问题。问题是,在程序启动后,我在终端中输入什么样的按键顺序,以输入键盘上未显示的十六进制字符。(例如 0x00、0x01 或 0x0f。)

我开始认为这根本不可能,但是如果这是结论,我会有点惊讶。

小智 9

您可以使用echo -e, (我认为 Richardhoskins 是这个意思。)像这样:

/bin/echo -n -e "\x01\x00\xaf\x0f\xe1" | netcat -u somewhere 1234
# -n: no newline at end, -e: interpret escapes
Run Code Online (Sandbox Code Playgroud)

如果您的 echo 实现是旧的,(或者根本不是 GNU-encrusted),老派的方法是使用八进制:

/bin/echo -n -e "\001\000\257\017\341" | netcat -u somewhere 1234
Run Code Online (Sandbox Code Playgroud)

是的,八进制是方式,方式老派。看看ibaseobase在男人bc。检查 echo 是否正确使用od("octal dump") "od -tx1" 表示十六进制,“od -to1” 表示八进制。