赞助连接

赞助连接

阅 读 文 章

ARP地址解析协议详解及其漏洞分析

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(xie_minix) | 时间:2007-05-27 | 浏览:人次 ]


static int trueip=0; /*是否使用冒充IP发送ARP请求*/
static u_char ithardaddr[6];/*要冒充机器的硬件地址,在转移到临时缓冲之前由锁来控制其写*/
static int fromsubr=100;      /*实验用,看看本机发出ARP请求是那个函数*/
/*end-------------------------*/

#define SIN(s) ((struct sockaddr_in *)s) /*强制转化成sockaddr_in结构,即Internet地址结构,其中s一般是sockaddr结构*/
#define SDL(s) ((struct sockaddr_dl *)s)/*强制转化成sockaddr_dl结构,即ethernet地址结构,其中s一般是sockaddr结构*/

SYSCTL_DECL(_net_link_ether);/*用于sysctl 用法如下:sysctl net.link.ether....=XXX, 
 SYSCTL_DECL是申明下面的SYSCTL_NODE将继承的节点*/
SYSCTL_NODE(_net_link_ether, PF_INET, inet, CTLFLAG_RW, 0, "");/**/
/*
hack:
static int hackarp=0;
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, ctrlhack, CTLFLAG_RW,&hackarp, 0, "");
/*这方便你在用户区可控制核心变量,用法如下:sysctl net.link.ether.inet.ctlhackarp=1  那么变量hackarp就为1了.
下面的程序会根据hack的真假判断来进行欺骗

*/
/* 一些记时器的值 */
static int arpt_prune = (5*60*1); /* 每5分钟过一遍列表,这个变量是由计时器使用,看看有没有超时ARP结点,有就删除他 */
static int arpt_keep = (20*60); /* 一旦解析了, 保持 20 分钟 */
static int arpt_down = 20; /* 一旦公布了down, 20秒不发送 */
/*对以上3个变量的控制*/
/*使用方法:sysctl net.link.ether.inet.prune_intvl=180  也就是把ARP定时期改为了每3分钟查一次ARP结点*/
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, prune_intvl, CTLFLAG_RW,
   &arpt_prune, 0, "");
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, max_age, CTLFLAG_RW, 
   &arpt_keep, 0, "");
SYSCTL_INT(_net_link_ether_inet, OID_AUTO, host_down_time, CTLFLAG_RW,
   &arpt_down, 0, "");

#define rt_expire rt_rmx.rmx_expire /*这里是放当前时间的,如果rtinit路由初始程序加入一IP路由,那么把当前时间+20*60秒放进去,*/
/*arptimer函数会和当前时间(当前时间由时钟每秒加1)比较,如果相等或比当前时间小,即到了或*/
/*该ARP结点时间过了20分钟.即超时*/
/*这里其实是真正的ARP列表*/
struct llinfo_arp {
LIST_ENTRY(llinfo_arp) la_le;/*单向列表宏,说明该结构是一单向的列表,尾巴为0*/
struct rtentry *la_rt; /*和该结点相关的路由*/
struct mbuf *la_hold; /* 由于该地址正等待解释,所以要发送的数据(mbuf链头)指针暂时存放 */
long la_asked; /* 为该地址发送了一共几个ARP请求,如果到了5个,那么暂时停止20秒*/
#define la_timer la_rt->;rt_rmx.rmx_expire
};

static LIST_HEAD(, llinfo_arp) llinfo_arp;/*全局ARP链表及表头,从这开始就可以遍历整个ARP结点*/

struct ifqueue arpintrq = {0, 0, 0, 50};/*ARP请求队列,在我的"ethernet网络代码详解"中有说明,因为我们要hack,所以要改大一些,100*/
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 及其 漏洞 分析 详解 协议 地址 解析 ARP IP if ea- 路由

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.