Chinaunix

标题: libipq捕获数据包然后修改在发送出去出现问题 [打印本页]

作者: jajaa    时间: 2009-07-12 10:51
标题: libipq捕获数据包然后修改在发送出去出现问题
利用iptables 的一些命令,过程如下:
#modprobe iptable-filter
#modprobe ip_queue
#iptables –A forward –p tcp –j QUEUE



先说一下,我的目的是捕获数据包后修改一些数据包的内容,然后重新放回去,但是在实际的项目中用tcpdump发现包还是原样的发出去了,好像我没有做这个改数据包的操作,
请教一下这个现象的原因和如何来解决这个问题,谢谢了
除了校验和,还有其他的原因么?
启动应用程序,贴一段代码如下:


  1. ipq_packet_msg_t *m;  
  2.   u_int8_t  length;   
  3. int count;
  4. m=getPacket(&status);//获得数据包,我也做了次封装,
  5. length==m->data_len;
  6. attr = (unsigned char*)(m->payload +48);
  7. count=length-48;
  8. while(count>0)
  9. {
  10. if (*attr== 8)
  11. {
  12. *attr=0;
  13. }
  14. attr++;
  15. count--;
  16. }
  17. int ret=setResult(m,1,errbuf);//将数据包重新注入内核,1表示NF_ACCEPT,我已经做了封装。

复制代码

[ 本帖最后由 jajaa 于 2009-7-12 10:55 编辑 ]
作者: emmoblin    时间: 2009-07-12 21:35
你的程序是否已经跟踪到了发包处?
作者: jajaa    时间: 2009-07-12 23:18
标题: 回复 #2 emmoblin 的帖子
请问什么意思?
A 发送数据包到C,经过B,B有两块网卡,然后B上跑了这个程序,包是可以抓到的,但是发现我修改这个数据包后,C仍然能收到,但是受到的数据包并没有任何改变,好像B的操作没有一样。。。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2