c++ - 如何在加密前拦截应用程序通信?
问题描述
我正在尝试对 Windows 应用程序用于通过网络进行通信的协议进行逆向工程。它使用 TLS 加密连接与服务器通信。
我想拦截应用程序的相关调用(对 TLS 库或安全套接字 API),并查看其纯文本消息。
完全披露:这不是为了任何丰富的目的,而是为了改进一个开源项目。
我已经尝试在 Linux 上的 Wine 下运行该应用程序,上面的内容相当于一个 LD_PRELOAD 技巧,用于拦截对 send() 的调用。 https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/ https://www.kernel.org/ doc/html/latest/networking/tls.html
那没有用。这就是为什么我现在试图在 Windows 上拦截此类调用。
解决方案
向@Cybran 的解决方案添加细节:
- 安装 mitmproxy。运行一次,找到它生成的 CA 证书 (
mitmproxy-ca.p12
) 并将其安装为 Windows 中的根 CA。mitmproxy 提供了如何做到这一点的说明。 - 启动
mitmdump -w outfile
。它通常在端口 8080 上运行。弄清楚在什么接口/IP 上。 - 在 Windows 中,在“设置”->“网络设置”下,有一个手动配置代理的选项。将其指向运行 mitmdump 的接口/ip 和端口。
- 启动 Windows 应用程序并在 mitmdump 终端中观察流量 url。输出文件将以几乎人类可读的格式包含纯文本流量本身。
推荐阅读
- reactjs - 用于实现模态对话框的动态导入 next.js
- python - 如何在 for 循环中将用户输入保存为整数和字符串
- java - Spring Boot ModelMapper - 无会话
- numpy - 谁能解释一下这个代码输出
- ruby-on-rails - rails app current_user 方法在生产中不起作用
- c++ - (C/C++) 在同一行初始化并返回数组
- c# - 在 c# 中编码为 Php 不同的结果
- javascript - jQuery 或原生 JS 替换整个元素 (div),包括其 id、类和数据
- javascript - 为什么我的 Ajax 回调处理得太快了?
- android - 如何从具有不同数据的通知中意图不同的活动?