Chinaunix
标题:
ip_finish_output(mc); //ip_finish_output具体作用?不查看路由器表直接将mc发出去?
[打印本页]
作者:
lujian19861986
时间:
2012-08-07 17:48
标题:
ip_finish_output(mc); //ip_finish_output具体作用?不查看路由器表直接将mc发出去?
本帖最后由 lujian19861986 于 2012-12-20 09:11 编辑
//为了实现实现:内网第一次访问
www.baidu.com
时,复制HTTP GET请求包,并篡改payload为HTTP响应包,HTTP头部信息或者html代码做一个重定向
//输入:pskb为原包,lanip为eth0的IP
//输出:成功篡改GET发送http响应包返回0
int ipct_output_http_response(const struct sk_buff **pskb, unsigned int lanip)
{
xxx
return 0;
}
作者:
lujian19861986
时间:
2012-08-07 17:52
跪求大牛讲解以上代码作用, 以上函数在ip_conntrack_in()中调用,每一个session建立前,都进入该函数,所以识别HTTP GET请求包后,想复制并篡改HTTP GET请求包
作者:
lujian19861986
时间:
2012-08-07 18:00
问题1:
if( __ip_route_output_key(&rt, &fl) ) //请问具体作用是?查看路由表信息?
问题2:
//new_tcph->check会在ip_finish_output重新校验,设置校验和?
//new_tcph->check = csum_tcpudp_magic(new_iph->saddr, new_iph->daddr, datalen, IPPROTO_TCP,csum_partial((char *)new_tcph,datalen,0));
问题3:
ip_finish_output(mc); //ip_finish_output具体作用?不查看路由器表直接将mc发出去?mc这个申请空间会不会释放?
作者:
send_linux
时间:
2012-08-07 21:20
这个帖子哪里@我了啊?
作者:
Godbach
时间:
2012-08-07 21:21
回复
1#
lujian19861986
那你发个劫持 GET 之后,发个 HTTP 重定向多好啊
作者:
platinum
时间:
2012-08-08 06:50
Godbach 发表于 2012-08-07 21:21
回复 1# lujian19861986
那你发个劫持 GET 之后,发个 HTTP 重定向多好啊
正解
作者:
lujian19861986
时间:
2012-08-08 12:25
回复
5#
Godbach
劫持到GET包后,你是说篡改为HTTP头,加栏位
Location: http://192.168.1.1/eboard.htm
复制代码
,是吗?我看了电信的包是这样的。
但是用javascript重定向也是可以的,
document.location.href="http://192.168.1.1/eboard.htm"
复制代码
作者:
lujian19861986
时间:
2012-08-08 12:35
本帖最后由 lujian19861986 于 2012-08-08 12:36 编辑
回复
5#
Godbach
问题1:
if( __ip_route_output_key(&rt, &fl) )
复制代码
请问具体作用是?查看路由表信息?
问题2:
new_tcph->check会在ip_finish_output重新校验,设置校验和?跑了ip_finish_output后new_tcph->check会重新被赋值
new_tcph->check = csum_tcpudp_magic(new_iph->saddr, new_iph->daddr, datalen, IPPROTO_TCP,csum_partial((char *)new_tcph,datalen,0));
复制代码
return NF_HOOK_COND(NFPROTO_IPV4, NF_INET_POST_ROUTING, skb, NULL, dev,
ip_finish_output,
!(IPCB(skb)->flags & IPSKB_REROUTED));
复制代码
ip_finish_output函数,hook在NF_INET_POST_ROUTING,所以包是要离开路由器,从eth0发出去,直接回给内网PC了。
对ip_finish_output(mc)具体作用是这样吧。不查看路由器表直接将mc发出去?mc这个申请空间应该是会释放吧?
作者:
lujian19861986
时间:
2012-08-11 14:48
本帖最后由 lujian19861986 于 2012-09-11 15:49 编辑
回复
6#
platinum
作者:
Godbach
时间:
2012-08-11 23:36
回复
8#
lujian19861986
数据包经过 LOCALOUT 之后是需要查路由,然后才会是数据包走到 POSTROUTING 的。
作者:
lujian19861986
时间:
2012-08-14 17:43
本帖最后由 lujian19861986 于 2012-08-14 17:46 编辑
回复
10#
Godbach
感谢,我问的问题有空的时候麻烦再看看。
我觉得
mc->dst = &rt->u.dst;//指定了方向
mc->dev = mc->dst->dev;//指定了包由:网卡 eth0发送
据说ip_finish_output(mc);是不需要经过路由直接把包出去了
作者:
Godbach
时间:
2012-08-14 22:19
回复
11#
lujian19861986
如果从 NF 的角度来看,ip_finish_output 是 LOCALOUT 处理完毕之后调用的函数,此时 skb 中应该已经有正确的路由了,直接就可以将包发送出去了。
作者:
lujian19861986
时间:
2012-08-15 11:18
回复
12#
Godbach
嗯嗯,感谢Godbach兄
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2