Как интерактивно набрать \ r \ n-завершенный запрос в netcat?

6090
Vi.
$ nc example.com 80 GET / HTTP/1.1 Host: example.com   HTTP/1.1 200 OK ... 

Это работает, разделитель строк только 0Aздесь, а не требуется 0D0A.

Как мне ввести 0D0Aразделенный запрос в netcat?

Легко сделать одноразовую вещь, printfнабирая \r\nкаждый раз вручную, или реализовать что-то todosвроде Perl-oneliner и передать его nc, но, может быть, есть какой-то простой способ, который я пропускаю?

6

2 ответа на вопрос

9
meuh

Мой netcatимеет возможность -Cили --crlfзаменить \nна \r\nна стандартный ввод.

Альтернативно, это зависит от того, какой терминал вы используете. Мои настройки по умолчанию можно увидеть по:

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

Это показывает буквально следующий символ для ввода control-V. Таким образом, control-vпосле ввода control-mбудет вставлен возврат каретки (в отличие от новой строки, которую вы получаете, когда нажимаете клавишу returnили enter).

Nice find, didn't know about `-C`. cYrus 8 лет назад 0
Как насчет отправки любого байта в интерактивном режиме через netcat, например, `0x01`,` 0x02` и т. Д. Возможно ли это? Jaime Hablutzel 6 лет назад 0
1
cYrus

Вы можете передать строку к 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 
How do I do this interactively, entering another request after I see the reply? Vi. 8 лет назад 0