Łączenie z HTTPS za pomocą netcat (nc) [zamknięte]

41

Pracuję nad zadaniem domowym dla mojej uczelni. Zadanie polega na pobraniu strony internetowej na HTTPS za pomocą nc (netcat).

Aby pobrać stronę przez HTTP, robię to:

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

W request.txt mam żądanie HTTP 1.1

GET / HTTP/1.1
Host: <someserver>

Teraz ... To działa dobrze. Jak mogę pobrać stronę internetową, która korzysta z HTTPS?

Otrzymuję taki certyfikat strony. I w tym momencie utknąłem

openssl s_client -connect <someserver>:443
Oto Brglez
źródło
socat - OPENSSLdziałałoby, ale prawdopodobnie nie jest to twoje zadanie.
Tobu,
s / collage / college /, s / witch / which /
Jukka Dahlbom
1
Możesz użyć przekierowania bash, aby uniknąć używania cat, tj nc -w 5 <someserver> 80 < request.txt.
RastaJedi

Odpowiedzi:

53

ncnie robi https. openssl s_clientjest tak blisko, jak tylko się da. Zrób coś takiego:

$ cat request.txt | openssl s_client -connect server:443
Bill Weiss
źródło
3
Chyba że Twoim zadaniem jest napisanie kodu obsługującego SSL. To byłoby terytorium StackOverflow :)
Bill Weiss,
6
Próbowałem tego, ale nie dostaję tego, co serwer odsyła mi na standardowe wyjście ...
Pies zjada świat kota
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

To samo w przypadku Super User: https://superuser.com/questions/346958/can-the-telnet-or-netcat-clients-communicate-over-ssl

Testowane na Ubuntu 18.04.

Ciro Santilli
źródło
Czy istnieje sposób na przekazanie polecenia i przekazanie do niego poleceń użytkownika i hasła dla witryn https wymagających uwierzytelnienia?
user53029
@ user53029 Myślę, że nie w przypadku większości stron internetowych, w których uwierzytelnianie działa poprzez wypełnienie formularza i udzielenie sesyjnych plików cookie. Chyba że jest to jedna z niewielu stron internetowych, które korzystają z innych metod uwierzytelniania, takich jak en.wikipedia.org/wiki/Basic_access_authentication . Możesz również ręcznie wypełnić formularz, a następnie wysłać plik cookie, gdy jest on ważny. Lub jeśli jesteś zdesperowany, użyj stackoverflow.com/questions/13376189/...
Ciro Santilli 16 改造 中心 法轮功 六四 事件
ncat nie jest nc, ncat nie obsługuje utrzymywania połączenia przy wysyłaniu ładunku tak jak nc. Pytanie wymaga obiektywnej odpowiedzi przy użyciu nc, a nie innych aplikacji.
e-info128
1
@ e-info128 dzięki za te informacje. Moja filozofia jest taka: kiedy szukam czegoś w Google i klikam tę stronę, znajdę odpowiedź, której chcę.
Ciro Santilli 25 改造 中心 法轮功 六四 事件
co to jest sudo apt-get install nmap??
Alexander Mills
6

Prawdopodobnie chcesz użyć stunnela.

Program GNU umożliwiający szyfrowanie dowolnych połączeń TCP wewnątrz Secure Sockets Layer (SSL).

http://www.stunnel.org

To bardzo UNIX-y. Jedno świetne narzędzie do jednego prostego zadania.

Yves Junqueira
źródło
1
stunnel + nc działałoby, jak sądzę. Dobra myśl.
Bill Weiss,
2

Poproś o pomoc prof lub TA. Nigdy nie próbowałbyś robić HTTPS przez netcat w prawdziwym świecie ( openssl s_clientbyłoby to moje wybrane narzędzie pierwszej linii, ale są inne opcje), więc szanse na znalezienie „właściwej” odpowiedzi, jakiej chce prof, pytając ludzi w prawdziwym świecie świat jest niski. Prawdopodobnie przejrzałbym wszystkie slajdy / notatki z wykładów; zazwyczaj na tego rodzaju „niemożliwe” pytania w rzeczywistości udzielane są odpowiedzi na wykładach i proszone o sprawdzenie, kto tak naprawdę zwraca uwagę na zajęciach.

womble
źródło