【网络】网络工具集

介绍

本博客介绍基本的网络工具

cURL

curl工具可谓是命令行中http请求最强大的工具

选项

  • --resolve host:port:address 相当于添加hosts映射,在构造https请求时,可以添加这个选项使得基于ip:端口的访问能够正常发送TLS握手信息
  • --cacert certdata.pem 指定可信任的根证书
curl --cacert path_to_certificate https://my-ssl.test
  • -d,--data,--data-ascii FILE_OR_CONTENT 指定post的内容,注意,该选项会对FILE_OR_CONTENT进行一定的转换,如果FILE_OR_CONTENT以@开头,则将其解释为文件;@-则是标准输入。当--data指定文件时,文件内容中的\r,\n会被自动去掉;--data指定的Content-Typeapplication/x-www-form-urlencoded,因此,如果指定多个--data选项,它们会使用&符号拼接。
    注意:--data不适合用于指定二进制内容,因为它会对内容做转换。
  • --data-raw CONTENT--data类似,但是@不作为文件名前缀,而是普通内容
  • --data-urlencode CONTENT用于指定url编码的内容,如何实施url编码,取决于以下规则:
    1.content,=content,则curl会将content部分编码,去掉=,为了保证content不匹配后面的语法,一般使用=content
    2.name=content, name部分必须已经编码,curl会将content部分编码
    3.[name]@filename,name可选,从文件中读取内容,然后编码
    综上所述,--data-urlencode用于指定未经编码的内容,curl会自动实施编码
  • --data-binary CONTENT该选项是唯一不会对内容作转换的选项。因此也不能用于指定从标准输入读取数据。一般而言,为了指定二进制数据,可以使用下面的echo -ne语法:
curl http://example.com --data-binary "$(echo -ne '\x00\x01')"

nc

nc是一个十分精致优雅的TCP工具,其全称是netcat。基本上,配合shell的echo -ne命令构造任何二进制数据,你可以利用nc做任何TCP协议层能够做的事情。

hexdump

hexdump能够展示二进制数据,并试图展示其ascii形式的字符

tcpdump

wireshark

Wireshark绝对是初学者理解网络协议的利器,通过其过滤器语法以及可滚动的操作记录,快速理解来往的网络包,理解时序。

key log的格式:https://code.wireshark.org/review/gitweb?p=wireshark.git;a=blob;f=epan/dissectors/packet-ssl-utils.c;h=ac77c8203ceae52d3d0dce56be6a12340a8de1c2;hb=HEAD#l4695

openssl s_client可通过 -keylog指定文件。

一、通过服务器私钥解码

如果我们拥有服务器的文件私玥,接下来我们可以通过Wireshark设置使用该私钥来解码对应网站的SSL\TLS数据包。

1、在Wireshark中,进入 编辑(Edit) -> 首选项(Preferences)

2、展开 协议(protocols)-> TLS ,点击 RSA key lists 旁边的 编辑(Edit)

3、依次配置如下:

IP地址:填写对应服务器的IP,也可以使用any表示所有IP

端口(Port):服务器的HTTPS端口,一般为默认"443"

协议(Protocol):填写http

Key File:选择服务器证书私钥文件位置。

密码(Password): 如果是PFX格式证书,输入服务器私钥证书的密码。无密码可留空。

设置完成后,当前正在查看的网络包或将来抓取的网络包就会以设定的规则解码了。

不足:

如果网络包依然无法被解码,那么很有可能是因为服务器和客户端之间使用了Diffie-Hellman加密算法。可以通过查看SSL/TLS握手过程中发现服务器返回的Server Hello所选择的加密算法,如果带有 “ECDHE” 和 “DHE” 关键字,那就说明当前SSL Session使用了Diffie-Hellman加密算法。

可以通过禁用浏览器或者服务器上的TLS 加密套件算法解决,但不建议尝试。

二、用SSLKEYLOGFILE解码

设置环境变量 SSLKEYLOGFILE,将其指向一个可写入的文本文件。Chrome和Firefox在启动时会检查这个环境变量,如果存在的话,它会向指定的文件写入访问HTTPS站点时使用的密钥。我们可以在客户端配置Wireshark读取这个文件来解码TLS、 SSL网络包。

1、右键 计算机 - > 属性 -> 高级系统设置 -> 高级 -> 环境变量

2、新建环境变量,变量名称为 SSLKEYLOGFILE,变量值为一个可写入的文本文件 如 D:\ssllog.txt 。文件夹必须提前创建,若文件尚未创建,可以打开Chrome或Firefox一下,文件会被自动创建。

3、在Wireshark中,进入 编辑(Edit) -> 首选项(Preferences)

4、展开 协议(protocols)-> TLS ,将 (Pre)-Master-Secret log filename 设为步骤2中指定的值。

点击确认后,就会正确解码HTTPS网络包了。使用 SSLKEYLOGFILE 的好处就是它可以解Diffie-Hellman加密算法。

openssl

SSL/TLS协议的首选工具

nginx

nginx
是部署服务器的首选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值