网络分析嗅探工具
( NAST )
Course
Course
Course
Course Title:
Title:
Title:
Title:
网络分析嗅探工具
Name:
Name:
Name:
Name:
Date:
Date:
Date:
Date: 2009 / 7 / 7
1.
1.
1.
1. Overview
Overview
Overview
Overview
本程序用于捕获网络接口的数据包,并进行分析处理,同时提供一些工具,譬如查找网
关,端口扫描等等。
通过此工具用于截获网络数据包,对于数据进行分析,由此进行流量检测,数据分析。
2.
2.
2.
2. Requirements
Requirements
Requirements
Requirements Analysis
Analysis
Analysis
Analysis
项目开发环境 : Ubuntu 9.04 ( Linux 2.6.28 kernel )
编程语言: C
功能需求:
网络数据包的截取
扫描主机上的网络接口,使用 Libcap 库 截取数据报文
主机端口扫描
指定要扫描的主机,以及要扫描的端口范围,构造 TCP 数据报文,扫描目标主机端
口,返回端口状态,端口服务类型
网络层数据报文分析
分析数据报文,处理 IP , ARP , RARP 数据报文
将 IP 数据报文交给下一层再做进一步分析
传输层数据报文分析
分析 TCP , UDP , ICMP , IGMP 数据报文,将分析结果记录在日志文件中。
查找网关
查找本地地址的网关,返回路由表,网关
3.
3.
3.
3. Preliminary
Preliminary
Preliminary
Preliminary Design
Design
Design
Design
在这部分介绍概要设计,可包括以下部分:
模块分解
模块间的关系
数据结构设计
等等
模块分解:
程序入口 main.c
嗅探程序 sniffer.c
处理以太网层数据包 ethernet.c
处理 tcp 数据包 tcp.c
处理 udp 数据包 udp.c
处理 icmp 数据包 icmp.c
处理 igmp 数据包 igmp.c
处理 arp 数据包 arp.c
处理 端口扫描 port.c
处理 查找网关 gateway.c
工具 common.c
ARP 数据报文头
4.
4.
4.
4.
Detailed
Detailed
Detailed
Detailed Design
Design
Design
Design
嗅探器原理:
libpcap 主要由两部份组成:网络分接头 (Network Tap) 和数据过滤器 (Packet Filter) 。网
络分接头从网络设备驱动程序中收集数据拷贝,过滤器决定是否接收该数据包。 Libpcap 利
用 BSD Packet Filter(BPF) 算法对网卡接收到的链路层数据包进行过滤。 BPF 算法的基本思
想是在有 BPF 监听的网络中,网卡驱动将接收到的数据包复制一份交给 BPF 过滤器,过 滤
器根据用户定义的规则决定是否接收此数据包以及需要拷贝该数据包的那些内容,然后将
过滤后的数据给与过滤器相关联的上层应用程序。
libpcap 的包捕获机制就是在数据链路层加一个旁路处理。当一个数据包到达网络接口
时, libpcap 首先利用已经创建的 Socket 从链路层驱动程序中获得该数据包的拷贝,再通过
Tap 函数将数据包发给 BPF 过滤器。 BPF 过滤器根据用户已经定义好的过滤规则对数据包 进
行逐一匹配,匹配成功则放入内核缓冲区,并传递给用户缓冲区,匹配失败则直接丢弃。
如果没有设置过滤规则,所有数据包都将放入内核缓冲区,并传递给用户层缓冲区。
一些主要的函数
pcap_lookupdev() 函数用于查找网络设备,返回可被 pcap_open_live() 函数调用的网络设备名
指针。
pcap_open_live() 函数用于打开网络设备,并且返回用于捕获网络数据包的数据包捕获描述
字。对于此网络设备的操作都要基于此网络设备描述字。
pcap_lookupnet() 函数获得指定网络设备的网络号和掩码。
pcap_compile() 函数用于将用户制定的过滤策略编译到过滤程序中。
pcap_setfilter() 函数用于设置过滤器。
pcap_loop() 函数 pcap_dispatch() 函数用于捕获数据包,捕获后还可以进行处理,此外
pcap_next() 和 pcap_next_ex() 两个函数也可以用来捕获数据包。
pcap_close() 函数用于关闭网络设备,释放资源。
主要的模块 ,伪代码:
Main 函数
While (option =getopt)
Switch (option)
Case h : 显示帮助信息
Case i : 指定设备名称
Case p: 设置网口混杂模式
Case s: 端口扫描
Case f: 设置过滤规则
Case
t
: 设定需要捕获的数据包总数
Case g: 查找网关
Case
V:
查看版本信息
Case l : 指定日志记录文件
- 1
- 2
- 3
- 4
前往页