PCAP结构

PCAP结构
PCAP结构

一、结构体说明

pcap.h里定义了文件头的格式

struct pcap_file_header {

bpf_u_int32 magic;

u_short version_major;

u_short version_minor;

bpf_int32 thiszone;

bpf_u_int32 sigfigs;

bpf_u_int32 snaplen;

bpf_u_int32 linktype;

};

看一下各字段的含义:

magic: 4字节pcap文件标识目前为“d4 c3 b2 a1”

major: 2字节主版本号 #define PCAP_VERSION_MAJOR 2

minor: 2字节次版本号 #define PCAP_VERSION_MINOR 4

thiszone:4字节时区修正并未使用,目前全为0

sigfigs:4字节精确时间戳并未使用,目前全为0

snaplen:4字节抓包最大长度如果要抓全,设为0x0000ffff(65535), tcpdump -s 0就是设置这个参数,缺省为68字节

linktype:4字节链路类型一般都是1:ethernet

数据报头的格式

struct pcap_pkthdr {

struct timeval ts;

bpf_u_int32 caplen;

bpf_u_int32 len;

};

struct timeval {

long tv_sec;

suseconds_t tv_usec;

};

ts: 8字节抓包时间4字节表示秒数,4字节表示微秒数

caplen:4字节保存下来的包长度(最多是snaplen,比如68字节)

len: 4字节数据报的真实长度,如果文件中保存的不是完整数据包,可能比caplen大。

二、结构图

图1详细的描述了我们截获数据包的大致结构:

图1 pcap文件整体结构

Pcap文件头24B各字段说明:

Magic:4B:0×1A 2B 3C 4D:用来识别文件自己和字节顺序。0xa1b2c3d4用来表示按照原来的顺序读取,0xd4c3b2a1表示下面的字节都要交换顺序读取。一般,我们使用0xa1b2c3d4 Major:2B,0×02 00:当前文件主要的版本号

Minor:2B,0×04 00当前文件次要的版本号

ThisZone:4B 时区。GMT和本地时间的相差,用秒来表示。如果本地的时区是GMT,那么这个值就设置为0.这个值一般也设置为0 SigFigs:4B时间戳的精度;全零

SnapLen:4B最大的存储长度(该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535;例如:想获取数据包的前64字节,可将该值设置为64)LinkType:4B链路类型

常用类型:

0 BSD loopback devices, except for later OpenBSD

1 Ethernet, and Linux loopback devices

6 802.5 Token Ring

7 ARCnet

8 SLIP

9 PPP

10 FDDI

100 LLC/SNAP-encapsulated ATM

101 “raw IP”, with no link

102 BSD/OS SLIP

103 BSD/OS PPP

104 Cisco HDLC

105 802.11

108 later OpenBSD loopback devices (with the AF_value in network byte order)

113 special Linux “cooked”capture

114 LocalTalk

三、详细结构

直接来图吧,同样的事情用图总会直接简明,而且易懂。见图二。

图2 字段的详细结构

四、举例

以下(见图3)是我截获的数据包,以.pcap后缀保存的,用UE直接打开,可以详细看到它的

内部结构和上面吻合。

图3 pcap文件部分截图

注:蓝色选中的部分即为24字节的数据包包头

我截获的的以太网帧的第一帧如图4所示:

图4 第一帧的内容

对比图3和数据报头16字节格式,你会很容易知道Frame 1的92bytes是5C 00 00 00计算出来的。到此为止,我想各位应该很清楚的了解Frame 1在什么位置,以及.pcap文件的格式了吧。

Wireshark使用教程(精品)

Wireshark使用教程 第 1 章介绍 1.1. 什么是Wireshark Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电量的电度表一样。(当然比那个更高级) 过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。 Wireshark出现以后,这种现状得以改变。Wireshark可能算得上是今天能使用的最好的开元网络分析软件。 1.1.1. 主要应用 下面是Wireshark一些应用的举例: ?网络管理员用来解决网络问题 ?网络安全工程师用来检测安全隐患 ?开发人员用来测试协议执行情况 ?用来学习网络协议 除了上面提到的,Wireshark还可以用在其它许多场合。 1.1. 2. 特性 ?支持UNIX和Windows平台 ?在接口实时捕捉包 ?能详细显示包的详细协议信息 ?可以打开/保存捕捉的包 ?可以导入导出其他捕捉程序支持的包数据格式 ?可以通过多种方式过滤包 ?多种方式查找包 ?通过过滤以多种色彩显示包 ?创建多种统计分析 ?…还有许多 不管怎么说,要想真正了解它的强大,您还得使用它才行

图 1.1. Wireshark捕捉包并允许您检视其内 1.1.3. 捕捉多种网络接口 Wireshark 可以捕捉多种网络接口类型的包,哪怕是无线局域网接口。想了解支持的所有网络接口类型,可以在我们的网站上找到https://www.360docs.net/doc/988718039.html,/CaptureSetup/NetworkMedia. 1.1.4. 支持多种其它程序捕捉的文件 Wireshark可以打开多种网络分析软件捕捉的包,详见??? 1.1.5. 支持多格式输出 Wieshark可以将捕捉文件输出为多种其他捕捉软件支持的格式,详见??? 1.1.6. 对多种协议解码提供支持 可以支持许多协议的解码(在Wireshark中可能被称为解剖)??? 1.1.7. 开源软件 Wireshark是开源软件项目,用GPL协议发行。您可以免费在任意数量的机器上使用它,不用担心授权和付费问题,所有的源代码在GPL框架下都可以免费使用。因为以上原因,人们可以很容易在Wireshark上添加新的协议,或者将其作为插件整合到您的程序里,这种应用十分广泛。 1.1.8. Wireshark不能做的事 Wireshark不能提供如下功能 ?Wireshark不是入侵检测系统。如果他/她在您的网络做了一些他/她们不被允许的奇怪的事情,Wireshark不会警告您。但是如果发生了奇怪的事情,Wireshark可能对察看发生了什么会有所帮助。[3]?Wireshark不会处理网络事务,它仅仅是“测量”(监视)网络。Wireshark不会发送网络包或做其它交互性的事情(名称解析除外,但您也可以禁止解析)。 1.2. 系通需求

pcap文件格式

PCAP文件格式 每个.pcap文件的文件头Pcap Header:24B 每个.pcap文件中的数据包头 Packet Header:16B 每个.pcap文件中的数据报 Packet Data:14B以太头+TCP/IP数据 具体如下: 1.pcap文件头部(pcap header) sturct pcap_file_header { DWORD magic; WORD version_major; WORD version_minor; DWORD thiszone; DWORD sigfigs; DWORD snaplen; DWORD linktype; } 说明: 1、标识位magic:32位的,这个标识位的值是16进制的 0xa1b2c3d4。 32-bit magic number , The magic number has the value hex a1b2c3d4. 2、主版本号version_major:16位,默认值为0x2。返回写入被打开文件所使用的pcap函数的主版本号。 16-bit major version number, The major version number should have the value 2. 3、副版本号version_minor:16位,默认值为0x04。 16-bit minor version number, The minor version number should have the value 4. 4、区域时间thiszone:32位,实际上该值并未使用,因此可以将该位设置为0。 32-bit time zone offset field that actually not used, so you can (and probably should) just make it 0;

pcap过滤规则格式

函数名称:int pcap_compile(pcap_t *p, struct bpf_program *fp,char *str, int optimize, bpf_u_int32 netmask) 函数功能:该函数用于将str指定的规则整合到fp过滤程序中去,并生成过滤程序入口地址,用于过滤选择期望的数据报。 参数说明: pcap_t *p:pcap_open_live返回的数据报捕获的指针; struct bpf_program *fp:指向一个子函数用于过滤,在pcap_compile()函数中被赋值; char *str:该字符串规定过滤规则; int optimize:规定了在结果代码上的选择是否被执行; bpf_u_int32 netmask:该网卡的子网掩码,可以通过pcap_lookupnet()获取; 返回值:如果成功执行,返回0,否则返回-1; 过滤规则由一个或多个原语(primitive)组成,如果为””则表示不进行任何过滤. 原语通常由一个标识(id, 名称或数字), 和标识前面的一个或多个修饰子(qualifier) 组成. 修饰子有三种不同的类型: type 类型修饰子指出标识名称或标识数字代表什么类型的东西. 能够使用的类型有host, net 和port. 例如, `host foo', `net 128.3', `port 20'. 假如不指定类型修饰子, 就使用缺省的 host . dir 方向修饰子指出相对于标识的传输方向 (数据是传入还是传出标识). 能够使用的方向有 src, dst, src or dst和src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 假如不指定方向修饰子, 就使用缺省的src or dst .对于 `null' 链路层 (就是说象 slip 之类 的点到点协议), 用inbound和outbound修饰子指定所需的传输方向. proto 协议修饰子需要匹配指定的协议. 能够使用的协议有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp和udp. 例如, `ether src foo', `arp net 128.3', `tcp port 21'. 假如 不指定协议修饰子, 就使用任何符合类型的协议. 例如, `src foo' 指 `(ip 或 arp 或 rarp) src foo' (注意后者不符合语法), `net bar' 指 `(ip 或 arp 或 rarp) net bar', `port 53' 指 `(tcp 或 udp) port 53'. [`fddi' 实际上是 `ether' 的别名; 分析器把他们视为 ``用在指定网络接口上的数据链路层.'' FDDI 报头包含类似于以太协议的源目地址, 而且通常包含类似于以太协议的报文类型, 因此您能 够过滤 FDDI 域, 就象分析以太协议相同. FDDI 报头也包含其他域, 但是您不能在过滤器表达式 里显式描述.] 作为上述的补充, 有一些特别的 `原语' 关键字, 他们不同于上面的模式: gateway, broadcast, less, greater和数学表达式. 这些在后面有叙述. 更复杂的过滤器表达式能够通过and, or和not连接原语来组建. 例如, `host foo and not port ftp and not port ftp-data'. 为了少敲点键, 能够忽略相同的修饰子. 例如, `tcp dst port ftp or ftp-data or domain' 实际上就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'. 允许的原语有: dst host host

任务三计算机网络实验IP数据报捕获与分析

任务三计算机网络实验I P数据报捕获与 分析

任务三网络编程 一、实验目的 捕获本机网卡的IP包,对捕获的IP包进行解析。要求必须输出以下字段:版本号、总长度、标志位、片偏移、协议、源地址和目的地址。 二、实验环境 平台:Windows 编程环境:VC 6.0 语言:C++ 三、实验原理 3.1 数据报格式 以太帧由一个包含三个字段的帧头开始,前两个字段包含了物理地址,各六个字节,头部的第三个字段包含了 16 位的以太帧类型,帧头后面是数据区。根据帧类型可以判断是哪种数据包,一般常用的有 0X0080(IP 数据包)、0X0806(ARP 请求/应答)和 0X8035(RARP 请求/应答)三种类型。TCP/IP 协议簇中位于网络层的协议,也是最为核心的协议。所有的 TCP, UDP, ICMP 及 IGMP 数据都以 IP 数据报格式传输。IP 协议提供了无连接的、不可靠的数据传输服务。同时IP 协议的一个重要功能是为网络上的包传递提供路由支持。TCP/IP 协议使用 IP 数据报这个名字来指代一个互联网数据包。IP 数据报由两部分组成,前面的头部和后面的数据区,头部含有描述该数据报的信息,包括源 IP 地址和目的 IP 地址等。在 IP 数据报的报头中的众多信息可根据协议类型字段区分出该数据包的类型,常用的有TCP 包、 UDP 包、 ICMP 包等,各格式分别如下所示:

IP数据报格式 TCP数据报格式 ICMP数据报格式

UDP数据报格式 3.2 捕获数据包方法 目前常用的捕获数据包的方法有原始套接字、LibPcap、WinPcap和JPcap 等方法。本次实验选用套接字方法。套接字是网络应用编程接口。应用程序可以使用它进行网络通信而不需要知道底层发生的细节。有时需要自己生成一些定制的数据包或者功能并希望绕开Socket提供的功能,原始套接字(RawSocket)满足了这样的要求。原始套接字能够生成自己的数据报文,包括报头和数据报本身的内容。通过原始套接字,可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。 网络数据包截获机制一般指通过截获整个网络的所有信息流,根据信息源主机,目标主机,服务协议端口等信息,简单过滤掉不关心的数据,再将用户感兴趣的数据发送给更高层的应用程序进行分析。一般数据包的传输路径依次为网卡、设备驱动层、数据链路层、 IP 层、传输层、最后到达应用程序。IP 数据包的捕获就是将经过数据链路层的以太网帧拷贝出一个备份,传送给 IP 数据包捕获程序进行相关的处理。 IP 数据包的捕获程序一般由数据包捕获函数库和数据包分析器组成。数据包捕获函数库是一个独立于操作系统的标准捕获函数库。主要提供一组可用于查找网络接口名称、打开选定的网络接口、初始化、设置包过滤条件、编译过滤代码、捕获数据包等功能函数。对捕获程序而言,只需要调用数据包捕获函数库的这些函数就能获得所期望的 IP 数据包。这种捕获程序与数据包捕获函数库分离的机制,使得编写的程序具有很好的可移植性。IP 数据包捕获程序的核心部分就是数据包分析器。数据包分析器应具有识别和理解各种协议格式

Pcap 文件格式和 WireShark

Pcap 文件格式和 WireShark PCAP是一个数据包抓取库, 很多软件都是用它来作为数据包抓取工具的。 WireShark也是用PCAP库来抓取数据包的。PCAP抓取出来的数据包并不是原始的网络字节流,而是对其进行从新组装,形成一种新的数据格式。 一个用PCAP抓取的数据包的文件格式如下: Pcap文件头24B各字段说明: Magic:4B:0x1A 2B 3C 4D:用来标示文件的开始 Major:2B,0x02 00:当前文件主要的版本号

Minor:2B,0x04 00当前文件次要的版本号 ThisZone:4B当地的标准时间;全零 SigFigs:4B时间戳的精度;全零 SnapLen:4B最大的存储长度 LinkType:4B链路类型 常用类型: 0 BSD loopback devices, except for later OpenBSD 1 Ethernet, and Linux loopback devices 6 802.5 Token Ring 7 ARCnet 8 SLIP 9 PPP 10 FDDI 100 LLC/SNAP-encapsulated ATM 101 "raw IP", with no link

102 BSD/OS SLIP 103 BSD/OS PPP 104 Cisco HDLC 105 802.11 108 later OpenBSD loopback devices (with the AF_value in network byte order) 113 special Linux "cooked" capture 114 LocalTalk 其中我们最为常见的类型就是1,以太网链路。 字段说明: Timestamp:时间戳高位,精确到seconds

简洁的Pcap文件格式--Wireshark

PCAP 文件格式协议分析 一、基本格式: 文件头数据包头数据报数据包头数据报...... pcap文件格式结构 格式如结构体 pcap_file_header 格式如pcap_pkthdr 数据包 格式如pcap_pkthdr 数据包 格式如pcap_pkthdr 数据包 二、文件头结构体: sturct pcap_file_header { DWORD magic; WORD version_major; WORD version_minor; DWORD thiszone; DWORD sigfigs; DWORD snaplen; DWORD linktype; } 说明: 1、标识位:32位的,这个标识位的值是16进制的 0xa1b2c3d4。 a 32-bit magic number ,The magic number has the value hex a1b2c3d4. 2、主版本号:16位,默认值为0x2。 a 16-bit major version number,The major version number should have the value 2. 3、副版本号:16位,默认值为0x04。 a 16-bit minor version number,The minor version number should have the value 4. 4、区域时间:32位,实际上该值并未使用,因此可以将该位设置为0。 a 32-bit time zone offset field that actually not used, so you

pcap及pcapng格式解析中文版

TOC Network Working Group L. Degioanni Internet-Draft CACE Technologies Expires: September 2, 2004 F. Risso Politecnico di Torino G. Varenni CACE Technologies March 2004 PCAP下一代转储文件格式 PCAP-DumpFileFormat Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC 2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as “work in progress.” The list of current Internet-Drafts can be accessed at https://www.360docs.net/doc/988718039.html,/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at https://www.360docs.net/doc/988718039.html,/shadow.html. This Internet-Draft will expire on September 2, 2004. Copyright Notice

抓包分析说明文档

抓包分析说明文档 说明: 本文档针对ZXSEC US产品的后台抓包命令使用进行说明,相关详细命令参照相关手册。 在使用后台抓包分析命令时,建议大家使用如SecureCRT这样的远程管理工具,通过telnet或者ssh的方式登陆到网关,由于UTM本身不支持将抓包的结果保存在设备自身的存储空间,因此需要借助SecureCRT这样远程管理工具接收文件。 1.基本命令 命令: diagnose sniffer packet. # diag sniffer packet <'filter'> 2.参数说明 2.1 interface 指定实际的接口名称,可以是真实的物理接口名称,也可以是VLAN的逻辑接口名称,当使用“any”关键字时,表示抓全部接口的数据包。 例: #diag sniffer packet port1//表示抓物理接口为port1的所有数据包 #diag sniffer packet any//表示抓所有接口的所有数据包 #diag sniffer packet port1-v10//当在物理接口建立一个VLAN子接口,其逻辑接口名为port1-v10,此时表示抓port1-v10接口的所有数据包,此处一定注意一个问题,由于抓包命令中的空格使用来区分参数字段的,但是在逻辑接口创建时,接口名称支持空格,考虑到今后抓包分析的方便,建议在创建逻辑接口时不要带有空格。

2.2 verbose 指控制抓取数据包的内容 1: print header of packets, //只抓取IP的原地址、源端口、目的地址、目的端口和数据包的Sequence numbers 为系统缺省设置 2: print header and data from ip of packets, //抓取IP数据包的详细信息,包括IP数据的payload。 3: print header and data from ethernet of packets) ,//抓取IP数据包的详细信息,包括IP数据的payload,导出到文本文件可以使有专用的转换工具,转换为Ethereal支持文件格式 例: 【例1】抓所有接口(interface=any)的任何数据包(filter=none),级别1(verbose=1) ZXSEC-US # dia sni pa any none 1 interfaces=[any] filters=[none] nr=2048,fr=1584,b_nr=1024,pg=4096 3.710103 127.0.0.1.1029 -> 127.0.0.1.53: udp 40 【例2】抓所有接口(interface=any)的任何数据包(filter=none),级别2(verbose=2),会显示数据包的payload信息。 # diag sniffer packet internal none 2 1 192.168.0.1.22 -> 192.168.0.30.1144: psh 2867817048 ack 1951061933 0x0000 4510 005c 8eb1 4000 4006 2a6b c0a8 0001 E..\..@.@.*k.... 0x0010 c0a8 001e 0016 0478 aaef 6a58 744a d7ad .......x..jXtJ.. 0x0020 5018 0b5c 8ab9 0000 9819 880b f465 62a8 P..\.........eb. 0x0030 3eaf 3804 3fee 2555 8deb 24da dd0d c684 >.8.?.%U..$..... 0x0040 08a9 7907 202d 5898 a85c facb 8c0a f9e5 ..y..-X..\...... 0x0050 bd9c b649 5318 7fc5 c415 5a59 ...IS.....ZY 【例3】抓所有接口(interface=any)的任何数据包(filter=none),级别3(verbose=3),会显示数据包的payload信息。 ZXSEC-US # dia sni pa any none 3

x86指令编码格式解析

提到编码,只要学过一点汇编的人都应该知道一些常用的汇编指令的编码,比如:B8 78 56 34 12,一看到B8就知道对应的汇编指令是MOV EAX,0X12345678 占用5字节,一看到E8就知道是E8后面跟的是JMP 的4字节偏移,一见90就知道是NOP,因为这些指令都很常用,编码也都很简单,想必大家对这些指令编码都熟记于心了。如果提到 MOV EBX,XXXXXXXX MOV ECX,XXXXXXX这些指令也许大家对指令编码就不怎么记得了,因为X86的编码太多了,要把他全记住那可不是件容易的事。其实要把X86的编码指令记住并不是件难事,因为X86编码指令看似复杂庞大,其实这大部分编码有是有规律可寻的。 在这里先说组寄存器: 0 1 2 3 4 5 6 7 EAX ECX EDX EBX ESP EBP ESI EDI 0 1 2 3 4 5 6 7 AL CL DL BL AH CH DH BH 不知道各位同学当年学汇编的时候寄存器是不是按这个顺序记的,如果是按这个顺序记住的话,接下来讲的编码你可能一看就记住了 B8是MOV EAX 大家都很清楚的记得,那么B9呢?B9就是MOV ECX ,BA MOV EDX 聪明的同学应该很快的看出规律出来了吧!BB 是MOV EBX ,BC是MOV ESP 一直到BF 是MOV EDI B0是MOV AL,XX 2字节立即数,对照上面的表格,大家应该很容易的说出B1是MOV CL,XX,一直到B7是MOV BH,XX 90是NOP大家都知道,其实他的真正编码指令是XCHG EAX,EAX,91 XCHG EAX,ECX 一直到97 XCHG EAX,EDI 40到47是INC EAX 到 INC EDI ,48到4F是DEC EAX到DEC EDI 50到57是PUSH EAX 到 PUSH EDI ,58到 5F是 POP EAX 到 POP EDI 现在对于这一类的指令编码,大家是不是感觉记起来轻松了 对内存访问的指令在汇编中也经常出现,现在在说说这些指令的编码格式 ADD OR ADC SBB AND SUB XOR CMP ES CS SS DS DAA DAS AAA AAS 就跟上面我说的寄存器一样先按顺序记下这些东西再说 要讲对内存访问的编码就不得不先说说X86通用的编码指令格式 上图参考INTEL开发手册卷二,想具体了解的可以去参考下,看不懂英文的,论坛的翻译版块有部分章节

计算机网络-使用网络协议分析器捕捉和分析协议数据包

广州大学学生实验报告 开课学院及实验室:计算机科学与工程实验室2014年11月28日 一、实验目的 (1)熟悉ethereal的使用 (2)验证各种协议数据包格式 (3)学会捕捉并分析各种数据包。 二、实验环境 1.MacBook Pro 2.Mac OS 10.10.1 3..Wireshark 三、实验内容 1.安装ethereal软件 2.捕捉数据包,验证数据帧、IP数据报、TCP数据段的报文格式。 3.捕捉并分析ARP报文。 4.捕捉ping过程中的ICMP报文,分析结果各参数的意义。 5.捕捉tracert过程中的ICMP报文,分析跟踪的路由器IP是哪个接口的。 6.捕捉并分析TCP三次握手建立连接的过程。 7.捕捉整个FTP工作工程的协议包 对协议包进行分析说明,依据不同阶段的协议分析,画出FTP工作过程的示意图 a.. 地址解析ARP协议执行过程 b. FTP控制连接建立过程 c . FTP 用户登录身份验证过程 d. FTP 数据连接建立过程 e. FTP数据传输过程 f. FTP连接释放过程(包括数据连接和控制连接) 8.捕捉及研究WWW应用的协议报文,回答以下问题: a. .当访问某个主页时,从应用层到网络层,用到了哪些协议? b. 对于用户请求的百度主页(https://www.360docs.net/doc/988718039.html,),客户端将接收到几个应答报文?具体是哪几个? 假设从本地主机到该页面的往返时间是RTT,那么从请求该主页开始到浏览器上出现完整页面, 一共经过多长时间? c. 两个存放在同一个服务器中的截然不同的Web页(例如,https://www.360docs.net/doc/988718039.html,/index.jsp,和

NS3对于初学者的教程,高手忽略这个吧

1.Ns3 的安装: 开发环境配置: sudo apt-get install gcc g++ python python-dev //C++和python安装,必装 sudo apt-get install mercurial //NS3代码维护使用的源码版本控制管理系统 sudo apt-get install bzr //运行python绑定ns-3-dev需要bazaar这个组件 sudo apt-get install libgtk2.0-0 libgtk2.0-dev //基于GTK的配置系统 sudo apt-get install gdb valgrind //调试工具 sudo apt-get install doxygen graphviz imagemagick //文档生成器 sudo apt-get install texlive texlive-latex-extra //文档生成器,从源代码中生成说明文档 sudo apt-get install texinfo dia texlive-extra-utils texi2html //ns-3手册和tutorial编写查看工具 sudo apt-get install flex bison //仿真必需的词法分析器和语法分析生成器,必装 sudo apt-get install libgoocanvas-dev //部分移动场景仿真的可视化测试需要这个组件 sudo apt-get install tcpdump //读取pcap的packet traces,即包嗅探器 sudo apt-get install sqlite sqlite3 libsqlite3-dev //支持统计特性的数据库软件 sudo apt-get install libxml2 //xml的配置存储软件 sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas //Gustavo's ns-3-pyviz的可视化软件 sudo apt-get install qt4-qmake sudo apt-get install qt4-dev-tools 安装完成后: 进入ns-allinone-3.16目录 sudo ./build.py 之后进入ns-allinone-3.16/ns-3.16 sudo ./waf -check 返回目录ns-allinone-3.16 进入目录netanim-3.103 sudo make clean sudo qmake NetAnim.pro sudo make 之后 sudo ls 可以看见绿色的NetAnim这个东西就成功了 sudo ./NetAnim 打开仿真界面 安装全部完成

pcap文件格式及文件解析

第一部分:PCAP包文件格式 一基本格式: 文件头数据包头数据报数据包头数据报...... 二、文件头: 文件头结构体 sturct pcap_file_header { DWORD magic; DWORD version_major; DWORD version_minor; DWORD thiszone; DWORD sigfigs; DWORD snaplen; DWORD linktype; }

说明: 1、标识位:32位的,这个标识位的值是16进制的0xa1b2c3d4。 a 32-bit magic number ,The magic number has the value hex a1b2c3d4. 2、主版本号:16位,默认值为0x2。 a 16-bit major version number,The major version number should have the value 2. 3、副版本号:16位,默认值为0x04。 a 16-bit minor version number,The minor version number should have the value 4. 4、区域时间:32位,实际上该值并未使用,因此可以将该位设置为0。 a 32-bit time zone offset field that actually not used, so you can (and probably should) just make it 0; 5、精确时间戳:32位,实际上该值并未使用,因此可以将该值设置为0。 a 32-bit time stamp accuracy field tha not actually used,so you can (and probably should) just make it 0; 6、数据包最大长度:32位,该值设置所抓获的数据包的最大长度,如果所有数据包都要抓获,将该值设置为65535;例如:想获取数据包的前64字节,可将该值设置为64。 a 32-bit snapshot length" field;The snapshot length field should be the maximum number of bytes perpacket that will be captured. If the entire packet is captured, make it 65535; if you only capture, for example, the first 64 bytes of the packet, make it 64.

Wireshark的Pcap文件格式分析及解析源码

Wireshark的Pcap文件格式分析及解析源码 下面主要介绍下Ethereal默认的*.pcap文件保存格式。 Pcap文件头24B各字段说明: Magic:4B:0x1A 2B 3C 4D:用来标示文件的开始 Major:2B,0x02 00:当前文件主要的版本号 Minor:2B,0x04 00当前文件次要的版本号 ThisZone:4B当地的标准时间;全零 SigFigs:4B时间戳的精度;全零 SnapLen:4B最大的存储长度 LinkType:4B链路类型 常用类型: 0 BSD loopback devices, except for later OpenBSD 1 Ethernet, and Linux loopback devices 6 802.5 Token Ring 7 ARCnet 8 SLIP 9 PPP 10 FDDI 100 LLC/SNAP-encapsulated ATM 101 "raw IP", with no link 102 BSD/OS SLIP 103 BSD/OS PPP 104 Cisco HDLC 105 802.11 108 later OpenBSD loopback devices (with the AF_value in network byte order)

113 special Linux "cooked" capture 114 LocalTalk Packet 包头和Packet数据组成 字段说明: Timestamp:时间戳高位,精确到seconds Timestamp:时间戳低位,精确到microseconds Caplen:当前数据区的长度,即抓取到的数据帧长度,由此可以得到下一个数据帧的位置。 Len:离线数据长度:网络中实际数据帧的长度,一般不大于caplen,多数情况下和Caplen数值相等。 Packet 数据:即 Packet(通常就是链路层的数据帧)具体内容,长度就是Caplen,这个长度的后面,就是当前PCAP文件中存放的下一个Packet数据包,也就是说:PCAP文件里面并没有规定捕获的Packet数据包之间有什么间隔字符串,下一组数据在文件中的起始位置。我们需要靠第一个Packet包确定。最后,Packet数据部分的格式其实就是标准的网路协议格式了可以任何网络教材上找得到。 以下是我的实现,针对自定义的UDP的抓包文件进行解析 typedef struct tagIpHead { int version;//版本 int headLength; //头长度 int diffsever; int totallength; //总长度 int identification; int flag; int fragment; int ttl; int protocoltype; //协议类型 int checksum; unsigned long srcip;//源ip unsigned long dstip;//目的ip }IP_HEAD;

实验1 网络协议分析

实验1 网络协议分析 1. 实验目的 1.了解一种网络数据捕获工具的基本功能和使用方法。 2.掌握IP、TCP协议的格式及工作过程 3.掌握ICMP协议的格式及工作过程 2. 实验环境 1.实验室提供PC 2.Red Hat Linux 9.0(或Ubuntu Linux 8.04) 3.Windows XP 3.实验原理 网络分析(network analysis)是指捕捉网络流动的数据包,将网络数据转换成可读格式,通过查看包内部数据来发现网络中的问题,分析网络性能并发现瓶颈;监视网络通信量,观察网络协议的行为,了解网络的运行状态;深入了解网络协议的功能。 这一单元介绍些计算机网络分析/监视工具的用法。 3.1网络分析系统的基本原理 3.1.1 Libpcap函数库 网络分析系统的工作依赖于一套捕捉网络数据包的函数库。最早的网络数据包捕捉函数库是UNIX系统中的Libpcap函数库。现在大部分UNIX数据包捕获系统都基于Libpcap或者是在其基础上做些针对性的改进。之后,意大利人Fulvio Risso和Lofts Degioanni为Windows系统提出并实现了一个功能强大的开发式数据包捕获平台——Winpcap函数库。 3.1.2 网络分析系统的结构和工作过程 一个网络分析器通常由5部分组成:硬件、捕包驱动、包缓冲区、实时协议分析和解码器。 网络数据包捕捉函数库工作在网络分析系统的最底层,作用是将一个数据包从链路层接收,即从网卡取得数据包或者根据过滤规则取出数据包的子集。 捕包函数捕回数据包后就需要将其转变给上层的分析模块,进行协议分析和协议还原工

作。由于OSI的7层协议模型,协议数据是从上到下判装后发送的。由于协议分析需要从下至上进行:首先对网络层的协议识别后进行组包还原,然后脱去网络层协议头,将里面的数据交给传输层分析,这样一直进行到应用层。 3.1.3基于插件技术的协议分析器 采用插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信。在宿主程序不变的情况下,就可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用程序,程序有很强的可扩展性,各个功能模块内聚性强。 现在的网络协议种类繁多,为了可以随时增加新的协议分析器,一般的协议分析器都采用插件技术。这样,如果需要对一个新的协议进行分析,只需开发编写这个协议分析器并调用注册函数在系统注册就可以使用了。 3.2网络协议分析器Ethereal 3.2.1 Ethereal概述 1.Ethereal的特点 Ethereal是一个可以对活动的网络上或磁盘中捕获数据并分析的重要软件,它有如下一些特点。 (1)它是当前较为流行的一种计算机网络调试和数据包嗅探软件,可以应用于故障修复、分析、软件和协议开发以及教育领域。 (2)可以在实时时间内,从网络连接处捕获数据,或者从被捕获文件处读取数据。 (3)它是一种开发源代码的许可软件,允许用户向其中添加改进方案。 (4)可以运行在所有的主流操作系统之上(Windows,Linux,Solaris)。 (5)支持的网络通信协议是所有的抓包工具中最全面的,几乎所有的协议,Ethereal都有相应的解码器,可以从以太网、FDDI、PPP、令牌环、IEEE 802.11、ATM上的IP和回路接口上读取实时数据。 (6)支持几乎所有的抓包工具的保存格式,可以读取从tcpdump(1ibpcap)、网络通用嗅探器(被压缩和未被压缩)、SnifferTM专业版等多种网络监控器处捕获的文件。 (7)可以通过editcap程序的命令行交换机,有计划地编辑或修改被捕获文件。 (8)可以通过显示过滤器精确地显示数据,输出文件可以被保存或打印为纯文本格式。 2.Ethereal的下载和安装Ethereal的下载地址 http://winpcap.polito.it/install/default.htm https://www.360docs.net/doc/988718039.html,/distrubution/win32/ 注意:以上两个网址中,第一个为;winpcap的网址,第二个网址Ethereal不再使用。Ethereal现在已更名为wireShark,其网址为https://www.360docs.net/doc/988718039.html,/,软件中已集成有winpcap。Ethereal作为早期版本可在网络中搜索下载,官方网站似乎不再提供下载。 事实上,Ethereal本身并不能抓包,它只能用来解析数据包;要抓取数据包,需要借助于Pcap(在Windows下面的实现称作Winpcap,所以在Windows操作系统下,在安装

相关主题
相关文档
最新文档