免费注册 查看新帖 |

Chinaunix

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

[内核模块] 使用netfilter修改数据包大小的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-20 11:33 |只看该作者 |倒序浏览
     现在要实现一个网关的功能,抓取由A主机发往B主机的数据包,进行修改
我现在的思路是使用NETIFLTER抓取到数据包,然后修改数据,用RAW_SOCKET仿造一个TCP包发送出去

问题是这样:
我现在修改数据已经可以实现了,但是,修改数据的长度会有问题,比如
A发送4位的数据,我修改这四位,就没问题
我若将数据修改为5位,B主机那端我抓包就会发现大量的重传包,过段时间TCP链接就断了
A主机这边会收到TCP ACKED UNSEEN SEGMENT

网上查了一下,好像是TCP的序号除了问题,为什么修改数据包的长度,会涉及到序号问题呢?大家帮帮忙,弄了好几天了

论坛徽章:
0
2 [报告]
发表于 2015-10-20 23:32 |只看该作者
找到原因了,修改了数据包的大小,从B端回来的数据确认ACK的值就不和A端期望的对应了。A端以为没有发送成功,便会不断的重传。

招聘 : c/c++研发
论坛徽章:
0
3 [报告]
发表于 2015-11-03 15:05 |只看该作者
是的,所以对tcp的劫持修改一般都是双向的,也就是来回的包都得进行劫持修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP