如何在 pcap.net 中创建 HttpResponseDatagram 和 HttpResponseLayer
Posted
技术标签:
【中文标题】如何在 pcap.net 中创建 HttpResponseDatagram 和 HttpResponseLayer【英文标题】:How can I create HttpResponseDatagram and HttpResponseLayer in pcap.net 【发布时间】:2017-10-16 03:10:51 【问题描述】:我无法在 pcap.net 中创建这些对象
IpV4Datagram ip = packet.Ethernet.IpV4;
TcpDatagram tcp = ip.Tcp;
HttpDatagram http = tcp.Http;
// HttpResponseDatagram resdat=http.; How can i create them?
// HttpResponseLayer resp;
if (tcp.Http.Body != null && http.IsResponse)
body = resp.Body.ToString();
我正在尝试从 tcp 数据包中获取 HTTP 响应正文。如果有其他方法可以做到这一点,有人可以帮忙吗?
【问题讨论】:
您在 packet 级别工作有什么原因吗?大多数网站运行的数据包大小在 1460 字节范围内,而典型页面的内容是该大小的许多倍。 我正在制作一个 tcp 监听器,我监听所有的数据包。这不是数据包计数的问题。 【参考方案1】:在Pcap.Net User Guide 中有a section about sending packets。
在该部分中,有一个关于如何创建HttpRequestLayer
的示例,创建HttpResponseLayer
非常相似。
HttpRequestLayer httpLayer = new HttpRequestLayer Version = HttpVersion.Version11, Header = new HttpHeader(new HttpContentLengthField(11)), Body = new Datagram(Encoding.ASCII.GetBytes("hello world")), Method = new HttpRequestMethod(HttpRequestKnownMethod.Get), Uri = @"http://pcapdot.net/", ;
HttpResponseDatagram 是通过解析一个 HTTP 数据包来创建的。 例如,通过做
packet.Ethernet.IpV4.Tcp.Http
没有简单的方法可以在不解析数据包的情况下创建Datagram
。
【讨论】:
以上是关于如何在 pcap.net 中创建 HttpResponseDatagram 和 HttpResponseLayer的主要内容,如果未能解决你的问题,请参考以下文章
.net 数据包捕获:pcap.net 与 Sharppcap