サーバー上で実行されている別のアプリケーション (アクセス権がない) に文字列を送信しようとしていました。文字列にヌル文字が含まれています。スクリプトで次のコードを実行すると、
print('abc\x00\x91\x11\x01123')
出力は abc\x00\x91\x11123 です。
ターミナルで同じコードを実行すると、次のようになります。
python -c 'print("abc\x00\x91\x11\x01123")'
出力として取得します:abc�123
私の場合、これは望ましい出力です。両方の出力が異なるのはなぜですか? スクリプトで印刷機能を実行するときに 2 番目の出力を取得するにはどうすればよいですか?
編集:何が違いを引き起こしているのかを突き止めました。pwntools がその動作を引き起こしました。しかし、私はまだその理由を本当に理解できません。次のコード:
#!/usr/env/python
import pwn
print('abc\x00\x91\x11\x01123')
結果は
abc\x00\x91\x11123
pwn をインポートしない場合、結果は予想どおり abc�123 になります。