设置SSL连接并发送GET信息
Setting up SSL connection and sending GET information
如果这是正确的部分,不是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就是一个很好的例子。
当然可以,您只需要实现以下序列:
- 创建到HTTPS服务器的SSL连接
- 发送HTTP GET请求
- 从服务器读取响应
- 解析HTTP响应中的HTML内容
有很多使用openssl从服务器请求HTTP页面的例子,我在谷歌上搜索"openssl-https-example"找到了这个例子。在我看来,真正的挑战是解析HTML内容,这已经在stackoverflow上讨论过了。
我建议您在用C++实现之前先使用Python尝试一下,祝您好运!
- 正在查找文档以获得PS4平台的C++中的设备信息
- Cpp-Tuple使用带有变量的get
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何设置一个范围来提取我想要获得的信息
- 通过 get-Method 访问变量在类外不起作用
- 系统参数信息A 与 SPI_GETMOUSE 返回 0
- 为什么 gcovr 会生成空覆盖率统计信息?
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- Boost.Asio/OpenSSL HTTPS GET certificate trouble
- C++中是否有任何函数等同于python中字典的get函数?
- 使用istringstearm和get行缓慢读取文件
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- 如何将 c++ get 函数代码转换为 opencv 算法中使用的 python
- 调试符号中缺少 QObject 类信息(编辑但存在其他 Qt 类)
- 为什么数组大小信息可用于"sizeof"运算符和 delete[] 运算符,但在将数组作为参数传递到
- Pisarze - 来自波兰奥林匹克信息学的数据分析任务
- 设置SSL连接并发送GET信息
- 从Arduino以太网客户端Get中删除标头信息