我想要进行使用SSL / TLS的协议分析,幸运的是我可以安装自己的证书,DNS部分也不会成为问题。我的问题是我该怎么做才能做到这一点。我考虑过使用paros,但它会比它的价值更麻烦。所以我想我可以编写两个C#应用程序。第一个是伪服务器,另一个是伪客户端。两者之间有一个tcp连接,然后我可以使用wireshark。问题是,我对流的经验很少。因此,如果有人能够指出我有用的文章,或者代码很短,那么样本就会很棒。先谢谢你。
答案 0 :(得分:2)
读取/写入流不是非常困难,您不能只连接流,您需要拥有自己的代码来执行此操作。最好是它自己的线程(或工作流程或任务或你需要的任何线程概念)。
public void ConnectStreams(Stream inStream, Stream outStream)
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
{
outStream.Write(buffer, 0, bytesRead);
outStream.Flush();
}
}
基本上Streams在字节数组上运行。当我们运行这一行时:
while((bytesRead = inStream.Read(buffer, 0, 1024)) != 0)
我们基本上是说,在Read
上执行inStream
,将读取的字节放入buffer
,索引0
(缓冲区中)并读取最大值{{ 1}}字节。
然后我们将返回值分配给1024
,这是读取的ACTUAL字节数(在这种情况下在bytesRead
和0
之间),如果不等于0,则继续循环。
然后我们简单地将它写回1024
,缓冲区包含数据,以及实际读取的字节数。我们执行刷新以实际强制输出,而不是在内部缓冲区中堆叠。
当流到达EOF时,outStream
将返回0,循环将退出,您可以继续。这就是您在最简单的级别“连接”两个流的方式。