编写 SSL 客户端和服务器密钥
Writing SSL client and server keys keys
我正在尝试 export/write 将 SSL 主密钥和密钥从 chromium 浏览器下载到一个文件中。如果有人可以建议我如何执行此操作,我将不胜感激。
要写入预主密钥,我们可以简单地在环境中导出 SSLKEYLOGFILE 变量。
premaster secret 可以被 wireshark 用来解密 HTTPS 会话。
预主密钥用于计算主密钥,主密钥进一步用于创建 6 个密钥 -
CLIENT_WRITE_MAC
CLIENT_IV
CLIENT_WRITE
服务器还有 3 个。
我想将这些密钥输出到文件而不是预主密钥。
我想如果我可以使用 wireshark 代码来简单地输出它,但这更复杂
我相信 wireshark 处理 SSL 数据包和使用 premaster secret 的代码就在这里。
github.com/boundary/wireshark/blob/master/epan/dissectors/packet-ssl-utils.c
另一种方法是更改 chromium 浏览器并编译它。我认为这里需要做出改变。
https://code.google.com/p/chromium/codesearch#chromium/src/net/third_party/nss/ssl/derive.c&q=client_write_mac_secret&sq=package:chromium&type=cs&l=214
我正在查看更多源代码,我发现这个文件是相关的。
查看上面的代码,我注意到可以设置更多的环境变量。有谁知道是否可以以与 SSLKEYLOG 变量相同的方式设置 SSLDEBUG 环境。执行此操作的任何其他方式或技术也会有所帮助
到目前为止我还没有成功导出密钥。
我明白了。
为此,您需要下载最新版本的 wireshark 源代码。我 运行 我在 Wireshark 2.0.1
上测试
您需要对 wireshark 源文件夹中的文件 - /epan/dissectors/packet-ssl-utils.c 进行更改。
将第 3179 - 3194 行的变量打印到文件中。
您可以找到客户端写入密钥、服务器写入密钥、客户端 MAC 密钥、服务器 MAC 密钥、客户端 IV 和服务器 IV)
要在 C 中写入文件,请使用此
文件*fptr;
fptr = fopen("directory you want to open a file in", "a+");
fprintf("data"); // 这会将数据写入文件
注意 - 要以更 objective 的方式进行操作,请更改并创建以下函数
void custom_ssl_print_data(const gchar* name, const guchar* data, size_t len){
//写下面几行
文件 *ssl_debug_file;
ssl_debug_file=fopen("directory you want to open the file in","a+");
//从第 4927 行复制原始功能
}
void custom_ssl_print_string(const gchar* 名称, const StringInfo* 数据){
//从第 4953 行复制原始功能
}
现在使用这些功能将密钥导出到文件。
转到主 wireshark 源文件夹。
运行./autogen.sh
./配置
sudo make
须藤安装
和 运行 终端中的 wireshark。 (您仍然需要通过导出 SSLKEYLOGFILE 环境变量向 wireshark 提供预主密钥文件)
我正在尝试 export/write 将 SSL 主密钥和密钥从 chromium 浏览器下载到一个文件中。如果有人可以建议我如何执行此操作,我将不胜感激。
要写入预主密钥,我们可以简单地在环境中导出 SSLKEYLOGFILE 变量。 premaster secret 可以被 wireshark 用来解密 HTTPS 会话。
预主密钥用于计算主密钥,主密钥进一步用于创建 6 个密钥 - CLIENT_WRITE_MAC CLIENT_IV CLIENT_WRITE 服务器还有 3 个。
我想将这些密钥输出到文件而不是预主密钥。
我想如果我可以使用 wireshark 代码来简单地输出它,但这更复杂 我相信 wireshark 处理 SSL 数据包和使用 premaster secret 的代码就在这里。 github.com/boundary/wireshark/blob/master/epan/dissectors/packet-ssl-utils.c
另一种方法是更改 chromium 浏览器并编译它。我认为这里需要做出改变。 https://code.google.com/p/chromium/codesearch#chromium/src/net/third_party/nss/ssl/derive.c&q=client_write_mac_secret&sq=package:chromium&type=cs&l=214
我正在查看更多源代码,我发现这个文件是相关的。
查看上面的代码,我注意到可以设置更多的环境变量。有谁知道是否可以以与 SSLKEYLOG 变量相同的方式设置 SSLDEBUG 环境。执行此操作的任何其他方式或技术也会有所帮助
到目前为止我还没有成功导出密钥。
我明白了。 为此,您需要下载最新版本的 wireshark 源代码。我 运行 我在 Wireshark 2.0.1
上测试您需要对 wireshark 源文件夹中的文件 - /epan/dissectors/packet-ssl-utils.c 进行更改。
将第 3179 - 3194 行的变量打印到文件中。 您可以找到客户端写入密钥、服务器写入密钥、客户端 MAC 密钥、服务器 MAC 密钥、客户端 IV 和服务器 IV)
要在 C 中写入文件,请使用此
文件*fptr; fptr = fopen("directory you want to open a file in", "a+");
fprintf("data"); // 这会将数据写入文件
注意 - 要以更 objective 的方式进行操作,请更改并创建以下函数
void custom_ssl_print_data(const gchar* name, const guchar* data, size_t len){
//写下面几行
文件 *ssl_debug_file;
ssl_debug_file=fopen("directory you want to open the file in","a+");
//从第 4927 行复制原始功能
}
void custom_ssl_print_string(const gchar* 名称, const StringInfo* 数据){
//从第 4953 行复制原始功能 }
现在使用这些功能将密钥导出到文件。
转到主 wireshark 源文件夹。 运行./autogen.sh
./配置
sudo make
须藤安装
和 运行 终端中的 wireshark。 (您仍然需要通过导出 SSLKEYLOGFILE 环境变量向 wireshark 提供预主密钥文件)