%s
を使用するscanfに非ASCII 16進文字を出力する方法はありますか?私は\x08\xDE\xAD
のような16進数の文字を挿入しようとしています(バッファオーバーフローを示すため)。scanf( "%s")に非ASCII文字を入力
入力はコマンドラインパラメータではなく、プログラム内部のscanfです。
%s
を使用するscanfに非ASCII 16進文字を出力する方法はありますか?私は\x08\xDE\xAD
のような16進数の文字を挿入しようとしています(バッファオーバーフローを示すため)。scanf( "%s")に非ASCII文字を入力
入力はコマンドラインパラメータではなく、プログラム内部のscanfです。
「scanf()
」と言うと、おそらくこれ以外のデータが提供されている可能性があります。プログラム、おそらくPerlやPythonスクリプトを使ってデータを生成し、非ASCII文字をプログラムの標準入力に書き込むことはできますか?端末のように見えるように標準入力が必要な場合は、それを扱うexpect
を調査する必要があります。これは問題に対処する一般的な方法です。
私はあなたがscanf
と読んでいるので、stdinに任意のデータを送りたいと思っています。
シェルを使用してデータを作成し、プログラムにパイプすることができます。
printf '\x08\xDE\xAD' | yourprogram
(%s
形式でscanf
が空白で停止するため)、これは唯一限り供給すべき空白文字が存在しないように動作することに注意してください。
Windows上で 'printf'コマンドがない場合は、ファイルを作成して' stdin'を 'your program
なぜ、あなたのプログラムの標準入力に 'fprintf(" \ 0xDE ")しないのですか? –
これらの文字をキーボードに入力することができれば、それはうまくいくはずです。それ以外の場合は、リダイレクト、 './a.out
私の最初の編集が終わりませんでした。入力がコマンドライン引数だった場合、あなたが言っていることはうまくいくでしょう。これはコマンドライン引数ではありません。そして、私が印刷したい文字は印刷可能ではありません。 – asudhak