微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于sniffer的网络安全分析仪设计与实现

基于sniffer的网络安全分析仪设计与实现

时间:06-08 来源:互联网 点击:

b.在超级终端下,选择传送à发送文本文件,定位到images目录下面的u-boot.srec,进行文件传送,成功之后,出现如下“u-boot>”提示。

c.输入命令 loadb,之后会出现类似于“Ready for binary download to {address} at 115200 bps…

出现该提示之后,超级终端à传送à传送文件,images目录下的ub.config.img,通讯协议选择Kermit;

完成传输之后,输入命令autosrc 目的就是要启动刚传输的脚本文件。

紧接着输入以下命令,进行环境设置

U-Boot> setenv ipaddr 192.168.158.210

U-Boot>setenv serverip 192.168.158.57

U-Boot>saveenv

说明:serverip就是tftp所在windows系统的ip地址,可以在cmd命令行下通过ipconfig来查看。ipaddr是目标板ip地址,可以自己设定,只要跟serverip地址在同一个网段即可。

d.完成内核下载

U-Boot>run update_uboot

U-Boot>run update_kernel

命令执行完成之后,就完成了内核下载工作。

(9.固化硬件设计

使用impact工具将edk工程目录下面的download.bit文件转换成mcs格式的PROM文件,并烧入开发板上的PROM:xcf04,将fpga配置方式选择为主串配置方式即可,该步骤不再赘述。

下载完成之后,板子重新上电,在超级终端就会发现系统的启动过程。至此,uclinux的嵌入式系统已经安装成功。

2.软件实现

sniffer

(1)流程图

(2)设计明细

◆ 嗅探器的开发

嗅探器的功能是嗅探以太网上的数据包,并且按照用户输入的参数进行格式化输出。

源代码核心函数介绍:

1)查找网络接口

int pcap_findalldevs(pap_if_t **alldevsp,char *errbuf)

-l 调用pcap_findalldevs查找机器的所有可用的网络接口,并用一个网络接口链表返回,然后打印出本机的网卡接口信息。

2)打开网络接口

pcap_t* pcap_open_live(const char *device, int snaplen, int promisc, int to_ms, char *ebuf)

-i 指定网卡接口(device)的值,-p指定promisc的值,值为1,表示设置网卡为混杂模式,值为0,表示不设置为混杂模式。本函数返回一个libpcap句柄。

3)捕获指定的网卡

int pcap_loop(pcap_t* p,int cnt, pcap_handler callback,u_char *user)

-c 指定cnt的数值,cnt是捕获的数据包的个数,-1表示捕获个数为无限个。

每次捕获一个数据包就调用callback指示的回调函数。所以,利用这个回调函数的特点,程序可以循环捕捉数据包并

调用回调函数进行分析。

4)数据包处理

使用pcap_loop捕获了数据包后,我们需要调用回调函数来分析以太网协议,由于以太网协议是分层的,所以我们

需要根据以太网的数据包的类型字段来判断协议类型,然后逐一进行分析,并输出协议报头和内容。还要根据用户的输入

参数进行特殊的格式化输出,这样子可以便于分析网络的通信状况。

1>以太网协议分析

void ether_printer(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

本函数处理以太网报头,并输出以太网的mac地址流向。另外,根据以太帧的上层协议类型字段进行逐一分析,

0x0806表示arp协议,0x0800表示ip协议。并分别调用各自的分析函数。

-m 指定输出以太网的网卡mac地址流。默认情况不会输出硬件地址流向。

2>arp协议分析

void arp_printer(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

本函数处理arp协议报头,并分析arp的操作码,按照arp requset和arp reply两种数据包进行输出。

-n 指定输出的格式,输出域名而不是ip地址。

3>ip协议分析

void ip_printer(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

本函数按照ip报头里面的上层协议字段,分tcp(6)、udp(17)和icmp(1)三种协议进行分析处理。

4>tcp协议分析

void tcp_printer(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

本函数分析tcp协议,输出源ip地址,源端口,目的ip地址,目的端口。

-n指定输出的格式,输出域名而不是ip地址。

-a 解析端口号为相应的服务名

-v 输出tcp的详细信息,包括序列号,确认应答号,控制标志,窗口大小,检查和,紧急指针,包长度,服务类型,ip段偏移值,生存周期,如果指定了-x,还可以输出数据包的十六进制内容。

5>udp协议分析

void udp_printer(u_char *user, const struct pcap_pkthdr *h, const u_char *p)

本函数分析udp协议,输出源ip地址,源端口,目的ip地址,目的端口。

-n指定输出的格式,输出域名而不是ip地址。

-a 解析端口号为相应的服务名

-v 输出udp的详细信息,包括包长度,服务类型,ip段偏移值,生存周期,如果指定了-

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top