対話するサービスがあるとします。netcat を使用すると、次のようになります。
> nc 127.0.0.1 8080
hello
hi how are you?
フォーマット文字列などの攻撃を実行するために、このサービスとのやり取りを自動化したいと考えています。そこで、Python スクリプトを作成しましたが、それを機能させるのは本当に大変でした。コードは次のとおりです。
t = Telnet(HOST, PORT)
t.write('2\n')
for _ in xrange(10)): print(t.read_some())
t.write('3\n')
for _ in xrange(12)): print(t.read_some())
ここでの問題は、サービスからの応答です。このスクリプトに期待していた動作は次のとおりです。
- 「こんにちは」などのリクエストを送信する
- 応答を取得します。「こんにちは、お元気ですか?」
この場合、サービスは非常に単純ですが、オプションのメニューまたはウェルカム画面を出力するサービスがあるとします。これらすべてを読み、送信したコマンドへの応答を手動で見つける必要がありました ( for _ in xrange を使用)。 ..)。
要約すると、入力コマンドの応答のみを考慮して、そのようなサービスとやり取りする最良の方法は何ですか?
Pythonがこのことに適しているかどうかはわかりません。ソケットを使用してみましたが、関数 recv のせいで telnet よりもさらに悪かったです。