web-dev-qa-db-ja.com

netcatで対話形式で\ r \ n終了クエリを入力するにはどうすればよいですか?

$ nc example.com 80
GET / HTTP/1.1
Host: example.com 

HTTP/1.1 200 OK
...

動作します。ここでは、行区切り文字は必須の0Aではなく、0D0Aです。

Netcatで0D0Aで区切られたクエリを入力するにはどうすればよいですか?

printfを使用して一度に手動で\r\nを入力するか、todosのようなPerlワンライナーを実装してncにパイプすることで簡単に1回実行できます。しかし、おそらく私が見逃す簡単な方法はありますか?

11
Vi.

私のnetcatにはオプション-Cまたは--crlf 交換する \n 沿って \r\n stdinで。

または、使用している端末によって異なります。私のデフォルト設定は、次の方法で確認できます。

$ stty -a
... lnext = ^V; ...

これは、入力用のliteral-next文字が control-V。タイピング control-v に続く control-m 改行を挿入します(改行はreturnまたはenterキーを押したときに得られるものです)。

14
meuh

ncに文字列をパイプすることができます:

echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | nc example.com 80

確認する:

$ echo -ne 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' | hd
00000000  47 45 54 20 2f 20 48 54  54 50 2f 31 2e 31 0d 0a  |GET / HTTP/1.1..|
00000010  48 6f 73 74 3a 20 65 78  61 6d 70 6c 65 2e 63 6f  |Host: example.co|
00000020  6d 0d 0a 0d 0a                                    |m....|
00000025
2
cYrus