Linux下以太网网络监听技术研究
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协议的报头,定义其结构如下:
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
{
_
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解