首页 | 商机| 技术 | 产品 | 企业 | 资讯 | 展会 | 政策 | 认证 | 论坛 | 建站 | 会员中心
 当前位置:首页 >> 安防资讯 >> 技术工程 >> 技术交流
 
学习Linux下的网络监听技术 保卫您电脑二

http://www.secu.com.cn  中国安防产品网  时间:2006-9-25 8:19:00  生意人使用生意宝,生意越来越旺盛!
     监听的协议分析
    
    我们的研究从监听程序的编写开始,用Linux C语言设计实现。
    
    以太网上数据帧的监听剖析
    
    以太网上的数据帧主要涉及Tcp/ip协议,针对以下几个协议的分析:IP,ARP,RARP,IPX,其中重点在于ip和 arp协议,这两个协议是多数网络协议的基础,因此把他们研究彻底,就对大多数的协议的原理和特性比较清楚了。 由于各种协议的数据帧个不相同,所以涉及很多的数据帧头格式分析,接下来将一一描述。
    
    在linux 下监听网络,应先设置网卡状态,使其处于杂混模式以便监听网络上的所有数据帧。然后选择用Linux socket 来截取数据帧,通过设置socket() 函数参数值,可以使socket截取未处理的网络数据帧,关键是函数的参数设置,下面就是有关的程序部分:
    
    
     if ( ( fd=socket (af_inet, sock_packet,htons(0x0003)))<0)
     {perror (“can get sock_packet socket
     ”);
     exit(0);
     }
    
    AF_INET=2 表示 internet ip protocol
    
    SOCK_PACKET=10 表示 截取数据帧的层次在物理层,既不作处理。
    
    Htons(0x0003)表示 截取的数据帧的类型为不确定,既接受所有的包。
    
    总的设定就是网卡上截取所有的数据帧。这样就可以截取底层数据帧,因为返回的将是一个指向数据的指针,为了分析方便,我设置了一个基本的数据帧头结构。
    
     Struct etherpacket
     {struct ethhdr eth;
     struct iphdr ip;
     struct tcphdr tcp;
     char buff[8192];
     } ep;
    
    
    将返回的指针赋值给指向数据帧头结构的指针,然后对其进行分析。以下是有关协议的报头:ethhdr 这是以太网数据帧的mac报头:
    
     --------------------------------------------------------
    
     |48bit 目的物理地址 | 48bit 源物理地址 | 16bit 协议地址|
    
     --------------------------------------------------------
    
    相应的数据结构如下
    
    
     struct ethhdr
     {
     unsigned char h_dest[ETH_ALEN];
     unsigned char h_source[ETH_ALEN];
     unsigned short h_proto;
     }
    
    
    其中h_dest[6]是48位的目标地址的网卡物理地址,h_source [6] 是48位的源地址的物理网卡地址。H_proto是16位的以太网协议,其中主要有0x0800 ip,0x8035.X25,0x8137 ipx,0x8863-0x8864 pppoe(这是Linux的 ppp),0x0600 ether _loop_back ,0x0200-0x0201 pup等。Iphdr 这是ip协议的报头:
    
    由此可以定义其结构如下:
    
     struct iphdr{#elif defined (_LITTLE_ENDIAN_BITFIELD) _u8 version :4,#elif defined (_BIG_ENDIAN_BITFIELD) _u8 version:4,ihl:4;
    #else #error "Please fix"#endif_u8 tos;_16 tot_len;
    _u16 id;_u16 frag_off;_u8 ttl;_u8 protocol;_u16 check;
    _u32 saddr;_u32 daddr;};
    
    
    这是Linux 的ip协议报头,针对版本的不同它可以有不同的定义,我们国内一般用BIG的定义,其中version 是ip的版本,protocol是ip的协议分类主要有0x06 tcp.0x11 udp,0x01 icmp,0x02 igmp等,saddr是32位的源ip地址,daddr是32位的目标ip地址。
    
    
== 版权问题 == 来源:赛迪网  编缉:陈超
评论】【 】【打印】【关闭
 
相关资讯
·学习Linux下的网络监听技术 保卫您电脑五 [2006-9-25 8:22:00]
·
学习Linux下的网络监听技术 保卫您电脑四 [2006-9-25 8:21:00]
·
学习Linux下的网络监听技术 保卫您电脑三 [2006-9-25 8:20:00]
·
学习Linux下的网络监听技术 保卫您电脑一 [2006-9-25 8:18:00]
 
 资讯搜索
 
关键字:
栏 目:
推荐资讯
·
“南京电子技术研究所数字化智能化园区建设”招标项目资格预审公告
·
用高速球构建平安城市的智慧双眼
·
基于网络视频的无人值守机房应用技术浅析
·
网络视频监控系统在油田中的应用
·
节省投资:广播音箱与多媒体音箱共用研究
·
焦距灵活调整-----红外一体机的革命
·
实时动态尽收眼底 监控平台轻松构建
·
无线 GSM家居防盗报警系统的组成及性能I
·
豪威安防掀起六路“红色风暴”
·
监狱一卡通系统的安全隐患及解决办法
最新资讯
·
吉林高速公路缴费联名卡兼容银联卡功能
·
超速行驶酒后驾驶仍是交通事故主要原因
·
平安广州建设 火车站客运监控逐步升级
·
“电子眼”监控工地 将在重点工程推广
·
视频监控助力赤峰警方破获特大诈骗案件
 
 
 
关于本站 | 会员服务 | 站点导航 | 法律声明 | 诚聘英才 | 合作伙伴 | 广告服务 | 联系我们 | 帮助信息
版权所有 中国安防产品网 © 2003-2006 客户服务 电话:0579-3510888  3510568 传真:0579-3187705
Copyright (C) 2003 - 2006 secu.com.cn All Rights Reserved