Kết nối với HTTPS bằng netcat (nc) [đã đóng]


41

Tôi đang làm bài tập về nhà cho trường đại học của tôi. Nhiệm vụ là tìm nạp trang web trên HTTPS bằng nc (netcat).

Để tìm nạp một trang qua HTTP, tôi làm điều này:

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

Trong request.txt tôi có yêu cầu HTTP 1.1

GET / HTTP/1.1
Host: <someserver>

Bây giờ ... Điều này hoạt động tốt. Làm cách nào tôi có thể tìm nạp trang web sử dụng HTTPS?

Tôi nhận được chứng chỉ trang như thế này. Và đây là điểm mà tôi bị mắc kẹt

openssl s_client -connect <someserver>:443

socat - OPENSSLsẽ làm việc, nhưng đó có thể không phải là nhiệm vụ của bạn.
Tobu

s / cắt dán / đại học /, s / phù thủy / mà /
Jukka Dahlbom

1
Bạn có thể sử dụng chuyển hướng bash để tránh sử dụng cat, tức là nc -w 5 <someserver> 80 < request.txt.
RastaJedi

Xem Cái gì thay thế cho nc-lv cho HTTPS? cho cách khác xung quanh.
Nickolay

Câu trả lời:


53

nckhông làm https. openssl s_clientgần như bạn sẽ nhận được. Làm một cái gì đó như thế này:

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

3
Ý tôi là, trừ khi nhiệm vụ của bạn là viết một số mã làm SSL. Đó sẽ là lãnh thổ StackOverflow :)
Bill Weiss

6
Tôi đã thử điều này, nhưng tôi không nhận được những gì máy chủ gửi lại cho tôi trong stdout ...
Chó ăn thịt mèo thế giới

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

Tương tự trên Siêu người dùng: https://superuser.com/questions/346958/can-the-telnet-or-netcat-clents-cransicate-over-ssl

Đã thử nghiệm trên Ubuntu 18.04.


Có cách nào để nhận lệnh của bạn và chuyển các lệnh tên người dùng và mật khẩu vào đó cho các trang https yêu cầu xác thực không?
dùng53029

@ user53029 Tôi nghĩ không phải cho hầu hết các trang web, nơi xác thực hoạt động bằng cách điền vào biểu mẫu và cung cấp cho bạn cookie phiên. Trừ khi đó là một trong số rất ít các trang web sử dụng các phương thức xác thực khác như en.wikipedia.org/wiki/Basic_access_authentication . Bạn cũng có thể tự điền vào biểu mẫu và sau đó gửi cookie trong khi nó hợp lệ. Hoặc nếu bạn đang tuyệt vọng, hãy sử dụng stackoverflow.com/questions/13376189/ từ
Ciro Santilli 改造 心 心 事件

ncat không phải là nc, ncat không hỗ trợ giữ kết nối khi gửi tải trọng như nc. Câu hỏi yêu cầu một câu trả lời phản đối bằng cách sử dụng nc chứ không phải các ứng dụng khác.
điện tử

1
@ e-info128 cảm ơn vì thông tin đó. Triết lý của tôi là: khi tôi google một cái gì đó, và tôi nhấp vào trang này, tôi sẽ tìm thấy câu trả lời mà tôi muốn.
Ciro Santilli 心 心

là gì sudo apt-get install nmap??
Alexander Mill

6

Bạn có thể muốn sử dụng stunnel.

Một chương trình GNU cho phép mã hóa các kết nối TCP tùy ý bên trong Lớp cổng bảo mật (SSL).

http://www.stunnel.org

Nó rất UNIX-y. Một công cụ tuyệt vời cho một nhiệm vụ đơn giản.


1
stunnel + nc sẽ hoạt động, tôi cho rằng. Tư tưởng tốt.
Bill Weiss

2

Hỏi prof hoặc TA để được hỗ trợ. Bạn sẽ không bao giờ thử làm HTTPS trên netcat trong thế giới thực ( openssl s_clientsẽ là công cụ lựa chọn đầu tiên của tôi, nhưng có những lựa chọn khác) vì vậy cơ hội tìm được câu trả lời "đúng" mà prof muốn bằng cách hỏi mọi người trong thực tế thế giới là thấp Có lẽ tôi sẽ xem qua tất cả các slide / ghi chú từ các bài giảng; thông thường những câu hỏi "không thể" này thực sự được trả lời trong các bài giảng, và được hỏi chỉ để xem ai thực sự chú ý trong lớp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.