1 / 38
文档名称:

pcap包解析.doc

格式:doc   大小:76KB   页数:38页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

pcap包解析.doc

上传人:iris028 2019/12/6 文件大小:76 KB

下载得到文件列表

pcap包解析.doc

文档介绍

文档介绍:项目A 从pcap文件中析取所有TCP会话与UDP会话张中秋(U201217502,853950423@,tel139********,1205班)执笔100%签字摘要:本项目主要针对的是对于单一网络节点,.worktrace)文件,记录了网络通信过程的数据包信息。maseparatedvalues)是一种用逗号','分隔的文本文件,类似于excel文件。.pcap文件是二进制文件,需要从中提取信息并以csv的格式进行存储。。关键词:TCP/UDP协议,数据包,文件,,就必须先对pcap文件进行解析,析取pcap文件中所有的TCP会话和UDP会话。HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。所以在做http重组之前,对pcap文件中TCP会话与UDP会话的提取非常的关键。:(1)基本格式:文件头数据包头数据报数据包头数据报......(2)文件头:图1pcap文件头a、标识位:32位的,这个标识位的值是16进制的0xa1b2c3d4。b、主版本号:16位,默认值为0x2。c、副版本号:16位,默认值为0x04。d、区域时间:32位,实际上该值并未使用,因此可以将该位设置为0。e、精确时间戳:32位,实际上该值并未使用,因此可以将该值设置为0。f、数据包最大长度:32位,该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535;例如:想获取数据包的前64字节,可将该值设置为64。g、链路层类型:32位,数据包的链路层包头决定了链路层的类型。(3)pcap数据包头:图2 pcap数据包头a、时间戳,包括:秒计时:32位,一个UNIX格式的精确到秒时间值,用来记录数据包抓获的时间,记录方式是记录从格林尼治时间的1970年1月1日00:00:00到抓包时经过的秒数;微秒计时:32位,抓取数据包时的微秒值。b、数据包长度:32位,标识所抓获的数据包保存在pcap文件中的实际长度,以字节为单位。c、数据包实际长度:所抓获的数据包的真实长度,如果文件中保存不是完整的数据包,那么这个值可能要比前面的数据包长度的值大。(4)pcap数据:即Packet(通常就是链路层的数据帧)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,下一组数据在文件中的起始位置。我们需要靠第一个Packet包确定。(5)读取时进制转换问题:packagePcapFinally;;lassPcap{privatePcapHeaderheader;privateList<PcapData>data;publicPcapHeadergetHeader(){returnheader;}publicvoidsetHeader(PcapHeaderheader){=header;}publicList<PcapData>getData(){returndata;}publicvoidsetData(List<PcapData>data){=data;}publicvoidottString(){("datapartcount="+());}}packagePcapFinally;;;;;lassPcapData{publicstaticStringsource_adrress;//数据包头文件publicstaticinttime_s;//时间戳(秒)publicstaticinttime_ms;//时间戳(微秒)public staticintpLength;//抓包长度public staticintlength;//实际长度publicstaticbyte[]content;//数据publicStringtai;//以太网帧14字节 不作处直接读取十四个字节//ip包publicStringversion_ihl;//ip包中的版本号家包头长度 1字节publicStringtos;//服务类型 8字节publicShorttotalLen;//总长度2字节publi