您的位置 首页 芯闻

根据sniffer的网络安全分析仪规划与完成

本作品在xilinx提供的spartan3e-500 Rev C开发平台上成功地嵌入uclinux,并使用网络安全开发包libpcap编写代码,实现了基于Sniffer技术的局域网简单流量分析功能。

摘要

本著作在xilinx供给的spartan3e-500 Rev C开发渠道上成功地嵌入uclinux,并运用网络安全开发包libpcap编写代码,完结了依据Sniffer技术的局域网简略流量剖析功用。

人机交互操作,经过telent指令或许超级终端完结。

一.体系规划

1.硬件规划

Xilinx公司的spartan3e starter kit 供给以太网10/100 phy 接口,JTAG USB下载,2个9引脚的RS-232串行接口等衔接器和接口资源,而且其方针运用商场定位在消费类、电信/数据通讯、服务器、存储器。结合开发板的优势推知,spartan3e starter kit 在嵌入小型操作体系后,在完结网络数据捕捉及处理方面有必定的优势,为咱们的著作规划供给了名贵的条件。

本规划挑选操作体系uclinux,uclinux 是 一种优异的嵌入式Linux版别。它集成了规范linux操作体系的稳定性、强壮的网络功用和超卓的文件体系等首要长处,更重要的是没有MMU(内存办理单元),更适合小型运用。

依据以上考虑,咱们能够运用edk套件树立出uclinux运转的硬件渠道。

2.软件规划

依据信息安全专业的布景,曾经运用过软件版别的sniffer。本规划想象在树立的uclinux渠道上完结sniffer功用,进行网络数据的捕捉以及处理,完结局域网简略流量剖析功用。

首要网络流量剖析是必要的,傻瓜式进犯就能够让网络瘫痪,因而确诊网络反常状况,是保护网络的必备技术。以太局域网上遍及运用tcp/ip协议,要把握整个局域网的运用状况,有必要对底层的网络传输数据包进行捕获并剖析,才干精确地断定以太局域网的网络状况。

而本次规划中运用了数据包捕获开发包Libpcap(the Packet Capture Library),它是一个高层的编程接口,躲藏了操作体系的细节,能够捕获网络上的一切数据包。Libpcap中运用了BPF过滤机制,使Libpcap具有捕获特定数据包的功用。

依据以上剖析,咱们想象经过剖析以太网网络的数据包流向,用来确诊整个网络是否呈现了反常状况,完结了局域网安全剖析的功用。别的,针对arp病毒的众多状况,特别开发了一个arp东西,用来对整个网络的ip、mac地址进行扫描,并快速的更新arp缓存。

二.体系完结

1.硬件完结

树立硬件渠道流程,主张不要更改,有些是环环相套的。

(1.请求评价版ip包

edk9.1供给的以太网操控器ip有两种,一种是opb Ethernet ,另一种便是opb Ethernetlite,这两种最首要的差异便是ethernet支撑硬件过滤的稠浊形式,而ethernetlite是一种简化了的操控器,适合于以太网的简略运用,但却不支撑混在形式,本著作的规划条件便是网卡有必要要作业再混在形式,所以只能挑选需求注册运用的opb Ethernet,考虑到非专业规划公司运用,故请求了3个月的免费ip运用权。若要参阅本规划的话,该进程是十分有必要的。若需求,能够到xilinx公司的网站上进行请求,需求阐明的是请求的ip答应包是跟pc的网卡地址绑定的,具体请求进程不再胪陈。

(2.定制板上资源

本著效果到的板上I/O接口:RS232_DCE、FLASH、DDR_SDRAM、Ethernet_Mac等。xilinx公司嵌入式套件EDK中xps供给的bsb(base system builder)能够轻松地完结板上资源的定制。下面就结合一些进程图片来阐明下怎么完结该硬件规划。

(1)发动xps9.1i,软件体系会弹出如图所示的对话框,其间共有三个选项。由于咱们是要新建一个硬件渠道,因而点选“Base System Bulider wizard(recommended)”, 点击“OK”,进入下一步导游。

(2)在弹出的对话框中,点击“Browse”按钮,挑选一个方针磁盘树立一个自己的工程文件夹并进入,点击保存,体系会主动为此项目生成一个system.xmp(有必要运用system文件名);点击“OK”按钮,进入BSB欢迎对话框。

(3)在欢迎对话框中,挑选“I would like to create a new design”,点击“Next”按钮。

(4)进入开发板挑选对话框,进行如图所示挑选。spartan-3E Starter Board 的版别有C跟D两种,他们其实在接口资源以及内置资源方面是十分相似的,仅有一处不同,DDR SDRAM存储器容量的不同,C版别的只需32MB,而D版别的却有64MB。能够依据DDR SDRAM的类型来承认开发板的版别,我所运用的开发板,DDR SDRAM类型为MT46V32M16,由此承认出开发板类型为D。若不重视这个问题的话,挑选C跟D都是能够的。

(5)进入处理器挑选对话框,由于spartan-3E只支撑软核MicroBlaze,所以保存默许设置即可。点击“Next”进入下一步。

(6)进入MicroBlaze装备对话框,参阅时钟频率挑选默许值50MHz即可,MicroBlaze处理器的总线时钟频率挑选为“66.67”MHz。其间参阅时钟由开发板上的时钟源供给,被用来发生总线和处理器的频率。Cache setup选项点选“Enable”,其他项坚持默许即可,点击“Next”进入下一步。

(7)进入I/O端口装备对话框。I/O设备挑选“RS232_DCE”,不挑选”RS232_DTE”和“Leds_8bit”。关于RS232_DCE,波特率挑选“115200”,而且翻开中止,其他选项默许即可。点击对话框右侧的“Data Sheet”按钮,能够看到每个外设的具体资料,从这儿咱们能够或得许多协助的,能够充分运用下。挑选结束后点击“Next”,进入下一步。

(8)持续I/O装备,在该对话框中只需求点选“Flash_16M×8”,peripheral选项列中挑选“OPB EMC”,点击“Next”,进入下一步。

(9)进入外部存储器与网络接口对话框,如图所示。

spartan-3E开发板运用运用外部存储器DDR SDRAM,所以需求点选它。由于网络数据捕获需求经过网络接口来完结,所以“Ethernet_Mac”选项是必不可少的,一起需求把中止翻开,

点击“Next”,进入下一步。

(10)由于需求运用uclinux操作体系,因而需求增加定时器,在呈现的对话框中点击“Add Peripherals”按钮,在弹出的对话框中挑选“OPB TIMER”,然后点击“OK”按钮。

(11)在接下来的对话框中,timer mode点选“one timer is present”并开中止,然后点击“Next”,进入下一步。

(12)进入cache装备对话框。由于在体系构建之初,咱们现已挑选了对外部存储器进行cache缓存,所以在这儿需求对其巨细进行设置,数据cache与指令cache别离为默许的“8KB”和“2KB”即可,而且勾选“%&&&&&%ache”与“DCache”,之后点击“Next”按钮。

(13)剩余的进程,能够一向点击Next到generate。

(14)呈现“the next step”对话框时,点“OK”。

至此针对网络安全剖析仪的硬件资源定制完结。

(3.稠浊形式功用敞开(特别重要)

默许状况下,以太网操控器ip核opb ethernet 的混在形式功用是没有敞开的,需求在xilinx公司供给的emac v1_01_a驱动代码里边增加敞开代码。具体进程如下:

(1)System Assembly View1 视图中,右键单击Ethernet_Mac挑选Driver:emac_v1_01_a中的“Browse Driver Sources”之后,在弹出的文件对话框中点选src进入该方针翻开xemac_selftest.c。

(2)修正xemac_selftest.c,将 XEM_ECR_PROMISC_ENABLE_MASK增加到XEM_ECR_RESET_STATE 的界说中,记住增加的代码前面有个位运算符或“|”。

(4.增加支撑操作体系的附加选项

(1)在System Assembly View1 视图中,切换到“Bus Interface”,能够看到MicroBlaze体系中各个模块与总线的衔接状况。

(2)这儿,咱们需求对体系做如下增加:将窗口切换到“Ports”,翻开“debug_module”,点击“Interrupt”中的“Net”选项,挑选“debug_module_Interrupt”。

(3)翻开“opb_intc_0”,然后双击“L to H”。

(4)咱们需求把debug_module_Interrupt加入到“Connected Interrupt”栏中,办法是在左边选中debug_module_Interrupt,点击加号,即可加入到右侧的“Connected Interrupt”栏中。

(5.生成uclinux板上支撑bsp

(1)由于本著作需求在MicroBlaze处理器上运转uclinux,因而首要应该将uclinux的装备文件petalinux_v1_00_b仿制到\EDK\sw\lib\bsp文件夹下。

(2)从头翻开工程文件。

(3)进行软件渠道装备,点击“software”菜单,发动“software platform setting”。

(4)体系会弹出软件渠道的装备窗口,这儿共有4个可装备项,咱们只需求装备其间的“software platform”、“”。对“software platform”进行装备时分,点击它,窗口右侧为可装备参数,包含两个子窗口。在processor parameters中将“CORE_CLOCK_FREQ_Hz”的current value 修正为50000000;在os library settings”子窗口中,翻开os下拉菜单,挑选petalinux(其实便是uclinux)。点击左边的os and libraries,进行装备。装备参数如下:

flash_memory_bank: 0;flash_memory: FLASH_16Mx8;main_memory_bank: 0

main_memory: DDR_SDRAM_16Mx16;stdin: RS232_DCE;stdout: RS232_DCE

点击OK,保存装备。

(5)进入EDK的software菜单,点击 Generate BSP and Libraries,体系会主动生成板级支撑包与库。能够在工程目录文件夹下的/microblaze_0/libsrc/ petalinux_v1_00_b目录中找到已生成的两个装备文件Kconfig.auto和auto-config.in。

阐明:Kconfig.auto,是针对kernel 2.6的,auto-config.in是针对kernel 2.4的。用记事本翻开其间一个看看终究,会发现都是一些#define 界说,本来硬件信息便是经过这些界说传递给内核并编译完结的。

3.嵌入uclinux

环境阐明

1.嵌入uclinux,所需求的资源包petalinux-v0.30-rc1.tar.gz,能够从http://developer.petalogix.com/wiki/WikiStarthttp://developer.petalogix.com/wiki/WikiStart 网址下载得到。

2.windows xp + vmware(Redhat9)

3.ISE9.1(sp3)+EDK9.1(sp2)

4.Cisco TFTP Server

目录阐明

目录

描绘

D:\petalinux

windows同享给vmware(redhat9)的目录

/mnt/hgfs/123

vmware(redhat9)同享给windows的目录

/embedded

petalinux-v0.30-rc1.tar.gz解压到该目录

操作进程

(1.vmware的redhat9图形界面装置vmware tools。

(1)敞开虚拟机中的redhat9体系;

(2)点击“虚拟机”菜单中的“设置”选项,在cd-rom选项中,点选“运用iso镜像”,并将文件定位到vmware装置目录中linux.iso;

(3)点击“虚拟机”菜单中的“装置vmware东西”,此刻在桌面会呈现光盘图标vmware tools;

(4)双击光盘图标进入,点击可履行文件rpm运转,稍稍便能够装置完结。

(2.树立同享文件夹

咱们需求树立一个能够在windows与linux体系之间同享的文件夹,经过虚拟机vmware来树立。在树立之前请保证vmware tools现已装置成功。

(1)点击“虚拟机”菜单中的“设置”选项,在呈现的对话框中点击“选项”,进入设置页面。

(2)点击“同享文件夹”,在右侧点击“增加”按钮,进入设置导游。在称号栏填写“123”,在主机文件夹增加windows同享目录D:\petalinux,点击“完结”。

这样在体系每发动之后,虚拟机redhat9都会将windows同享文件夹D:\petalinux挂载到/mnt/hgfs/123中。至此,windows与linux之间的文件同享通道现已树立完结。这关于今后的嵌入式开发作业来说,是至关重要的。除此办法之外,当然还有别的的文件同享办法,比方ftp等。可是相比较而言,这种办法更为简洁。

(3.树立内核编译环境

嵌入式开发,需求在pc的linux虚拟环境中树立穿插编译环境。咱们运用了开发包petalinux-v0.30-rc1.tar.gz,下面就此包的运用办法来阐明下。

(1)将petalinux-v0.30-rc1.tar.gz开发包仿制到redhat9体系中的作业目录/embedded。

(2)敞开终端,履行指令cd /embedded,进入作业目录;

(3)在该目录,履行解压缩开发包的操作,指令为:tar -zxvf petalinux-v0.30-rc1.tar.gz;

(4)解压缩完结之后,会在该目录中生成一个文件夹petalinux-v0.30-rc1;

(5)下面来阐明下这个文件夹的结构

petalinux-v0.30-rc1

+ tools ;包含编译器(gcc)东西和各种供给简洁操作的协助脚本

| + common

| | + petalogix

| | + bin

| + linux-i386

| + microblaze-uclinux-tools

|

+ software

| + petalinux-dist //首要的linux编译环境

| + linux-2.6.x-petalogix //linux2.6内核

| + uClinux-2.4.x //linux 2.4内核

| + user-apps //用户程序文件夹 |

+ hardware

| + reference-designs //参阅规划

| + user-platforms //edk硬件工程

| + edk_user_repository // petalinux装备文件

| +fs-boot

+ settings.sh/settings.sch //脚本程序,将编译环境定位到该开发包,履行哪一个脚本,取决于shell类型。

(6)特别要阐明的是,每次敞开一个终端,都得履行脚本文件settings.sh/sch,否则是报错error:“PETALINUX environment variable not set”。

(4仿制edk工程目录

仿制edk工程目录到user-platforms,这就需求用到windows与linux之间的同享文件夹。具体操作办法比较简略,不再赘述。可是有一点有必要要阐明:

edk工程文件名有必要是system.xmp,这是由于开发包里边的脚本,比方说petalinux-copy-autoconfig,其效果便是将工程目录中libgen生成的kconfig.auto 转化成linux格局并仿制到当时活动的platform中,可是其只会寻觅system.xmp的工程!

(5.select a platform

(1)在终端设置petalinux环境

在 petalinux-v0.30-rc1目录下面,履行source setthings.sh指令

(2)终端进入petalinux-dist目录,履行make menuconfig指令,之后会呈现

内核装备页面,如下图所示做出挑选:

退出并保存设置

(6.working with autoconfig

进入user-platforms文件夹中的edk工程目录uclinux,履行下面脚本petalinux-copy-autoconfig

(7.petalinx装备及内核编译

此进程是依照自己的需求,来进行内核裁剪的,可是有些当地有必要留意,需求把默许挑选了的选项给去掉,担任会报错。

(1)进入petalinux-dist目录,运转指令make menuconfig,呈现内核装备对话框,挑选进入Kernel/Library/Defaults selection,呈现下图所示页面,并依照图做出相似挑选。

退出并保存;

(2)紧接着就跳出了Linux Kernel Configuration 页面,在这儿咱们需求做出如下变化:

依此次序 NetworkingàNetworking options进入装备页面,挑选Packet socket并退出到Linux Kernel Configuration 页面;

依此次序Device DriversàNetwork device supportàEthernet(10 or 100Mbit)进入装备页面,挑选Xilinx 10/100 OPB EMAC support,撤销挑选Xilinx 10/100 OPB EMACLITE support,退出到Device Drivers装备页面;

找到Input device support,进入装备页面,撤销Keypad Test Device挑选;

一路退出并终究保存;

(3)之后会跳出Main Menu装备页面

进入System Settings装备页面,撤销 Copy final image to tftpboot的挑选,再进入Flash Partition Table将Partition 3 size设置为80000并退出到main menu;

进入core applications装备页面,挑选enable console shell;撤销挑选agetty并退出到main menu;

进入 Library Configuration装备页面,挑选 Bulid Libpcap并退出到main menu;

进入Filesystem Applications装备页面,撤销flatfsd挑选并退出到main menu;

进入 Network Applications装备页面,撤销dhcpcd-new(2.0/2.4)挑选并退出到main menu;

进入BusyBox装备页面,挑选chmod并退出;

一路退出,并最终保存设置;

(4)编译内核

运转指令make dep,是树立源文件跟头文件的依靠联系;

运转指令make all,进行内核编译作业;

一段时刻之后,能够顺畅编译完结。成功之后会在petalinux-dist目录中发现多了个images文件夹,这儿面便是咱们需求的文件。

(8.运用bootloader固化内核规划

(1)在windows体系下翻开树立的edk工程system.xmp,在project information area中的Applications列做如下图所示的修正:

a.先进行“Set Compiler Options”,如图所示点击右键之后会呈现一个设置对话框,其间有三个选项列,别离是Environment,Debug and Optimization,Paths and Options。要做的修正如下表所示:

Attribute

value

Environment

Application mode

executable

Output ELF file

default value

Linker Script

Use default Linker Script

Stack Size

1K

Debug and Optimization

Optimization Level

Size Optimized(-Os)

Advance

Other Compiler Options to Append

-Wall

b.增加fs-boot 文件夹里边的c源文件跟头文件

运用同享文件夹将petalinux-v0.30-rc1/hardware目录下面的fs-boot文件夹仿制到windows体系;将sources跟headers项目下的文件删去,具体办法是在文件上面点右键挑选“remove”;然后在“sources”跟“headers”上点右键,挑选“Add Existing Files”,将方位定位到fs-boot下面的文件,完结增加进程。

c. make project : TestApp_Peripheral inactive,办法是点右键,挑选“Make Project Inactive”。

(2)运用xps翻开edk工程system.xmp,在Hardware菜单下挑选“Generate Netlist”生成网表,进程无误之后,再在该菜单下挑选“Generate Bitstream”,生成硬件比特文件。

(3)树立一个超级终端,参数如下:

波特率:115200,数据位:8,奇偶校验:无,中止位:1,数据流操控:无。

衔接串口线,电源线,jtag下载线,RJ45网络接口,注册电源。

(4)在xps菜单“Device Configuration”下挑选“Download Bitstream”,进行硬件比特流文件的下载;下载完结之后会呈现如下提示:

FS-BOOT:Waiting for SREC image……

表明硬件比特流现已下载成功。

现在固化内核需求做的有以下几个进程;

a.网上下载tftp服务器,运用windows跟linux同享文件目录将petalinux-dist目录下新生成的images仿制到windowsx体系目录下面,并将该images目录作为tftp服务器的根目录。

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段偏移值,生计周期,假如指定了-x,还能够输出数据包的十六进制内容。

6>icmp协议剖析

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

本函数剖析icmp协议,输出icpm协议的源ip地址,意图ip地址,以及类型,比方echo request和echo reply。

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

5)数据包计算

本程序运用SIGINT信号,在键盘上的Ctrl+C快捷键按下后宣布中止信号SIGINT,然后程序调用信号处理函数,输出数据包的总巨细,捕获时刻,还有arp、ip、tcp、udp、icmp、ether网的数据包总个数以及占用的百分比。

signal(SIGINT, sigIntHandler) //用来设定SIGINT信号

void sigIntHandler(int sig) //SIGINT信号处理函数

6)其他辅佐函数

char *copy_argv(register char **argv) //BPF内核过滤参数处理

int32_t gmt2local(time_t t) //本地时刻转化函数

void ts_print(register const struct timeval *tvp) //时刻打印函数

void getportname(int portn,char portch[], char *protocol) //端口号->服务名

static void hex_print(const u_char *buf, int len, int offset)//

十六进制打印

【域名处理】

struct {

unsigned long int ipaddr;

char hostname[MAXSTRINGSIZE];

}nametable[MAXENTRY]; //ip域名高速缓存

int tbllength=0;

void intohost(unsigned long int iadd, char *hn)

void reghost(unsigned long int iadd)

void print_hostname(u_char *ipadd)

arp tool

(1)流程图

(2)程序明细

★arptool规划

arptool用于扫描局域网的ip、mac地址对应表,而且具有发送arp数据包的功用,能够抵挡局域网的arp诈骗进犯。

源代码中心函数介绍:

1) 取得本机ip地址

int get_ip(struct in_addr* addr)

本函数运用ioctl体系调用取得体系ip地址,并保存到addr结构体中。

2) 取得子网掩码

int get_mask(struct in_addr* addr)

本函数运用ioctl体系调用取得子网掩码,并保存到addr结构体中。

3) 取得本机硬件地址

int get_packet_sock(struct sockaddr_ll* sll, char *device, u_char hwaddr[])

本函数运用ioctl体系调用取得本机硬件地址,并保存到addr结构体中。

一起能够自己界说硬件地址,用来和arpsend合作。

一起生成一个sockaddr_ll结构体,用来发送arp数据包。

4) 嗅探arp数据包

void* sniff(void* myip)

运用libpcap嗅探数据包,并指定arp数据包,方针地址为本机ip,回调函数为

void handler(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pack)

5) 发送arp数据包

int arpsend_local(int sock, struct sockaddr_ll* sll,u_char* pdip, u_char* pdmac)

int arpsend(int sock, struct sockaddr_ll* sll, u_long SrcIP, u_long DstIP, u_char DstHW[])

arpsend_local为列表ip、mac地址所用的本机arp发包函数。

arpsend是用来发送自界说的arp数据包,供主函数调用。

-n 指定发送的arp包的个数

-a 指定发送arp request包,默许的是arp reply包

-w 指定发送数据包的时刻距离(秒数),默许是1秒

-d 指定发送数据包的方针ip地址

-s 指定发送数据包的源ip地址

-t 指定发送数据包的方针硬件地址

-r 指定发送数据包的源硬件地址

6) 输出ip-mac对应表

int listIPMAC(u_char *device)

本函数里边用新的线程进行监听,线程函数为sniff,一起用arpsend_local发送本机的arp数据包,然后调用下面的函数。

void handler(u_char* user, const struct pcap_pkthdr* hdr, const u_char* pack)

本函数是嗅探arp数据包的回调函数,读取嗅探的arp包,并解析出来历ip和源mac地址,然后输出ip、mac对应表。

3.用户程序树立以及microblaze 上运转

程序板上调试能够运用网络文件体系NFS,可是我的nfs树立不起来,只能运用了另一种办法,由于发现板上uclinux体系有tftp指令,故运用windows体系下的tftp服务器。具体办法如下:

  1. 运用petalinux-new-app脚本树立用户程序,并编译。具体办法参阅user-apps目录下面的README。

  2. 将生成的履行文件经过同享文件夹仿制到tftp服务器根目录

  3. 方针板上电发动之后,在超级终端,运用ifconfig eth0 x.x.x.x指令分配板上体系一个ip地址。

  4. 敞开tftp服务器,进入板上体系的可写入目录/var(ramfs文件体系),履行指令

tftp 192.168.158.57(tftp服务器ip) –g –r 可履行文件名

  1. 修正可履行文件的权限 chmod 755 可履行文件名

(6)./可履行文件,检查运转成果。

4.软硬件交融

当程序的运转状况契合自己的预期的时分,就能够将其加载到操作体系内核了。具体办法如下:

  1. redhat9体系,在现已树立了petalinux环境的终端中,履行指令进入

petalinux-dist目录,履行指令make image

  1. 将新生成的images文件夹经过同享文件夹仿制到windows体系中tftp服务器根目录下。

  2. 敞开tftp服务器,板子上电,当呈现“hit anykey to stop autoboot”时分,敲击键盘上某个键,此刻会呈现“U-Boot>”提示,输入指令“run update_kernel”履行之,经过一段时刻之后,内核就会更新完结。

  3. 从头上电发动,就会在/bin目录下面找到编译成功的用户程序。

功用特征

嵌入式体系功用及特征:

在xilinx公司供给的开发板上,完结了依据fpga的嵌入式规划,成功地固化操作体系uclinux。fpga的装备方法为主串方法;板上的DDR SDRAM(MT46V32M16)相当于体系内存,Intel StrataFlash Parallel NOR FLASH相当于体系硬盘;嵌入的体系支撑了多文件体系,比方romfs,ramfs。ramfs十分适合于嗅探成果的暂时寄存,方便了剖析;以太网卡驱动初始化增加了稠浊形式,为程序的全网嗅探供给了或许;规范输入输出设备为串口,一起也支撑telnet长途操控操作。

程序功用及特征:

嗅探器的完结,首要运用了网络数据包捕获函数包libpcap。编写的代码可捕获tcp,udp,arp,icmp,ip等协议的数据包,并可完结协议,ip,端口等的过滤以及具体的依据ip,协议的流量计算功用;arp东西可输出局域网的ip-mac映射表,并可发送特定ip,mac地址的arp数据包以及时纠正过错的arp缓存。

体系测验

测验环境

本著作测验的环境是以太局域网。

测验设备

有镜像端口的交换机或许10BASE-T Ethernet Hub

东西运用流程简述

  1. 运用指令 nsa –i eth0,依据成果以及流量计算剖析可疑ip地址,开始知道该ip地址行为。

  2. 运用nsa供给的参数,对特定的数据包进行协议,ip地址,端口号,或许mac地址的过滤,进行具体剖析。

功用测验

测验-: 局域网内的反常行为是许多的,可是反常行为或多或少都会在数据包行为,比方流向,频度,端口特征等方面表现出来,因而是能够剖析出来的。现在只挑选一种行为arp诈骗进行数据包的侦测剖析。

进程描绘:

1.模仿出arp诈骗行为。

2.翻开超级终端,设定各个参数。方针板上电,在超级终端运用ifconfig eth0 指令,分配给嵌入式体系同一网段的ip地址。

3.telnet指令登陆方针板,用户名,暗码均为root。

4.运用指令nsa –i eth0 arp > /var/result,进行arp数据包捕获,一段时刻之后,运用ctrl+c指令中止。

5.运用指令 vi /var/result检查抓包成果。

测验成果及剖析

模仿出来的arp诈骗,其明显特征便是要不断地发送arp回应包来更新受害主机的arp缓存来到达诈骗的意图。经过运用咱们的程序能够抓到如图所示的arp数据包,网关mac地址为假,能够必定的是有台主机在进行arp诈骗并假充网关的人物。

测验二:

归纳抓包测验,首要进行nsa东西的全方位演示

1.nsa -i eth0 –na 抓取eth0接口并输出数据流向以及运用层协议和域名称号并计算。

2. nsa -i 1 -c 4444 抓取指定个数的1号接口数据包并计算。

3.nsa ip src host 192.168.158.57 and tcp port 80 抓取ip地址为192.168.158.57的http协议的数据流向并计算。

4. nsa -v -x src net 192.168 and dst port 80 抓取网络地址为192.168网络的http协议的数据包并打印16进制数据内容以及包头信息。

测验三:arptool测验

功用一:列出ip-mac映射表,运用指令arptool –l

成果:

功用二:指定ip、mac,发送arp数据包

arptool -d 192.168.158.57 -s 192.168.158.210 -r 00:0A:35:00:22:01 –n 3

运用该指令向192.168.158.57发送192.168.158.210正确的arp数据包3次。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/189785.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部