Подключение к HTTPS с помощью netcat (nc) [закрыто]


43

Я работаю над домашним заданием для моего колледжа. Задача - извлечь веб-страницу по HTTPS с помощью nc (netcat).

Чтобы получить страницу по HTTP, я делаю это:

cat request.txt | nc -w 5 <someserver> 80

В request.txt у меня HTTP 1.1 запрос

GET / HTTP/1.1
Host: <someserver>

Теперь ... Это отлично работает. Как я могу получить веб-страницу, которая использует HTTPS?

Я получаю сертификат страницы, как это. И это точка, в которой я застрял

openssl s_client -connect <someserver>:443

socat - OPENSSLбудет работать, но это, вероятно, не ваше назначение.
Тобу

s / коллаж / колледж /, s / witch / which /
Юкка Далбом

1
Вы можете использовать Баш переназначение , чтобы избежать использования cat, то есть nc -w 5 <someserver> 80 < request.txt.
RastaJedi

Ответы:


54

ncне делает https. openssl s_clientтак близко, как вы получите. Сделайте что-то вроде этого:

$ cat request.txt | openssl s_client -connect server:443

3
Я имею в виду, если ваше назначение не состоит в том, чтобы написать код, который выполняет SSL. Это будет территория StackOverflow :)
Билл Вайс,

7
Я пробовал это, но я не получаю то, что сервер отправляет мне обратно в stdout ...
Dog eat cat world

32

ncat --ssl

sudo apt-get install nmap
printf 'GET / HTTP/1.1\r\nHost: github.com\r\n\r\n' | ncat --ssl github.com 443

То же самое для супер пользователя: https://superuser.com/questions/346958/can-the-telnet-or-netcat-clients-communicate-over-ssl

Проверено на Ubuntu 18.04.


Есть ли способ принять вашу команду и передать в нее команды имени пользователя и пароля для сайтов https, которые требуют аутентификации?
user53029

@ user53029 Я думаю, что не для большинства веб-сайтов, где аутентификация работает, заполнив форму и предоставив вам сеансовые куки. Если только это не один из очень немногих веб-сайтов, который использует другие методы аутентификации, такие как en.wikipedia.org/wiki/Basic_access_authentication . Вы также можете вручную заполнить форму, а затем отправить файл cookie, пока он действителен. Или, если вы отчаянно пользуетесь stackoverflow.com/questions/13376189/…
Ciro Santilli,

ncat не является nc, ncat не поддерживает сохранение соединения при отправке полезной нагрузки, например, nc. Вопрос требует объективного ответа, используя nc, а не другие приложения.
e-info128

1
@ e-info128 спасибо за эту информацию. Моя философия такова: когда я что-то гуглю и нажимаю на эту страницу, найду ли я нужный мне ответ.
Чиро Сантилли 新疆 改造 中心 法轮功 六四 事件

что это sudo apt-get install nmap??
Александр Миллс

6

Вы, вероятно, хотите использовать Stunnel.

Программа GNU, позволяющая шифровать произвольные TCP-соединения внутри Secure Sockets Layer (SSL).

http://www.stunnel.org

Это очень UNIX-у. Один отличный инструмент для одной простой задачи.


1
Полагаю, что stunnel + nc будет работать. Хорошая мысль.
Билл Вайс

2

Спросите проф или TA о помощи. Вы бы никогда не попытались сделать HTTPS поверх netcat в реальном мире (это openssl s_clientбыл бы мой предпочтительный инструмент первой линии, но есть и другие варианты), так что шансы найти «правильный» ответ, который хочет проф, спрашивая людей в реальном Мир низок. Я бы, наверное, просмотрел все слайды / заметки из лекций; обычно на такие «невозможные» вопросы на самом деле отвечают в лекциях, и их задают просто для того, чтобы посмотреть, кто на самом деле обращает внимание в классе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.