您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

Linux下以太网网络监听技术研究

添加时间:2010-11-24  添加: admin 
0 引言

  Linux是用户可以免费获得的面向网络的操作系统由于能够自由传播和源代码开放,越来越多的程序员热衷于Linux下的网络应用程序开发。目前,大多数内部网络都接入了Internet,对网络的安全管理非常重要。网络监听可以帮助网络管理员检查网络流量、网络协议分析和故障检测,同时其他网络用户也可以利用网络监听程序非法窃取重要数据,截取用户口令。有必要分析Linux下的数据监听技术。

  1 网络监听的原理

  Ethernet协议的工炸仿式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,只有与数据包中目标地址一致的那台主机才能接收到信息包。但是当主机工作在监听模式下,不管数据包中的目标物理地址是什么,主机都将可以接收到。

  当数字信号到达一台主机的网络接口时,正常状态下网络接口对读人数据祯进行检查。如果数据祯中携带的物理地址是自己的或者物理地址是广播地址.那么就会将数据祯交给IP层软件,对于每个到达网络接口的数据祯都要进行这个过程的.但是当主机工作在监听模式下的话,所有的数据祯都将被交给上层协议软件处理。

  Linux下的网络监听技术主要有两要点:

  (1)如何尽可能完整的截取网络上的数据帧因为以太网上每时每刻都可能有信息传递,且据以太网的规模不同网络上的信息量变化也很大,所以截取数据帧不仅要保证数据帧的完整,而且还要考虑到如何才能减少漏截取数据帧。

  (2)对截取的数据帧的过滤分析

  将截取的数据帧翻译为我们能使用的数据,监听才算成功。

  2 以太网数据帧的监听和过滤分析的设计

  以太网上的数据帧主要涉及TCP/IP协议,主要是针对以下几个协议的分析IP,ARP,RARP,ICMP,IGMP,其中重点在于IP和ARP协议,这两个协议是多数网络协议的基础.由于各种协议的数据帧不扣同,所以涉及各协议数据帧头格式分析,下文将一一描述。

  在Linux下监听网络,应先设置网卡状态,使其处于杂混模式以便监听网络上的所有数据帧。然后选择用Linuxsocket来截取数据帧,通过设置socket()函数参数值,可以使socket截取未处理的网络数据祯.关键是函数的参数设里,有关的程序部分如下:

  if((fd=socket (AF_INET. SOCK_ PACKET.htons

  

  表示截取数据帧的层次在物理层,即不作处理;Htons(0x0003)表示截取的数据帧的类型为不确定,即接受所有的包。

  总的设定就是网卡上截取所有的数据帧,这样就可以截取底层数据帧,因为返回的将是一个指向数据的指针.为了分析方便,本文设置了一个基本的数据帧头结构,程序如下:

  

  其中,ar_hrd是硬件地址的格式:ar_pro是协议地址的格式;ar_hln是硬件地址的长度;ar_ln是协议地址的长度;ar_op是arp协议的分类:0x001是arp echo:Ox0002是arpreply。接下来的分别是源地址的物理地址、源IP地址、目标地址的物理地址、目标IP地址。

  Igmphdr是IP协议的icmp协议的报头,定义其结构如下:

  

  

 Linux的IP协议报头,针对版本的不同它可以有不同的定义,我们国内一般用BIG的定义。其中version是IP的版本;protocol是IP的协议分类,主要有Ox06 tcp.Oxll udp、Ox01 icmp,Ox02 ignrp等;saddr是32位的源IP地址,daddr是32位的目标IP地址。

  arphdr是arp协议的报头,定义其结构如下:

  

  u_intl6_t_unused:

  u_intI6_t mtu:

  }frag:

  )un:

  };

  Linux下的TP协议中的icmp的协议,这里主要是前两项参数,其中type是icmp协议的类型,而code则是对type类型的再分析.如:type 0x03是表示。nsearchable,这时code的不同表示了不同的unsearchable:Ox00表示网络不可寻:0x01表示主机不可寻;0x02表示协议不可寻;0x03表示端口不可寻;0x05表示源路由失败;0x06表示网络不可知;0x07表示主机不可知。

  Igmphdr是IP协议的igmp协议报头,定义其结构如下:

  struct igmhdr

  {

  _

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站