设置SSL连接并发送GET信息

Setting up SSL connection and sending GET information

本文关键字:GET 信息 并发 SSL 连接 设置      更新时间:2023-10-16

如果这是正确的部分,不是100%,但我认为是这样,因为这是一个关于如何编程的问题。

在学习了"计算机网络"课程后,我对一些我想尝试的东西有了一些想法。其中之一是自动登录到我们的"路由器"上本地托管的网页。

因此,该网站是本地的,比方说在192.168.150.1上-点击"免费登录"链接,您将使用一个伪帐户登录,我们将称之为Alice(我们有ip地址192.168.150.74)。因此,如果您点击该链接,您会发送一个GET请求,如:

192.168.0.1/login?dst=&username=T-Alice

现在我用wireshark检查数据包流,它是加密的——这就是数据包流:

No.     Time        Source                Destination           Protocol Info
1 0.000000    192.168.150.74        192.168.150.1         TCP      50704 > https [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=37133 TSER=0 WS=7
2 0.001304    192.168.150.1         192.168.150.74        TCP      https > 50704 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM=1 TSV=17344316 TSER=37133 WS=1
3 0.001372    192.168.150.74        192.168.150.1         TCP      50704 > https [ACK] Seq=1 Ack=1 Win=14720 Len=0 TSV=37133 TSER=17344316
4 0.001969    192.168.150.74        192.168.150.1         TLSv1    Client Hello
5 0.003568    192.168.150.1         192.168.150.74        TCP      https > 50704 [ACK] Seq=1 Ack=406 Win=6864 Len=0 TSV=17344316 TSER=37133
6 0.010537    192.168.150.1         192.168.150.74        TLSv1    Server Hello, Certificate, Server Hello Done
7 0.010587    192.168.150.74        192.168.150.1         TCP      50704 > https [ACK] Seq=406 Ack=1132 Win=16896 Len=0 TSV=37134 TSER=17344316
8 0.013352    192.168.150.74        192.168.150.1         TLSv1    Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
9 0.051304    192.168.150.1         192.168.150.74        TCP      https > 50704 [ACK] Seq=1132 Ack=732 Win=7936 Len=0 TSV=17344321 TSER=37134
10 0.269299    192.168.150.1         192.168.150.74        TLSv1    Change Cipher Spec, Encrypted Handshake Message
11 0.270405    192.168.150.74        192.168.150.1         TLSv1    Application Data
12 0.271888    192.168.150.1         192.168.150.74        TCP      https > 50704 [ACK] Seq=1191 Ack=1377 Win=9226 Len=0 TSV=17344343 TSER=37160
13 0.288841    192.168.150.1         192.168.150.74        TLSv1    Application Data, Application Data
14 0.328065    192.168.150.74        192.168.150.1         TCP      50704 > https [ACK] Seq=1377 Ack=2625 Win=19840 Len=0 TSV=37166 TSER=17344344

现在我想问(并做…)的是:

有没有可能制作一个程序(最好是用C或C++编写,但lang并不重要,除非它们中的一些有更好的lib..)为我设置这个安全连接,这样我就可以将GET信息设置到路由器并登录?或者在代码中有更简单的方法可以做到这一点吗?我可以让程序"访问"192.168.150.1并将数据包创建和SSL留给内核吗?(-->尽管我认为SSL必须由应用程序本身处理。)

欢迎使用Windows和unix解决方案/指南。。我想为两个人做这个。

很抱歉,如果这"令人困惑",我试着尽可能清楚地问这个问题:p-所以我只想在向路由器发送GET信息方面得到一些帮助,就好像我手动访问了页面并点击了链接一样。

如果你真的想自己处理HTTP编程(发送GET命令等等),也许是为了学习,但有一些东西可以为你处理SSL/TLS,你可以使用类似stunnel的东西来连接该服务器,并使用你自己的应用程序来连接隧道的本地端。

通常,更好的选择是使用同样支持SSL/TLS的HTTP库。Libcurl就是一个很好的例子。

当然可以,您只需要实现以下序列:

  1. 创建到HTTPS服务器的SSL连接
  2. 发送HTTP GET请求
  3. 从服务器读取响应
  4. 解析HTTP响应中的HTML内容

有很多使用openssl从服务器请求HTTP页面的例子,我在谷歌上搜索"openssl-https-example"找到了这个例子。在我看来,真正的挑战是解析HTML内容,这已经在stackoverflow上讨论过了。

我建议您在用C++实现之前先使用Python尝试一下,祝您好运!