免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2133 | 回复: 5
打印 上一主题 下一主题

请问这种raw socket应该如何建 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-28 23:26 |只看该作者 |倒序浏览
我想收到mac地址为本机地址,但是ip目的地址不是本机地址的数据包(进行arp欺骗得到的回包)
链路层建socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))是肯定能收到的,但是不想分析那么多包
如果建一个socket(AF_INET,SOCK_RAW,IPPROTO_TCP),那么由于ip地址和本机不匹配,收不到要求的包.请教各位,有什么办法把这个限制去掉么?

论坛徽章:
0
2 [报告]
发表于 2006-12-29 09:03 |只看该作者
网卡设置混为杂模式
手动:ifconfig eth0 promisc
程序:

  1. /* Set a certain interface flag. */
  2. static int
  3. set_flag(char *ifname, short flag)
  4. {
  5.   struct ifreq ifr;

  6.   strcpy(ifr.ifr_name, ifname);
  7.   if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) return(-1);
  8.   ifr.ifr_flags |= flag;
  9.   if (ioctl(skfd, SIOCSIFFLAGS, &ifr) < 0) {
  10.         fprintf(stderr, "SIOCSIFFLAGS: %s\n", strerror(errno));
  11.         return(-1);
  12.   }
  13.   return(0);
  14. }
  15. struct ifreq ifr;
  16. strncpy(ethreq.ifr_name, "eth0", IFNAMSIZ);
  17. set_flag(ifr.ifr_name, IFF_PROMISC);
复制代码

论坛徽章:
0
3 [报告]
发表于 2006-12-29 09:54 |只看该作者
多谢,这方法之前用过了,不行,又试了一下,还是收不到,我也纳闷为什么不行

论坛徽章:
0
4 [报告]
发表于 2006-12-29 19:03 |只看该作者
原帖由 feasword 于 2006-12-29 09:54 发表
多谢,这方法之前用过了,不行,又试了一下,还是收不到,我也纳闷为什么不行

不行吗?还是你在使用的时候除了差错,不要轻易做结论,还是好好查查代码是不是有问题

论坛徽章:
0
5 [报告]
发表于 2006-12-30 04:07 |只看该作者
ifconfig eth0 promisc混杂模式的定义,是让操作系统底层能够让目标mac地址不是本机mac地址的数据包能够进入到数据层处理。
而楼主的意思是要把目标ip地址不是本机地址的数据包进入到ip层处理。

论坛徽章:
0
6 [报告]
发表于 2006-12-30 12:51 |只看该作者
,理解错误...多谢纠正

[ 本帖最后由 duanjigang 于 2006-12-30 12:55 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP