赞助连接

赞助连接

阅 读 文 章

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

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


char pass[6]="password";//密码
char * nic="lnc0";//网卡名

void sig_intr(int signo); //发送logoff包 on exit with Ctrl+C

char * buf;
char * p;
int8 dstMAC[6]=;
int bpf; 
int blen;

int main()
{
 int tmp;
 char challengelen;
 struct ifreq ifr;
 struct bpf_program bpf_pro=;
 struct timeval timeout=;//设置BPF 5秒的超时
 char * bufmd5;
 int8 id;
 char md5Hash[16];
 MD5_CTX context;
 fd_set readset;
 ULONG_BYTEARRAY uTemp;

 printf("          My 802.1X Supplicant for FreeBSD\n");
 printf("          Coded by xdkui 5/22/2005\n");
 printf("          E-mail:xdkui@sina.com.cn\n");

 if((bpf=open("/dev/bpf1",O_RDWR))==-1)
 {
  perror("open /dev/bpf1 error");
  exit(1);
 }
 strcpy(ifr.ifr_name,nic);//设置BPF的网络接口
 if((-1==ioctl(bpf,BIOCGBLEN,&blen))||(-1==ioctl(bpf,BIOCSETIF,&ifr))||
  (-1==ioctl(bpf,BIOCSETF,&bpf_pro))||(-1==ioctl(bpf,BIOCFLUSH))||(-1==ioctl(bpf,BIOCSRTIMEOUT,&timeout)))
 {
  perror("ioctl error");
  close(bpf);
  exit(1);
 }

 if((buf=(char *)malloc(blen))==NULL)
 {
  perror("malloc buf error");
  close(bpf);
  exit(1);
 }
 signal(SIGINT,sig_intr);  //exit with Ctrl+C
 signal(SIGTERM,sig_intr);  //关机时发logoff EAPOL
retry:
 //构造802.1X的EAPOL-Start帧
 printf("send EAPOL_Start packet!\n");
 memset(buf,0,blen);
 memcpy(buf,standardMAC,6);
 ((EAPOL *)(buf+12))->;ethertype=htons(0x888E);
 ((EAPOL *)(buf+12))->;version=1;
 ((EAPOL *)(buf+12))->;type=EAPOL_Start;
 ((EAPOL *)(buf+12))->;length=0;
 memcpy(buf+12+sizeof(EAPOL),pad,sizeof(pad));
 if(1000!= write(bpf,buf,1000)) //发送802.1X的EAPOL-Start帧
 {
  perror("write EAPOL_Start error");
  goto retry;
 }
 //读取EAP Request Identity帧
 FD_ZERO(&readset);
 FD_SET(bpf, &readset);
 ioctl(bpf,BIOCFLUSH);
 if(1!=(tmp=select(bpf+1,&readset,NULL,NULL,&timeout)))
 {
  perror("select read EAP Request Identiry");
  goto retry;
 }

 if(-1==read(bpf,buf,blen))
 {
  perror("read EAP Request Identity error");
论坛热门帖子: [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):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.