文档库 最新最全的文档下载
当前位置:文档库 › 网络嗅探器的系统设计应用

网络嗅探器的系统设计应用

网络嗅探器的系统设计应用
网络嗅探器的系统设计应用

计算机网络课程设计

题目网络嗅探器的设计与实现

系 (部)

姓名

学号

指导教师

2015年7月18日

计算机网络课程设计任务书

网络嗅探器的设计与实现

摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。

关键字:网络嗅探器;数据包捕获; 套接字

引言

由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。

嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。

1基本概念

1.1嗅探器

每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式:

a)广播方式:该模式下的网卡能够接收网络中的广播信息。

b)组播方式:设置在该模式下的网卡能够接收组播数据。

c)直接方式:在这种模式下,只有目的网卡才能接收该数据。

d)混杂模式:在这种模式下的网卡能够接收一切通过它的数据,而不管该数据是否是传给它的。

嗅探程序是一种利用以太网的特性把网络适配卡(NIC,一般为以太网卡)置为混杂模式状态的工具,一旦网卡设置为这种模式,它就能接收传输在网络上的每一个信息包,而不管该数据是否传给它的。

1.2相关协议

1.2.1 IP协议

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层,例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层--TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP 数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

1.2.2 TCP协议

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP 层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

1.2.3 UDP协议

UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP (网落时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。

1.3数据包

“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。数据包的结构非常复杂,主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。比如说当你上网时打开某个网页,这个简单的动作,就是你先发送数据包给那个网站,它接收到了之后,根据你发送的数据包的IP地址,返回给你网页的数据包,也就是说,网页的浏览,实际上就是数据包的交换。

2网络嗅探器的作用

嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通常被黑客运用于网络攻击。我们如果也能掌握网络嗅探器的原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企业信息安全防护。

3网络嗅探器原理

嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行。但是,通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。显然,要达到此目的就不能再让网卡按通常的正常模式工作,而必须将其设置为混杂模式。

具体到编程实现上,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常经常使用的数据流套接字和数据报套接字。在创建了原始套接字后,需要通过setsockopt()函数来设置IP头操作选项,然后再通过bind()函数将原始套接字绑定到本地网卡。为了让原始套接字能接受所有的数据,还需要通过ioctlsocket()来进行设置,而且还可以指定是否亲自处理IP头。至此,实际就可以开始对网络数据包进行嗅探了,对数据包的获取仍象流式套接字或数据报套接字那样通过recv()函数来完成。但是与其他两种套接字不同的是,原始套接字此时捕获到的数据包并不仅仅是单纯的数据信息,而是包含有 IP头、 TCP头等信息头的最原始的数据信息,这些信息保留了它在网络传输时的原貌。通过对这些在低层传输的原始信息的分析可以得到有关网络的一些信息。由于这些数据经过了网络层和传输层的打包,因此需要根据其附加的帧头对数据包进行分析。下面给出数据包的总体结构:

3.1UDP数据段头

数据在从应用层到达传输层时,将添加TCP数据段头,或是UDP数据段头。其中UDP数据段头比较简单,由source port(源端口号) 、destination port(目的端口号) 、udp length(udp长度) 、udp checksum(udp校验和)组成。UDP报头结构体为:typedef struct udphdr {

unsigned short sport; /*source port(源端口号)*/

unsigned short dport; /*destination port(目的端口号)*/

unsigned short len; /*udp length(udp长度)*/

unsigned short cksum; /*udp checksum(udp校验和)*/

}UDP_HDR;

3.2TCP数据段头

TCP数据头则比较复杂,以20个固定字节开始,在固定头后面还可以有一些长度不固定的可选项,由source port(源端口号)、destination port(目的端口号) 、顺序号、确认号、TCP头长、校验和紧急指针、可选项(0或更多的32位字)、数据(可选项)。组成。TCP报头结构体为:

typedef struct tcpheader {

unsigned short int sport; /*source port (源端口号)*/

unsigned short int dport; /*destination port(目的端口号)*/

unsigned int th_seq; /*sequence number(包的序列号)*/

unsigned int th_ack; /*acknowledgement number(确认应答号)*/ unsigned char th_x:4; /*unused(未使用)*/

unsigned char th_off:4; /*data offset(数据偏移量)*/

unsigned char Flags; /*标志全*/

unsigned short int th_win; /*windows(窗口)*/

unsigned short int th_sum; /*checksum(校验和)*/

unsigned short int th_urp; /*urgent pointer(紧急指针)*/

}TCP_HDR;

3.3IP数据段头

在网络层,还要给TCP数据包添加一个IP数据段头以组成IP数据报。IP数据头以大端点机次序传送,从左到右,版本字段的高位字节先传输(SPARC是大端点机;Pentium是小端点机)。如果是小端点机,就要在发送和接收时先行转换然后才能进行传输。IP数据段头格由版本 IHL 服务类型总长、标志、分段偏移、头校验和、源地址、目的地、选项(0或更多)组成。IP数据报头的结构体为:

struct ipheader {

unsigned char ip_hl:4; /*header length(报头长度)*/

unsigned char ip_v:4; /*version(版本)*/

unsigned char ip_tos; /*type os service服务类型*/

unsigned short int ip_len; /*total length (总长度)*/

unsigned short int ip_id; /*identification (标识符)*/

unsigned short int ip_off; /*fragment offset field(段移位域)*/

unsigned char ip_ttl; /*time to live (生存时间)*/

unsigned char ip_p; /*protocol(协议)*/

unsigned short int ip_sum; /*checksum(校验和)*/

unsigned int ip_src; /*source address(源地址)*/

unsigned int ip_dst; /*destination address(目的地址)*/

} ;

4网络嗅探器的设计

在以太网中, 信息是以明文的形式在网络上传输 , 当将网络适配器设置为混杂模式时, 由于采用以太网广播信道争用的方式, 使得监听系统与正常通信的网络能够并联连接, 并可捕获任何一个在同一冲突域上传输的数据包。IEEE802. 3 标准的以太网采用的是持续CSMA 的方式, 正是由于以太网采用这种广播信道争用的方式, 使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截我所要的信息, 这是捕获数据包的物理基础。首先,抓包系统必须绕过操作系统的协议栈来访问在网络上传输的原始数据包, 这就要求一部分运行在操作系统核心内部, 直接与网络接口驱动交互。这个部分是系统依赖的, 在W inpcap 的解决方案里它被认为是一个设备驱动, 称作NPF ( NetgroupPacket F ilter) 。W inpcap 提供了两个不同的库: Packet. dll 和W pcap. dll。Wpcap. dll提供了更加友好、功能更加强大的函数调用。W inPcap 的优势在于提供了一套标准的抓包接口, 与libpcap 兼容, 可使得原来许多UN IX 平台下的网络分析工具快速移植过来,便于开发各种网络分析工具, 充分考虑了各种性能和效率的优化, 包括对于NPF 内核层次上的过滤器支持, 支持内核态的统计模式, 提供了发送数据包的能力。前者提供了一个底层AP I, 伴随着一个独立于M icrosoft 操作系统的编程接口, 这些AP I可以直接用来访问驱动的函数; 后者导出了一组更强大的与libpcap 一致的高层抓包函数库( capture prmi itives) 。这些函数使得数据包的捕获以一种与网络硬件和操作系统无关的方式进行。网络嗅探器工作在网络环境的底层, 拦截所有正在网络上传送的数据, 并且通过相应的解析处理, 可以实时分析这些数据的内容, 进而分析所处的网络状态和整体拓扑布局。含了相应设备的名称和描述。取得网卡列表后就在屏幕上显示出来, 如果网卡没有被发现就显示有关错误, pcap _ findalldevs ( ) 同其他的libpcap函数一样有一个errbuf参数, 当有异常情况发生时,这个参数会被pcap填充为某个特定错误字串。程序功能示意如下: 获得网卡的信息后就可以按数据捕获的要求打开网卡。但是大部分的包捕获程序都将混杂模式设为默认。数据包的过滤通过设置数据流过滤规则来实现,数据包过滤处理时嗅探技术中的难点和重点,WinPcap提供了最强大的数据流过滤引擎。它才用了一种高效的方法来捕获网络数据流的某些数据且常常和系统的捕获机制相集成。过滤数据的函数定 UDP的起始位置,就可以解析出原端口和目的端口。

数据包捕获流程图:

图4.1 数据包捕获流程图

4.1嗅探器设计需要结构体

嗅探器需要的结构体是由IP数据报结构体、TCP报头结构体、UDP报头结构体组成。每个结构体如何定义已在网络嗅探器的原理中具体讲过。

4.2过滤规则的主要代码

if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP))==SOCKET_ERROR)

exit(1);

gethostname(name, MAX_HOSTNAME_LAN);

pHostent = gethostbyname(name);

sa.sin_family = AF_INET;

sa.sin_port = htons(6000);

memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list[0], pHostent->h_length);

bind(sock, (SOCKADDR *)&sa, sizeof(sa)); /*bind()设定自己主机的IP地址和端口号*/

if ((WSAGetLastError())==10013)

exit(1);

WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL, 0, &dwBytesRet, NULL, NULL);

pIpheader = (struct ipheader *)RecvBuf;

pTcpheader = (struct tcpheader *)(RecvBuf+ sizeof(struct ipheader ));

pUdpheader = (struct udphdr *) (RecvBuf+ sizeof(struct ipheader ));

while (1){

memset(RecvBuf, 0, sizeof(RecvBuf));

recv(sock, RecvBuf, sizeof(RecvBuf), 0);

saSource.sin_addr.s_addr = pIpheader->ip_src;

strncpy(szSourceIP, inet_ntoa(saSource.sin_addr), MAX_ADDR_LEN);

saDest.sin_addr.s_addr = pIpheader->ip_dst;

strncpy(szDestIP, inet_ntoa(saDest.sin_addr), MAX_ADDR_LEN);

lentcp =(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct tcpheader)));

lenudp =(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct udphdr)));

4.3循环抓包

4.3.1 TCP包

if((pIpheader->ip_p)==IPPROTO_TCP&&lentcp!=0){

printf("*******************************************\n");

pCount++;

datatcp=(unsigned char *) RecvBuf+sizeof(struct ipheader)+sizeof(struct tcpheader); printf("-TCP-\n");

printf("\n目的IP地址:%s\n",szDestIP);

printf("\n目的端口:%i\n",ntohs(pTcpheader->dport));

printf("datatcp address->%x\n",datatcp);

printf("size of ipheader->%i\n",sizeof(struct ipheader));

printf("size of tcpheader->%i\n",sizeof(struct tcpheader));

printf("size of the hole packet->%i\n",ntohs(pIpheader->ip_len));

printf("\nchar Packet%i [%i]=\"",pCount,lentcp-1);

for (i=0;i

printf("\\x%.2x",*(datatcp+i));

if (i%10==0)

printf("\"\n\"");}

printf("\";\n\n\n");

for (i=0;i

if( *(datatcp+i)<=127&&*(datatcp+i)>=20)

printf("%c",*(datatcp+i));

else

printf(".");

}

printf("\n\n*******************************************\n");

}

运行后的结果:

图4.3.1 TCP包运行结果

4.3.2 UDP包

if((pIpheader->ip_p)==IPPROTO_UDP&&lentcp!=0){

pCount++;

dataudp=(unsigned char *) RecvBuf+sizeof(struct ipheader)+sizeof(struct udphdr);

printf("-UDP-\n");

printf("\n目的IP地址:%s\n",szDestIP);

printf("\n目的端口:%d\n",ntohs(pTcpheader->dport));

printf("UDP数据地址:%x\n",dataudp);

printf("IP头部长度:%i\n",sizeof(struct ipheader));

printf("UDP头部长度:%i\n",sizeof(struct udphdr));

printf("包的大小:%i\n",ntohs(pIpheader->ip_len));

printf("\nchar Packet%i [%i]=\"",pCount,lenudp-1);

for (i=0;i

printf("\\x%.2x",*(dataudp+i));

if (i%10==0)

printf("\"\n\"");

}

printf("\";\n\n\n");

for (i=0;i

if( *(dataudp+i)<=127&&*(dataudp+i)>=20)

printf("%c",*(dataudp+i));

else

printf(".");

}

printf("\n\n*******************************************\n");

}

运行后的结果:

图4.3.2 UDP包运行结果

5总结

通过这次课程设计,使我更加扎实的掌握了有关嗅探器方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。这次课程设计不仅培养了我独立思考、动手操作的能力,在各种其它能力上也都有了提高。

从理论到实践,在这段日子里,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

此次设计也让我明白了思路即出路,有不懂或不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。

参考文献:

[1]吴功宜,董大凡王珺等.计算机网络高级软件编程技术【M】.北京:清华大学出版社,2008

[2]谢小特,王勇军.基于winPcap的捕包程序设计【J】.软件特刊,2007(11):71-72

[3]胡晓元,史浩山.winpcap包截获系统的分析及其应用【J】.计算机工程,2005(1):96-97

[4]赵辉,叶子青.VisualC++系统开发实例精粹【M】,北京:人民邮电出版社,2005

附件:

#include /*windows socket的头文件,系统定义的*/

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib") /*链接API相关连的Ws2_32.lib静态库*/

#define MAX_HOSTNAME_LAN 255

#define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define MAX_ADDR_LEN 16

struct ipheader {

unsigned char ip_hl:4; /*header length(报头长度)*/

unsigned char ip_v:4; /*version(版本)*/

unsigned char ip_tos; /*type os service服务类型*/

unsigned short int ip_len; /*total length (总长度)*/

unsigned short int ip_id;

/*identification (标识符)*/

unsigned short int ip_off;

/*fragment offset field(段移位域)*/ unsigned char ip_ttl; /*time to live (生存时间)*/

unsigned char ip_p;

/*protocol(协议)*/

unsigned short int ip_sum;

/*checksum(校验和)*/

unsigned int ip_src; /*source address(源地址)*/

unsigned int ip_dst;

/*destination address(目的地址)*/

};

/* total ip header length: 20 bytes (=160 bits) */

typedef struct tcpheader {

unsigned short int sport; /*source port (源端口号)*/

unsigned short int dport;

/*destination port(目的端口号)*/

unsigned int th_seq; /*sequence number(包的序列号)*/

unsigned int th_ack;

/*acknowledgement number(确认应答号)*/ unsigned char th_x:4;

/*unused(未使用)*/

unsigned char th_off:4; /*data offset(数据偏移量)*/

unsigned char Flags; /*标志全*/

unsigned short int th_win;

/*windows(窗口)*/

unsigned short int th_sum;

/*checksum(校验和)*/

unsigned short int th_urp; /*urgent pointer(紧急指针)*/

}TCP_HDR;

typedef struct udphdr {

unsigned short sport; /*source port(源端口号)*/

unsigned short dport;

/*destination port(目的端口号)*/

unsigned short len; /*udp length(udp长度)*/

unsigned short cksum; /*udp checksum(udp校验和)*/

}UDP_HDR;

void main(){

SOCKET sock;

WSADATA wsd;

DWORD dwBytesRet;

unsigned int optval = 1;

unsigned char *dataudp,*datatcp;

int i,pCount=0,lentcp, lenudp;

SOCKADDR_IN sa,saSource, saDest;

struct hostent FAR * pHostent;

char FAR name[MAX_HOSTNAME_LAN];

char szSourceIP[MAX_ADDR_LEN], szDestIP[MAX_ADDR_LEN],RecvBuf[65535] = {0};

struct udphdr *pUdpheader;

struct ipheader *pIpheader;

struct tcpheader *pTcpheader;

WSAStartup(MAKEWORD(2,1),&wsd);

if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP))==SOCKET_ERROR)

exit(1);

gethostname(name, MAX_HOSTNAME_LAN);

pHostent = gethostbyname(name);

sa.sin_family = AF_INET;

sa.sin_port = htons(6000);

memcpy(&sa.sin_addr.S_un.S_addr, pHostent->h_addr_list[0],

pHostent->h_length);

bind(sock, (SOCKADDR *)&sa,

sizeof(sa)); /*bind()设定自己主机

的IP地址和端口号*/

if ((WSAGetLastError())==10013)

exit(1);

WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL, 0, &dwBytesRet, NULL, NULL);

pIpheader = (struct ipheader

*)RecvBuf;

pTcpheader = (struct tcpheader

*)(RecvBuf+ sizeof(struct ipheader ));

pUdpheader = (struct udphdr *) (RecvBuf+ sizeof(struct ipheader ));

while (1){ memset(RecvBuf, 0,

sizeof(RecvBuf));

recv(sock, RecvBuf, sizeof(RecvBuf), 0);

saSource.sin_addr.s_addr =

pIpheader->ip_src;

strncpy(szSourceIP,

inet_ntoa(saSource.sin_addr),

MAX_ADDR_LEN);

saDest.sin_addr.s_addr =

pIpheader->ip_dst;

strncpy(szDestIP,

inet_ntoa(saDest.sin_addr),

MAX_ADDR_LEN);

lentcp

=(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct tcpheader)));

lenudp =(ntohs(pIpheader->ip_len)-(sizeof(struct ipheader)+sizeof(struct udphdr)));

if((pIpheader->ip_p)==IPPROTO_TCP&&lentcp

!=0){

printf("*********************************

**********\n");

pCount++;

datatcp=(unsigned char *)

RecvBuf+sizeof(struct

ipheader)+sizeof(struct tcpheader);

printf("-TCP-\n");

printf("\n目的IP地

址:%s\n",szDestIP);

printf("\n目的端

口:%i\n",ntohs(pTcpheader->dport));

printf("datatcp

address->%x\n",datatcp);

printf("size of

ipheader->%i\n",sizeof(struct ipheader));

printf("size of

tcpheader->%i\n",sizeof(struct tcpheader));

printf("size of the hole

packet->%i\n",ntohs(pIpheader->ip_len));

printf("\nchar Packet%i

[%i]=\"",pCount,lentcp-1);

for (i=0;i

printf("\\x%.2x",*(datatcp+i));

if (i%10==0)

printf("\"\n\"");

} printf("\";\n\n\n");

for (i=0;i

if( *(datatcp+i)<=127&&*(datatcp+i)>=20)

printf("%c",*(datatcp+i));

else

printf(".");

}

printf("\n\n*****************************

**************\n");

}

if((pIpheader->ip_p)==IPPROTO_UDP&&lentcp

!=0){

pCount++;

dataudp=(unsigned char *)

RecvBuf+sizeof(struct

ipheader)+sizeof(struct udphdr);

printf("-UDP-\n");

printf("\n目的IP地

址:%s\n",szDestIP);

printf("\n目的端

口:%d\n",ntohs(pTcpheader->dport));

printf("UDP数据地

址:%x\n",dataudp);

printf("IP头部长

度:%i\n",sizeof(struct ipheader));

printf("UDP头部长

度:%i\n",sizeof(struct udphdr));

printf("包的大

小:%i\n",ntohs(pIpheader->ip_len));

printf("\nchar Packet%i

[%i]=\"",pCount,lenudp-1);

for (i=0;i

printf("\\x%.2x",*(dataudp+i));

if (i%10==0)

printf("\"\n\"");

}

printf("\";\n\n\n");

for (i=0;i

if( *(dataudp+i)<=127&&*(dataudp+i)>=20)

printf("%c",*(dataudp+i));

else

printf(".");

}

printf("\n\n*****************************

**************\n"); } }

}

附件:

课程设计成绩评定表

基于winpcap的嗅探器设计与实现

基于winpcap的嗅探器设计与实现

计算机与信息学院 《计算机网络系统实践》报告 设计题目:嗅探器的设计与实现 学生姓名:*** 学号:2010**** 专业班级:信息安全****

2013 年9 月25 一、设计要求 1.不限平台,可以使用Libpcap、WinPcap 或 Linux的原始套接字; 2.实现一个功能比较简单的、具有图形界面的Sniffer,主线程响应用户界 面操作,工作线程完成抓包等工作; 3.能够解析出IP层和传输层的协议头,能够过滤TCP、UDP等数据包; 4.能够输出文本方式传送的数据包的内容; 5.能够进行简单的流量统计。 二、开发环境与工具

操作系统:windows7 开发工具:visual studio 开发语言:C++ 附加库:Winpcap 三、设计原理 网络嗅探器是一种常用的监听网络的工具。所谓嗅探器( Sniffer) ,是一种利用计算机网络接口截获网络数据的软件或硬件,可用于网络管理、网络协议分析以及网络安全等众多方面。嗅探器不同于一般的键捕获工具,后者只能捕获当地终端控制台上的按键内容,而嗅探器所“嗅”到的是动态的以信息包形式( 如IP 数据包或者以太网包) 封装的信息流。其中可能携带了重要数据或敏感信息。可以将这些捕获到的信息包存档,以利用相应工具可以作进一步分析。 计算机网络的设计为嗅探器的使用创造了最基本的条件。在目前的网络环境中,所有计算机节点都是共享传输介质,任意节点发出或发往任意节点的数据帧必将经过网内每一个节点的网络接口,此时只需对嗅探节点的网络接口( 网卡) 进行适当的设置便可为实现嗅探的做好准备工作。在计算机网络系统中,网卡是用来接收网络上其他节点发来的数据帧,其内嵌的单片处理程序会检测数据帧来源的MAC 地址,并根据网卡所设置的接收方式来是否接收处理数据,如果认为应该处理,则网卡就会产生中断信号通知中央处理器,接收该数据帧并传输给操作系统处理。否则就简单丢弃,所对应节点的网卡就截断,计算机的中央处理器并不参与。 网卡是网络中节点主机的关键硬件设备。对数据的接收一般有四种设置模式: 广播模式: 接收在网络中进行广播数据信息。组播模式: 接收组播数据信息。单播模式: 只有匹配的目的网卡才能接收数据信息。混杂模式: 网卡能够可以接收一切通过它的数据信息。 四、系统功能描述及软件模块划分 系统功能设计 本系统的基本功能为实现网络数据包的捕获, 并将其数据内容解析显示。网络数据包捕获功能主要负责从网络中捕获和过滤数据,这可以通过调

网络嗅探器的设计与实现

计算机网络课程设计 题目网络嗅探器的设计与实现 系 (部) 姓名 学号 指导教师 2015年7月18日

计算机网络课程设计任务书

网络嗅探器的设计与实现 摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。 关键字:网络嗅探器;数据包捕获; 套接字 引言 由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。 嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。 1 基本概念 1.1 嗅探器 每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式: a)广播方式:该模式下的网卡能够接收网络中的广播信息。 b)组播方式:设置在该模式下的网卡能够接收组播数据。 c)直接方式:在这种模式下,只有目的网卡才能接收该数据。

网络技术应用》全套教案课程

第一课 认识计算机网络
【教学课题】认识计算机网络
【教学目标】:
知识技能:
(1)了解计算机网络的主要功能、分类和拓扑结构;
(2)理解计算机网络的基本概念,
(3)列举并解释网络通信中常用的信息交换技术及其用途。
过程与方法:
(1)学习计算机网络的相关知识。
(2)能利用所学网络知识对实际问题进行分析探讨。
情感态度价值观:
(1)感受网络的神奇作用,激发对网络技术的求知欲,参与网络技术学习的态度。
(2)认识到信息技术飞速发展的同时,推动人类学习,生活方式的深刻变革,了解社会发展和科技进步的相
互作用。
【教学课时】1 课时
【教学环境】:硬件:网络教室,投影仪;软件:多媒体辅助教学软件。
【重点】:计算机网络的功能、组成、定义。
【难点】:计算机网络的组成
【教学过程】:
一、引入
计算机网络技术的发展和普及日益改变着我们的学习和生活,各种各样的网络应用让我们眼花缭乱,因特网
让我们真正体会到信息爆炸的威力……,这节课我们一起来谈谈我们对计算机网络的认识。
二、新课讲授
(一)计算机网络的功能(阅读课本 P2~P3,并填表1-1)
活动一:小组讨论总结我们生活中有哪些地方使用了计算机网络。
活动二::结合活动一中列举的计算机网络的具体应用实例,总结归纳计算机网络的功能.
总结:计算机网络的应用虽然已经渗透到生活的方方面面,但所有的应用可以归结为三大功能:资源共享、数
据通信和分布处理与分布控制。
(二)计算机网络的组成与定义
活动三:了解学校计算机网络的建设情况。
总结两点:
1、计算机网络组成:
(1)、多台地理上分散的独立计算机系统。
(2)、通信协议。
(3)、传输介质和网络设备。
2、计算机网络是多台地理上分散的独立计算机系统遵循约定的通信协议,通过传输介质和网络设备互相连
接起来,实现数据通信、资源共享的系统。
(四)计算机网络的分类
按覆盖的面积的大小来分:
名称
网络规模大小
局域网 LAN
10 千米以内
城域网 MAN
10 千米到 60 千米以内
广域网 WAN
100 千米以外

试谈简单的网络嗅探器

成都信息工程学院课程设计报告 简单的网络嗅探器 姓名:纪红专业:信息安全班级:信安084班

提交日期:2011-12-13

简单的网络嗅探器 摘要 计算机网络嗅探器是能够窃听计算机程序在网络上发送和接收到的数据,程序实现了对抓取到的本机在网络中的通信数据的协议类型、源地址、目的地址、端口和数据包的大小加以简单的分析,改程序应用C#语言编写,实现了一个简单的网络嗅探功能。其中一个窗体显示主页面,另一个窗体显示详细信息 关键词:网络嗅探器;发送和同意到的数据;协议类型;源地址;目地地址;端口和数据包;分析;C#言语

目录 论文总页数:9页

1 引言 1.1 课题背景 随着社会信息化的不断深入,计算机啊网络差不多渗入到社会的每一个角落,人们已无时无刻离不开网络。专门多人经常上网购物,学习,玩游戏,然而网络上的一些不良信息专门可能阻碍到互联网用户尤其是青青年的身心健康。基于以上的现实问题,我开发了这款网络嗅探器。能够用来实现对计算机程序在网络上发送和接收到的数据的分析。 1.2 研究现状 网络嗅探器不管是在网络安全依旧在黑客攻击方面扮演了专门重要的角色。通过使用网络嗅探器能够把网卡设置于混杂模式,并能够对网络上传输的数据包的捕获和分析。此分析结果可供网络安全分析之用,但如为黑客所利用也能够为其发动进一步的攻击提供有价值的信息。可见,嗅探器实际上是一把双刃剑。尽管网络嗅探器技术被黑客所利用后会对网络构成一定的威胁,但嗅探器本身的危害并不是专门大,要紧是用来为其他黑客软件提供网络情报,真正的攻击要紧是由其它黑客软件来完成的。而在网络安全方面,网络嗅探手段能够有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用有助于网络安全的维护。 1.3 本课题研究的意义 当我们处理自身网络问题的时候,一个信息包嗅探器向我们展示出正在网络上进行的一切活动。因此,借助一定的知识,

(2020年编辑)网络嗅探器的设计与实现

《网络与信息安全》课程设计报告 班级学号:姓名: 题目: 评阅: 成绩: 2011年1月

目录 一、开发背景 1、网络安全现状。 2、开发意义。 二、设计分析 1、实现目标。 2、开发技术简介。 三、详细设计 1、嗅探原理。 2、代码设计。 四、测试运行 五、总结 六、参考文献

摘要 网络嗅探器是作用在网络上的一种监听程序,它是系统管理员的一个得力助手,管理员可以用它来分析网络。例如当网络繁忙时可利用它来查找是哪一段网络繁忙,数据报文是属于哪一种协议,这样可以计算出哪种业务受欢迎。但是当有黑客使用它时,它又变得很可怕。它可以非法获取一些保密性信息,如帐号、密码等,它带来的负面破坏是非常大的。作为从事网络安全技术方面的人员来说,要想有效地利用它、防范它就得深入地学习、分析网络嗅探技术。 1、本设计的基本任务是设计一个嗅探软件,实现对常用网络数据包抓取、分析。 2、软件所要完成对本机在网络中的通信数据,比如协议类型,源、目的地址和端口、数据包 的大小等加以分析的功能。 3、本设计用到的开发工具为Microsoft Visual Studio 2010 开发环境为Windows 7。 4、程序由韩瑞彬同学和我共同完成,本人主要负责主界面的设计和网络数据包的抓取,韩 瑞彬同学负责对数据包的解析设计。 关键字:嗅探器,安全,黑客,数据报文 一、开发背景

1、网络安全现状 随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。Internet 的安全已经成为亟待解决的问题。多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。网络嗅探器就是利用计算机的网络接口截获其他计算机的数据报文的一种工具,而且它与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器捕获的则是真实的网络报文.如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权。当然嗅探器的正当用处主要是网络管理人员分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。 2、开发意义 本次设计只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像Sniffer 或者影音神探那种成熟的嗅探器所拥有的强大功能。作为从事网络技术方面的人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,同时也是对网络安全技术这门课的学以致用,不断提高自我的一种有效途径。 二、设计分析 1、实现目标 (1)实现网络嗅探器的界面。 (2)实现抓取数据包的功能。

计算机网络技术及其应用期末试卷

一、单项选择题 1. 用户资源子网是由( B )组成的。 A、主机、终端控制器、传输链路 B、主机,终端,终端控制器 C、终端、交换机、传输链路 D、通信控制处理机、传输链路 2. 属于集中控制方式的网络拓扑结构是(A ) A、星形结构 B、环形结构 C、总线结构 D、树形结构 3. 中继器的主要作用是(C ) A、连接两个LAN B、方便网络配置 C、延长通讯距离 D、实现信息交换 4. 关于网络体系结构中的分层结构,下列哪一项是正确的( A ) A、分层结构使得网络具有灵活性,易于实现和维护 B、所有的网络体系结构都用想通的层次名称和功能 C、分层结构把多种网络功能组合在同一层中,使用更方便 D、当某一层的具体实现方法发生变化时,必须对相邻层进行修改 5.以下哪个不是数据链路层的功能(D ) A、流量控制 B、差错控制 C、帧同步 D、路由选择 6、关于子网掩码的说法,以下正确的是(A ) A、利用子网掩码可以判断两台主机是否在同一子网中 B、子网掩码代表internet上每台主机的唯一标识 C、子网掩码用于设定网络管理员的密码 D、子网掩码的引入,主要是为了方便记忆 7.介质访问控制MAC是(D )的子层 A、网络层 B、传输层 C、物理层 D、数据链路层 8.在TCP/IP协议簇中,( C )完成物理地址到IP地址的解析 A、IP B、ARP C、RARP D、TCMP 9.在考虑网络设计方案时,以下说法正确的是( C ) A、一个局域网中一定要有专用网络服务器 B、无论什么类型网络,其体系结构必须包含OSI模型中的全部7个层次 C、一个局域网中,可以采用交换机进行网络分段 D、局域网中必须使用路由器 10.国际标准化组织ISO制定的开放系统互联基本参考模型有(D ) A、3层 B、4层 C、5层 D、7层 11.信号传输速率单位一般为(B ) A、b B、b/s C、mhz/s D、mps

网络嗅探器设计

目 录 一、什么是嗅探器 二、嗅探器的作用 三、网络嗅探器原理 四、反嗅探技术 五、网络嗅探器的设计 六、总结: 一、什么是嗅探器 嗅探器,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。简单一点解释:一部电话的窃

听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接收到的数据。 可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探到的数据, 嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。 计算机的嗅探器比起电话窃听器,有他独特的优势: 很多的计算机网络采用的是“共享媒体"。也就是说,你不必中断他的通讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们称这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode) 。 尽管如此,这种“共享” 的技术发展的很快,慢慢转向“交换” 技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。 二、嗅探器的作用 嗅探器是网络的抓包工具,可以对网络中大量数据抓取,从而方便使用者对网络中用户的一些信息进行分析,所以,通常被黑客运用于网络攻击。我们如果也能掌握网络嗅探器的原理和设计,可以将它运用与网络故障检测、网络状况的监视,还可以加强企业信息安全防护。三、网络嗅探器原理 嗅探器是如何工作的?如何窃听网络上的信息? 网络的一个特点就是数据总是在流动中,从一处到另外一处,而互联网是由错综复杂的各种网络交汇而成的,也就是说:当你的数据从网络的一台电脑到另一台电脑的时候,通常会经过大量不同的网络设备,(我们用tracert命令就可以看到这种路径是如何进行的)。如果传输过程中,有人看到了传输中的数据,那么问题就出现了——这就好比给人发了一封邮件,在半路上被人拆开偷看一样,这样说或许还不是很可怕,那要是传送的数据是企业的机密文件那,或是用户的信用卡帐号和密码呢……? 嗅探侦听主要有两种途径,一种是将侦听工具软件放到网络连接的

网络嗅探器的设计实现

- - -. 《网络与信息安全》课程设计报告

2011年1月 目录 一、开发背景 1、网络安全现状。 2、开发意义。 二、设计分析 1、实现目标。 2、开发技术简介。 三、详细设计 1、嗅探原理。 2、代码设计。 四、测试运行 五、总结

六、参考文献 摘要 网络嗅探器是作用在网络上的一种监听程序,它是系统管理员的一个得力助手,管理员可以用它来分析网络。例如当网络繁忙时可利用它来查找是哪一段网络繁忙,数据报文是属于哪一种协议,这样可以计算出哪种业务受欢迎。但是当有黑客使用它时,它又变得很可怕。它可以非法获取一些XX性信息,如XX、密码等,它带来的负面破坏是非常大的。作为从事网络安全技术方面的人员来说,要想有效地利用它、防X它就得深入地学习、分析网络嗅探技术。 1、本设计的基本任务是设计一个嗅探软件,实现对常用网络数据包抓取、分析。 2、软件所要完成对本机在网络中的通信数据,比如协议类型,源、目的地址和端口、数据包 的大小等加以分析的功能。 3、本设计用到的开发工具为Microsoft Visual Studio 2010 开发环境为Windows 7。 4、程序由韩瑞彬同学和我共同完成,本人主要负责主界面的设计和网络数据包的抓取,韩 瑞彬同学负责对数据包的解析设计。 关键字:嗅探器,安全,黑客,数据报文

一、开发背景 1、网络安全现状 随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。Internet 的安全已经成为亟待解决的问题。多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。网络嗅探器就是利用计算机的网络接口截获其他计算机的数据报文的一种工具,而且它与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器捕获的则是真实的网络报文.如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权。当然嗅探器的正当用处主要是网络管理人员分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题

《计算机网络应用技术教程》期中试题

《计算机网络应用技术教程》期中试题 一、填空题(每空1分,共24分,答案写在横线上) 1.按逻辑组成划分,计算机网络是由通信子网和资源子网两部分组成的。 2.开放系统互连参考模型OSI中,共分七个层次,TCP/IP层次模型分为___ 层次,其中最高层为,该层常用的协议有(写出其中两个即可)、。 3.按照网络介质访问协议的不同,计算机网络可以分为:、、令牌总线网。 4.IP地址中,C类地址的网络号长度为位、主机号长度为位。5.网络通信中信号的传输通道称为:信道。 6.信道容量是指信道能够传输信息的最大容量。 7.在IEEE802局域网体系结构中,数据链路层被划分成逻辑链路控制和________介质访问控制___两个子层。 8.IEEE802.3是ethernet 网络的协议标准。 9.局域网MAC层介质访问采用CSMA/CD方法,物理层提供10Mbps与100Mbps速率自动协商功能的局域网称为:。 10.交换式局域网的核心设备是:交换机。 11.常用的有线传输介质有同轴电缆、_______双绞线______和_____光纤________三种。12.数据交换技术可分为电路交换、报文交换和________分组交换_______三种。13.用二进制表示法为11011011 11010010 00000000 00000010的IP地址,若采用点分十进制形式表示为_______________________.0.2_______。 14.网络互连的层次可以分为物理层互连、数据链路层互连、网络层互连和高层互连,网络层的互连设备是路由器。 15.通过域名访问Internet上的主机,域名需要通过通过DNS服务器转换为主机的IP地址。 16.曼彻斯特编码法表示二进制数11001010时波形为。

《网络嗅探器》课程设计报告

《网络与信息安全技术》课程报告 课题名称:网络嗅探器提交报告时间:2010年12月17 日 网络嗅探器 专业 组号指导老师 [摘要]随着网络技术的飞速发展,网络安全问题越来越被人重视。嗅探技术作为网络安全攻防中最基础的技术,既可以用于获取网络中传输的大量敏感信息,也可以用于网络管理。通过获取网络数据包的流向和内容等信息,可以进行网络安全分析和网络威胁应对。因此对网络嗅探器的研究具有重要意义。 本课程设计通过分析网络上常用的嗅探器软件,在了解其功能和原理的基础上,以VC为开发平台,使用Windows环境下的网络数据包捕获开发库WinPcap,按照软件工程的思想进行设计并实现了一个网络嗅探工具。该嗅探工具的总体架构划分为5部分,分别是最底层的数据缓存和数据访问,中间层的数据捕获,协议过滤,协议分析和最顶层的图形画用户界面。 本嗅探器工具完成了数据包捕获及分析,协议过滤的主要功能,实现了对网络协议,源IP 地址,目标IP地址及端口号等信息的显示,使得程序能够比较全面地分析出相关信息以供用户参考决策。 关键词:网络嗅探;WinPcap编程接口;数据包;网络协议;多线程 (中文摘要在150字左右。摘要正文尽量用纯文字叙述。用五号宋体字。姓名与摘要正文之间空二行。关键词与摘要之间不空行。“摘要”这两个字加粗) 关键词:入侵检测系统;感应器;分析器;分布式入侵检测系统模型 Network sniffer Major: software engineering Group Number: 29 [Abstract] With the rapid development of network technology, network security is increasingly being attention. Sniffing network security technology as the most basic offensive and defensive

计算机网络技术与应用教程答案

第一章 按网络拓扑结构,计算机网络可以划分为哪几类?广播通信信道子网的拓扑与点到点通信子网的拓扑. 一个计算机网路由哪三个主要部分组成? 1)若干个主机,它们向各用户提供服务;2)一个通信子网,它由一些专用的结点交换机 和连接这些结点的通信链路所组成;3)一系列的协议,这些协议是为在主机之间或主机和 子网之间的通信而用的。 第二章 2.双绞线、同轴电缆、光缆、无线传输介质各有什么特性?如何选择传输介质的特性主要有传输输率(和带宽有关)、传输距离(和衰减有关)、抗干扰能力以及安装的难易和费用的高低等几项,选择时要根据实际使用场合,综合上述因素进行考虑。如要求传输速率高,可选用电缆;要求价钱便宜,可选用双绞线;要求在不适宜铺设电缆的场合通信,可选用无线传输等。下述的特性比较可以总结出每种传输介质的特点,便于在实际中选择使用。典型的传输速率:光缆100Mbps ,同轴电缆10Mbps ,屏蔽双绞线 16Mbps ,双绞线10Mbps ,无线介质小于10Mbps 。传输距离:光缆几千米,同轴粗缆500 米,同轴细缆185 米,双绞线100 米,无线介质也可达几千米。抗干扰能力:有线介质中光缆抗干扰能力最好,非屏蔽双绞线最差。无线传输介质受外界影响较大,一般抗干扰能力较差。安装:光缆安装最困难,非屏蔽双绞线安装最简单。费用:对有线传输介质,其费用的高低依次为光缆、粗同轴电缆、屏蔽双绞线、细同轴电缆、非屏蔽双绞线。无线传输介质中,卫星传输最昂贵。 4. 物理层的接口有哪几个方面的特性?个包含些什么内容? 1)机械特性,指明接口所用的接线器的形状和尺寸、引线数目和排列、固定和锁定装置2) 电气特性,指明在接口电缆的各条线上出现的电压的范围的某一电 3)功能特性,指明某条线上出现 平的电压表示何意4 )规程特性,说明对于不同功能的各种可能事

sniffer嗅探器基本知识

嗅探器 嗅探器保护网络 嗅探器是一种监视网络数据运行的软件设备,协议分析器既能用于合法网络管理也能用于窃取网络信息。网络运作和维护都可以采用协议分析器:如监视网络流量、分析数据包、监视网络资源利用、执行网络安全操作规则、鉴定分析网络数据以及诊断并修复网络问题等等。非法嗅探器严重威胁网络安全性,这是因为它实质上不能进行探测行为且容易随处插入,所以网络黑客常将它作为攻击武器。 目录 编辑本段简介 嗅探器最初由 Network General 推出,由 Network Associates 所有。最近,Network Associates 决定另开辟一个嗅探器产品单元,该单元组成一家私有企业并重新命名为 Network General,如今嗅探器已成为 Network General 公司的一种特征产品商标,由于专业人士的普遍使用,嗅探器广泛应用于所有能够捕获和分析网络流量的产品。 编辑本段网络技术与设备简介 在讲述Sniffer的概念之前,首先需要讲述局域网设备的一些基本概念。 数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。就是在这个传输和接收的过程中,存在安全方面的问题。 每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址惟一地表示了网络上的机器(这一点与Internet地址系统比较相似)。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。 在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应(换句话说,工作站A不会捕获属于工作站B 的数据,而是简单地忽略这些数据)。如果某个工作站的网络接口处于混杂

网络嗅探器的设计与实现论文总结

目录 1 引言 (1) 1.1 开发背景 (1) 1.2 开发意义 (1) 2 系统分析 (2) 2.1 设计概述 (2) 2.1.1 实现目标 (2) 2.1.2 开发环境 (2) 2.2 开发相关技术简介 (2) 2.2.1 C#语言简介 (2) 2.2.2 嗅探技术简介 (3) 2.2.3 TCP/IP协议 (4) 2.2.4 数据包简介 (6) 2.3 可行性分析 (8) 3 详细设计 (9) 3.1 设计原理 (9) 3.2 功能说明 (12) 3.3 系统实施 (12) 3.4 系统测试 (14) 4 论文总结 (19) 5 参考文献 (20) 6 致谢 (21)

1 引言 1.1 开发背景 随着各种新的网络技术的不断出现、应用和发展,计算机网络的应用越来越广泛,其作用也越来越重要。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。计算机网络安全问题越来越严重,网络破坏所造成的损失越来越大。Internet的安全已经成为亟待解决的问题。多数黑客入侵成功并植入后门后的第一件事就是选择一个合适当前网络的嗅探器,以获得更多的受侵者的信息。嗅探器是一种常用的收集有用数据的方法,可以作为分析网络数据包的设备。网络嗅探器就是利用计算机的网络接口截获其他计算机的数据报文的一种工具,而且它与一般的键盘捕获程序不同。键盘捕获程序捕获在终端上输入的键值,而嗅探器捕获的则是真实的网络报文.如果把网络嗅探器放置于网络节点处,对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法,可以分析各种信息包并描述出网络的结构和使用的机器,由于它接收任何一个在同一网段上传输的数据包,所以也就存在着捕获密码、各种信息、秘密文档等一些没有加密的信息的可能性。这成为黑客们常用的扩大战果的方法,用来夺取其他主机的控制权。当然嗅探器的正当用处主要是网络管理人员分析网络的流量,以便找出所关心的网络中潜在的问题。例如,假设网络的某一段运行得不是很好,报文的发送比较慢,而我们又不知道问题出在什么地方,此时就可以用嗅探器截获网络中的数据包,分析问题的所在。[1] 1.2 开发意义 本次毕业设计是基于C#的网络嗅探器的设计与实现,由于本人能力上的限度,只是对抓取到的本机在网络中的通信数据,比如说协议类型,源、目的地址和端口、数据包的大小等加以分析,而无法做到像Sniffer或者影音神探那种成熟的嗅探器所拥有的强大功能。作为从事网络技术方面的人员来说,要想有效地利用它、防范它,就得深入地学习、分析网络嗅探技术。最为重要的是,对于网络嗅探器的设计与实现,使我对网络通信,数据传输和网络信息安全等有了切身的体会与融入,同时也是对大学四年的学以致用,不断提高自我的一种有效途径。

计算机网络技术与应用知识点大全

1.计算机网络是计算机技术与通信技术紧密结合的产物 2.计算机网络的发展大致分四个阶段:1)以单台机为中心的远程联 机系统,构乘面向终端的计算机网络;2)多个主机互联,各主机相互独立,无主从关系的计算机网络;3)具有统一的网络体系结构,遵循国际标准化协议的计算机网络:4)网络互联与高速网络。 3.逻辑构成:通信子网、资源子网 4.因特网是在原有ARPAnet技术上经过改造而逐步发展起来的,它 对任何计算机开放,只要遵循TCP/IP 的标准并申请到IP地址,就可以通过信道接入Internet。TCP/IP传输控制协议(TCP)/互联网协议(IP) 5.电话、有线电视和数据等都有各自不同的网络(三网合一) 6.计算机网络定义:将处于不同地理位置,并具有独立计算能力的 计算机系统经过传输介质和通信设备相互联接,在网络操作系统和网络通信软件的控制下实现资源共享的计算机的集合。 7.计算机网络由通信子网和资源子网两部分构成(概念上讲) 8.网络软件可分为网络系统软件和网络应用软件 9.分类: a、按传输技术:广播式网络、点一点式网络(星型、树型、网型) b、按分布距离:局域网、广域网、城域网 c、拓扑结构:星型、总线型、环型、树型、网状结构 10.客户机/服务器结构(c/s)

11.计算机网络的性能指标:速率带宽 12.带宽:“高数据率”的同义词,单位是“比特每秒“ 13.总时延=发送时延+传播时延+处理时延+排队时延 (发送时延=数据块长度(比特)/信道带宽(比特/秒) 传播时延=信道长度(米)/信道在信道上的传播速率(米/秒)) 14.误码率=传错位数/传输总位数 15.网络协议:为网络数据交换而制定的规定、约束与标准 三要素:1)语法:用户数据与控制信息的结构和格式。 2)语义:需要发出何种控制信息以及完成的动作和做出的响应。3)时序:对事件实现顺序的详细说明 16.层次 N层向n+1层提供服务,n+1层使用n层提供的服务。 17.层次模型各层的功能 (1)物理层:单位:比特 物理层的作用是在物理介质上传输原始的数据比特流。 (2)数据链路层:单位:帧 相邻网络节点的信息流动 (3)网络层单位:分组 从源节点到目标节点的路由选择问题 (4)传输层单位:报文 第一个端对端,即主机到主机的层次 (5)会话层(6)表示层

巧用嗅探器保障网络稳定运行(图

巧用嗅探器保障网络稳定运行(图) 安全中国 https://www.wendangku.net/doc/f912984055.html,更新时间:2009-04-22 01:15:35 责任编辑:ShellExp 对于网络、系统管理或安全技术人员来说,在对网络进行管理和维护的过程中,总会遇到这样或那样的问题。例如,网络传输性能为什么突然降低?为什么网页打不开,但QQ却能上线?为什么某些主机突然掉线?诸如此类的网络问题一个又一个地不断出现,都需要我们快速有效地去解决,以便能够尽量减少由于网络问题对企业正常业务造成的影响。因此,我们就需要一引起工具来帮助我们快速有效地找出造成上述这些问题的原因。 网络嗅探器就是这样的一种网络工具,通过对局域网所有的网络数据包,或者对进出某台工作站的数据包进行分析,就可以迅速地找到各种网络问题的原因所在,因而也就深受广大网络管理员和安全技术人员的喜爱。 可是,我们也应该知道交换机是通过MAC地址表来决定将数据包转发到哪个端口的。原则上来讲,简单通过物理方式将网络嗅探器接入到交换机端口,然后将嗅探器的网络接口卡设为混杂模式,依然只能捕捉到进出网络嗅探器本身的数据包。这也就是说,在交换机构建的网络环境中,网络嗅探器不使用特殊的方式是不能分析其它主机或整个局域网中的数据包的。但是,现在的企业都是通过交换机来构建局域网,那么,如果我们要想在这样的网络环境中使用网络嗅探器来解决网络问题,就必需考虑如何将网络嗅探器接入到目标位置,才能让网络嗅探器捕捉到网络中某台主机或整个网段的网络流量。 就目前来说,对于在交换机构建的网络环境中使用网络嗅探器,可以通过利用可网管交换机的端口汇聚功能、通过接入集成器或Cable TAP接线盒及选择具有特殊功能的网络嗅探软件这3种方法来进行。这3种可行的方式分别针对不同的交换机应用环境来使用的,本文下面就针对目前主流的几种交换机网络环境,来详细说明这3种接入方式的具体应用。 一、通过可网管交换机端口汇聚功能来达到目的

网络嗅探器的设计与实现

{ 计算机网络课程设计 题目网络嗅探器的设计与实现] 系 (部) 姓名 学号 指导教师 # 2015年7月18日

计算机网络课程设计任务书

网络嗅探器的设计与实现 摘要:网络嗅探器是对网络中的数据帧进行捕获的一种被动监听手段,是一种常用的收集有用数据的方法。本设计是关于网络嗅探器的设计与实现,其功能包括实现网络层抓包,对获得包的源和目的地址、端口、协议等进行分析和实现简单的包嗅探器功能。 关键字:网络嗅探器;数据包捕获; 套接字 引言 由于网络技术的发展,计算机网络的应用越来越广泛,其作用也越来越重要。计算机网络安全问题更加严重,网络破坏所造成的损失越来越大。但是由于计算机系统中软硬件的脆弱性和计算机网络的脆弱性以及地理分布的位置、自然环境、自然破坏以及人为因素的影响,不仅增加了信息存储、处理的风险,也给信息传送带来了新的问题。 嗅探器是一种常用的收集有用数据的方法,可以作为网络数据包的设备。嗅探器是通过对网卡的编程来实现网络通讯的,对网卡的编程是使用通常的套接字(socket)方式来进行。通常的套接字程序只能响应与自己硬件地址相匹配的或是以广播形式发出的数据帧,对于其他形式的数据帧比如已到达网络接口但却不是发给此地址的数据帧,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取到达的数据包。而网络嗅探器的目的恰恰在于从网卡接收所有经过它的数据包,这些数据包即可以是发给它的也可以是发往别处的。 1基本概念 1.1嗅探器 每一个在局域网(LAN)上的工作站都有其硬件地址,这些地址唯一地表示了网络上的机器。当用户发送一个数据包时,这些数据包就会发送到LAN上所有可用的机器。在一般情况下,网络上所有的机器都可以“听”到通过的流量,但对不属于自己的数据包则不予响应。嗅探器工作在网络的底层,在网络上监听数据包来获取敏感信息。从原理上来说,在一个实际的系统中,数据的收发是由网卡来完成的,网卡接收到传输来的数据,其内的单片程序接收数据帧的目的MAC地址,根据计算机上的网卡驱动程序设置的接收模式判断该不该接收,认为该接收就接收后产生中断信号通知CPU,认为不该接收就丢掉不管,所以不该接收的数据网卡就截断了,计算机根本就不知道。对于网卡来说一般有四种接收模式: a)广播方式:该模式下的网卡能够接收网络中的广播信息。 b)组播方式:设置在该模式下的网卡能够接收组播数据。 c)直接方式:在这种模式下,只有目的网卡才能接收该数据。

网络嗅探器源代码

#include /*windows socketμ?í·???t£??μí3?¨ò?μ?*/ #include #include #include #include #pragma comment(lib,"ws2_32.lib") /*á′?óAPI?à1?á?μ?Ws2_32.lib?2ì??a*/ #define MAX_HOSTNAME_LAN 255 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define MAX_ADDR_LEN 16 struct ipheader { unsigned char ip_hl:4; /*header length(±¨í·3¤?è£?*/ unsigned char ip_v:4; /*version(°?±?)*/ unsigned char ip_tos; /*type os service·t??ààDí*/ unsigned short int ip_len; /*total length (×ü3¤?è)*/ unsigned short int ip_id; /*identification (±êê?·?)*/ unsigned short int ip_off; /*fragment offset field(??ò???óò)*/ unsigned char ip_ttl; /*time to live (éú′?ê±??)*/ unsigned char ip_p; /*protocol(D-òé)*/ unsigned short int ip_sum; /*checksum(D£?éoí)*/ unsigned int ip_src; /*source address(?′μ??·)*/ unsigned int ip_dst; /*destination address(??μ?μ??·)*/ }; /* total ip header length: 20 bytes (=160 bits) */ typedef struct tcpheader { unsigned short int sport; /*source port (?′???úo?)*/ unsigned short int dport; /*destination port(??μ????úo?)*/ unsigned int th_seq; /*sequence number(°üμ?DòáDo?)*/ unsigned int th_ack; /*acknowledgement number(è·è?ó|′eo?)*/ unsigned char th_x:4; /*unused(?′ê1ó?)*/ unsigned char th_off:4; /*data offset(êy?Y??ò?á?)*/ unsigned char Flags; /*±ê??è?*/ unsigned short int th_win; /*windows(′°?ú)*/ unsigned short int th_sum; /*checksum(D£?éoí)*/ unsigned short int th_urp; /*urgent pointer(???±????)*/ }TCP_HDR;

简单的网络嗅探器解析

计算机科学与技术学院课程设计报告 2012— 2013学年第二学期 课程名称计算机网络 设计题目简单的网络嗅探器 姓名 学号 专业班级 指导教师 2013年 6 月17日

目录 摘要 (2) 关键词 (2) 1 网络嗅探概述 (3) 1.1 网络嗅探的简介 (3) 1.2 相关的网络知识 (3) 1.2.1 交换基础 (3) 1.2.2 路由基础 (4) 1.2.3网卡的工作原理 (5) 1.3 基于网卡混杂模式的嗅探原理 (6) 1.4 基于arp欺骗的嗅探原理 (6) 1.5 网络嗅探的安全威胁 (7) 1.6 网络嗅探的防范 (8) 1.6.1 检测嗅探器 (8) 1.6.2 将数据隐藏,使嗅探器无法发现 (8) 2 基于原始套接字的嗅探程序 (9) 2.1 嗅探实现 (9) 2.2 嗅探运行结果 (26) 2.2.1 嗅探普通数据包 (26) 2.2.2 嗅探HTTP敏感信息 (26) 2.2.3 嗅探FTP敏感信息 (27) 小结 (29) 参考资料 (29)

网络嗅探器的设计与实现 Design and implementation of network sniffer 摘要 近年来,伴随着网络技术的发展和网络应用的普及,互联网已经成为信息资源的重要载体和主要传布途径,从而使得网络的安全性和可靠性越来越受到关注和重视。因此,对于能够很好的分析与诊断网络,测试网络性能与安全性的工具软件的需求越发迫切。 网络嗅探器作为分析与诊断网络,测试网络性能与安全性的工具软件之一,具有两面性。攻击者可以通过使用它来监听网络中数据,达到非法截取信息的目的,网络管理者可以通过使用嗅探器捕获网络中传输的数据包并对其进行分析,分析结果可供网络安全分析之用。 本文对网络嗅探技术进行了简要分析,研究了网络数据包的捕获机制,如winpcap、原始套接字。文中首先分析了嗅探的原理和危害,并介绍了几种常见的嗅探器,然后研究了入侵检测系统中使用的包捕获技术。本文利用原始套接字在windows平台下实现了一个网络嗅探器程序,完成了对数据包进行解包、分析数据包的功能。 关键词:网络嗅探器数据包捕获数据包分析原始套接字网络安全C语言VC++6.0

相关文档
相关文档 最新文档