argv
Cプログラムの引数としてランダムバイトを指定する必要があります。
ただし、バイトが二重引用符で囲まれている場合は、次のようにゼロバイトが削除されます。
v="$(python -c 'import sys; sys.stdout.write("ABC\x18\x10\x00\x00\x10")')"
echo -n $v | hexdump -C
00000000 41 42 43 18 10 10 |ABC...|
00000006
実際、二重引用符はhexdump
出力に表示されるようにゼロバイトを削除します。
python -c 'import sys; sys.stdout.write("ABC\x18\x10\x00\x00\x10")' | hexdump -C
00000000 41 42 43 18 10 00 00 10 |ABC.....|
00000008
これらのランダムバイトをプログラムパラメータとしてどのように提供できますか?
答え1
Cプログラムのargvパラメーターにランダムバイトを指定する必要があります。
これはできません。定義によると、argvパラメーターは0で終わる文字列であるため、NULバイトを含めることはできません。パイプ、ファイル、共有メモリなどを介してプログラムにデータを渡すか、いくつかのエスケープとエスケープ解除を実行する必要があります。
bash
その文字列(asまたはdo)でNULバイトがサポートされていても、zsh
これらの文字列はコマンドライン引数や環境変数を介して他のプログラムに渡すことはできません。perl
python