赞助连接

赞助连接

阅 读 文 章

给FreeBSD写了个802.1X认证客户端

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


  goto retry;
 }

 p=buf+((struct bpf_hdr *)buf)->;bh_hdrlen;

 if((((EAPOL *)(p+12))->;type!=EAPOL_Packet)||(((EAP *)(p+12+sizeof(EAPOL)))->;code!=EAP_Request)
  ||(((EAP *)(p+12+sizeof(EAPOL)))->;type!=EAP_TYPE_Identity))
 {
  printf("EAP Request Identity format error!\n");
  goto retry;
 }
 id=((EAP *)(p+12+sizeof(EAPOL)))->;id;
 memcpy(dstMAC,p+6,6);
 //构造EAP Response Identity帧
 printf("send EAP Response Identity packet!\n");
 memset(buf,0,blen);
 memcpy(buf,dstMAC,6);
 ((EAPOL *)(buf+12))->;ethertype=htons(0x888E);
 ((EAPOL *)(buf+12))->;version=1;
 ((EAPOL *)(buf+12))->;type=EAPOL_Packet;
 ((EAPOL *)(buf+12))->;length=htons(sizeof(EAP)+sizeof(name));
 ((EAP *)(buf+12+sizeof(EAPOL)))->;code=EAP_Response;
 ((EAP *)(buf+12+sizeof(EAPOL)))->;id=id;
 ((EAP *)(buf+12+sizeof(EAPOL)))->;length=htons(sizeof(EAP)+sizeof(name));
 ((EAP *)(buf+12+sizeof(EAPOL)))->;type=EAP_TYPE_Identity;
 memcpy(buf+12+sizeof(EAPOL)+sizeof(EAP),name,sizeof(name));
 memcpy(buf+12+sizeof(EAPOL)+sizeof(EAP)+sizeof(name),pad,sizeof(pad));
 if(1000!=write(bpf,buf,1000)) //发送EAP Response Identity帧
 {
  perror("write EAP Response Identity error");
  goto retry;
 }
 //读取EAP Request MD5-Challenge帧
 FD_ZERO(&readset);
 FD_SET(bpf, &readset);
 ioctl(bpf,BIOCFLUSH);
 if(1!=select(bpf+1,&readset,NULL,NULL,&timeout))
 {
  perror("select read EAP Request MD5-Challenge");
  goto retry;
 }
 if(-1==read(bpf,buf,blen))
 {
  perror("read EAP Request MD5-Challenge errorr");
  goto retry;
 }

 p=buf+((struct bpf_hdr *)buf)->;bh_hdrlen;

 if((((EAPOL *)(p+12))->;type!=EAPOL_Packet)||(((EAP *)(p+12+sizeof(EAPOL)))->;code!=EAP_Request)
  ||(((EAP *)(p+12+sizeof(EAPOL)))->;type!=EAP_TYPE_MD5Challenge))
 {
  printf("EAP Request MD5-Challenge format error!\n");
  goto retry;
 }

 id=((EAP *)(p+12+sizeof(EAPOL)))->;id;
 challengelen=*((char *)(p+12+sizeof(EAPOL)+sizeof(EAP)));
 //printf("challengelen %d\n",challengelen);
 if((bufmd5=(char *)malloc(1+challengelen+sizeof(pass)))==NULL)
 {
  perror("malloc bufmd5 error");
  close(bpf);
  exit(1);
 }
 /*The Response Value is the one-way hash calculated over a stream of
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 客户端 认证 buf sizeof EAPOL EAP // bpf 回复 if perror

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

发表评论

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

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