首页 新闻 搜索 专区 学院

如何利用SharpPcap截取HTTP包的细节数据信息(MIME信息)?

0
悬赏园豆:100 [已关闭问题] 关闭于 2013-11-03 22:38

使用SharpPcap截取网络上的数据包,目前可以截取到网络包的头部信息,如下代码:

private static void device_OnPacketArrival(object sender, CaptureEventArgs e)
        {
           
            var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
            var tcpPacket = PacketDotNet.TcpPacket.GetEncapsulated(packet);
 
           
            if (tcpPacket.DestinationPort == 80 || tcpPacket.SourcePort == 80)
            {
                // write the HTTP packet to the file
                captureFileWriter.Write(e.Packet);
                Console.WriteLine("Packet dumped to file.");
 
            }
 
        }

当e.Packet被写入的文件时,只有头部的相关信息,如Accept, Referer, User-Agent, Cookie等,但现在想知道通过HTTP上传文件的信息,比如当命令为POST时,filename字段的内容(应该是MIME部分的信息),但这个内容在e.Packet中找不到。貌似e.Packet无法截取到HTTP的数据信息。WireShark软件可以截取到,但不知道如何通过SharpPcap截取到。
有谁知道通过ShapPcap截取HTTP或者其它协议内的详细数据信息?
wusir的主页 wusir | 初学一级 | 园豆:100
提问于:2013-10-31 20:59
< >
分享
所有回答(3)
0

没研究过SharpPcap,但从你贴出来的代码来看,应该只是一个tcp packet的内容。

一次http请求是包含在连续多个报文中的,从一个包中是获取不到足够的信息的,自然无法解析出相应的内容,那些抓包软件应该中是已经将这些tcp报文的内容部分拼接后再展现出来的。

天方 | 园豆:5266 (大侠五级) | 2013-10-31 22:13

有启发。研究一下看看

支持(0) 反对(0) wusir | 园豆:100 (初学一级) | 2013-11-01 09:47
0

http://www.cnblogs.com/armyao/archive/2010/11/05/1870165.html

http://www.cnblogs.com/armyao/archive/2010/11/05/1870166.html

http://www.cnblogs.com/armyao/archive/2010/11/05/1870164.html

【秦时明月】 | 园豆:803 (小虾三级) | 2013-11-01 09:35
0

问题解决:原来是中间有一个条件语句,判断是否是“POST”,如果是,才将Packet截取,但事实上,当命令为POST时,该Packet是不包括细节数据的,它只是一个文件上传时的第一个Packet。所以,要将所有的Packet截取或者把有filename的键截取,需要将“POST”的判断语句去掉或者屏蔽它作为唯一截取Packet的条件。

wusir | 园豆:100 (初学一级) | 2013-11-03 22:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册