Menghubungkan ke HTTPS dengan netcat (nc) [ditutup]

41

Saya sedang mengerjakan tugas pekerjaan rumah untuk kuliah saya. Tugas adalah untuk mengambil halaman web di HTTPS menggunakan nc (netcat).

Untuk mengambil halaman melalui HTTP, saya melakukan ini:

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

Di request.txt saya punya permintaan HTTP 1.1

GET / HTTP/1.1
Host: <someserver>

Sekarang ... Ini berfungsi dengan baik. Bagaimana saya bisa mengambil halaman web yang menggunakan HTTPS?

Saya mendapatkan sertifikat halaman seperti ini. Dan ini adalah titik di mana saya mandek

openssl s_client -connect <someserver>:443
Oto Brglez
sumber
socat - OPENSSLakan bekerja, tetapi itu mungkin bukan tugas Anda.
Tobu
s / kolase / kuliah /, s / penyihir / yang /
Jukka Dahlbom
1
Anda dapat menggunakan pengalihan bash untuk menghindari penggunaan cat, yaitu nc -w 5 <someserver> 80 < request.txt.
RastaJedi
Lihat Apa alternatif untuk "nc-l" untuk HTTPS? untuk sebaliknya.
Nickolay

Jawaban:

53

nctidak melakukan https. openssl s_clientsedekat yang Anda dapatkan. Lakukan sesuatu seperti ini:

$ cat request.txt | openssl s_client -connect server:443
Bill Weiss
sumber
3
Maksud saya, kecuali tugas Anda adalah menulis beberapa kode yang menggunakan SSL. Itu akan menjadi wilayah StackOverflow :)
Bill Weiss
7
Saya sudah mencoba ini, tapi saya tidak mendapatkan apa yang server kirim kembali kepada saya di stdout ...
Anjing makan kucing dunia
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

Sama dengan Pengguna Super: https://superuser.com/questions/346958/can-the-telnet-or-netcat-clients-communicate-over-ssl

Diuji pada Ubuntu 18.04.

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
sumber
adakah cara untuk mengambil perintah Anda dan mengirimkan perintah nama pengguna dan kata sandi ke dalamnya untuk https situs yang memerlukan otentikasi?
user53029
@ user53029 Saya pikir tidak untuk sebagian besar situs web, di mana otentikasi bekerja dengan mengisi formulir dan memberi Anda cookie sesi. Kecuali itu adalah salah satu dari sedikit situs web yang menggunakan metode otentikasi lain seperti en.wikipedia.org/wiki/Basic_access_authentication . Anda juga bisa mengisi formulir secara manual, dan kemudian mengirimkan cookie saat valid. Atau jika Anda putus asa gunakan stackoverflow.com/questions/13376189/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
ncat bukan nc, ncat tidak mendukung menjaga koneksi saat mengirim muatan seperti nc. Pertanyaannya memerlukan respons objektif menggunakan nc bukan aplikasi lain.
e-info128
1
@ e-info128 terima kasih atas info itu. Filosofi saya adalah: ketika saya mencari sesuatu di Google, dan saya mengklik halaman ini, apakah saya akan menemukan jawaban yang saya inginkan.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
apa itu sudo apt-get install nmap??
Alexander Mills
6

Anda mungkin ingin menggunakan stunnel.

Program GNU yang memungkinkan untuk mengenkripsi koneksi TCP yang sewenang-wenang di dalam Secure Sockets Layer (SSL).

http://www.stunnel.org

Ini sangat UNIX-y. Satu alat yang bagus untuk satu tugas sederhana.

Yves Junqueira
sumber
1
stunnel + nc akan bekerja, saya kira. Pikiran bagus.
Bill Weiss
2

Minta bantuan prof atau TA. Anda tidak akan pernah mencoba untuk melakukan HTTPS melalui netcat di dunia nyata ( openssl s_clientakan menjadi alat pilihan lini pertama saya, tetapi ada opsi lain) sehingga kemungkinan menemukan jawaban "benar" yang diinginkan oleh prof dengan meminta orang di dunia nyata dunia rendah. Saya mungkin akan membahas semua slide / catatan dari kuliah; biasanya pertanyaan-pertanyaan "mustahil" semacam ini dijawab dalam perkuliahan, dan ditanyakan hanya untuk melihat siapa yang benar-benar memperhatikan di kelas.

womble
sumber