我想使用 Linux Bash shell 将原始字节传递给 (C) 程序。我发现当我尝试传递例如“\x00\xFF\xAB”时,接收输入的程序实际上获取字符串的ASCII 字符代码,而不是将它们解释为原始字节。
我见过人们实现这一点的一种方法是调用python -c 'print("\x00\xFF\xAB")'
和管道输出到被测程序。有没有办法只使用 Bash shell 而不使用 Python 来做到这一点?
我想使用 Linux Bash shell 将原始字节传递给 (C) 程序。我发现当我尝试传递例如“\x00\xFF\xAB”时,接收输入的程序实际上获取字符串的ASCII 字符代码,而不是将它们解释为原始字节。
我见过人们实现这一点的一种方法是调用python -c 'print("\x00\xFF\xAB")'
和管道输出到被测程序。有没有办法只使用 Bash shell 而不使用 Python 来做到这一点?
如果您需要空字节,您可以将它们写入文件并将该文件用作程序的输入,例如:
echo -e -n "\x00\xFF\xAB" > file.bin
程序 < 文件.bin
您还可以使用xxd
将十六进制转换为二进制:
回声“00 FF AB” | xxd -r -p | 程序
使用echo -e
并通过管道连接到程序的输入。
示例:
echo -e "\x41\x42\x43\x44" | <executable>
将写入 ABCD 作为输入。
编辑:您可以传递空字节