如何在路由器上修改数据包

W1nds 2014-02-27 03:36:53
加精

1.某台内网机器,比如访问百度,我在路由器上能否将这个包替换掉?
2.某台内网机器访问百度后,百度服务器返回数据到路由之后,路由是怎么将数据转发给内网机器的?
我能否在路由器上将这部数据包改掉?或者只是修改下重新发送就可以。



...全文
22757 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
zaotl1 2016-07-10
  • 打赏
  • 举报
回复
看看11111111111111。
丧心病狂的我 2016-04-15
  • 打赏
  • 举报
回复
引用 13 楼 ftjavayp 的回复:
引用 14 楼 prolee750607 的回复:
从“路由器”的严格定义上来说是不可以的,因为路由器的功能就是路由数据包。当然,路由器必须修改包的链路层信息(mac地址)才能路由,所以其实也算是修改了数据包的。 现在的路由器(90年代以后)还有了其它的功能,比如acl,nat,那么就会拦截数据包,修改网络层信息(比如五元组)。代理服务器修改的就更多。 如果你搞协议分析开发,把自己的机器做成网关,带路由等功能,你想怎么改,就怎么改。 你可以捕获缓存访问百度的某台机器的数据包和返回的报文(libpcap+libnet可以做非生产等级的实现),修改后转发,你可以实现:把ip地址换成另外一个,百度发回的报文你也可以把内容换掉,修改ua,在移动核心网里还可以修改电话号码、手机串号、基站信息(lac、rac、sac)等等。 前提是处理能力,libpcap+libnet这种库在生产系统上是基本上搞不定的。但是它可以告诉你的是,只要你对协议(这得努力看rfc文档)充分理解,网络数据包就是数据,什么socket的都是浮云,防火墙、路由、负载均衡、应用网关......基本原理都是在捕获/缓存/修改/转发数据包。 剩下的就是修炼算法、数据结构,来应付每秒钟几十万到几千万的数据包,且不会让用户觉察。 库函数、语法、协议规范神马滴都是死的,任何一个能认字的人都可以干得了(神州的“程序员”95%都是这种货),程序员是能够在自己代码里构建合适的数据结构,熟练运用大多数通用算法,让自己的程序能够以最高效率处理人处理不了的事务的工种。而不是腆着脸把堆代码、砌函数就敢称为编程的傻货。(有感而发,切勿对号入座)
程序员是能够在自己代码里构建合适的数据结构,熟练运用大多数通用算法,让自己的程序能够以最高效率处理人处理不了的事务的工种。而不是腆着脸把堆代码、砌函数就敢称为编程的傻货。 这句话记下了。
lincy0000 2015-08-05
  • 打赏
  • 举报
回复
mark...
小芸小小芸 2015-06-02
  • 打赏
  • 举报
回复
请问楼主解决了吗
大荔秦川牛 2015-02-13
  • 打赏
  • 举报
回复
去cu看看去。。。
大荔秦川牛 2015-02-12
  • 打赏
  • 举报
回复
去cu看看去。。。
lbsno1 2014-08-15
  • 打赏
  • 举报
回复
linux netfilter
lbsno1 2014-08-15
  • 打赏
  • 举报
回复
和我提的问题一个样子请问楼主解决了没有?
放牛娃不吃草 2014-07-10
  • 打赏
  • 举报
回复
引用 8 楼 xiaopo_poxiao 的回复:
这是路由器的技术吧,一般家用路由器是不是没有办法编辑,或者可不可以说是ROM,以前配置的都是那种多口的路由交换,在计算机上你只能拿到路由器权限后进入之后,家用的看他提供给你的功能吧,非家用的那种试着应该能改,有ACL的。
Openwrt 做类似功能的目前比较多
yuyunliuhen 2014-07-02
  • 打赏
  • 举报
回复
看看先 .
testoftesttest 2014-06-25
  • 打赏
  • 举报
回复
引用 楼主 evi10r 的回复:
1.某台内网机器,比如访问百度,我在路由器上能否将这个包替换掉? 2.某台内网机器访问百度后,百度服务器返回数据到路由之后,路由是怎么将数据转发给内网机器的? 我能否在路由器上将这部数据包改掉?或者只是修改下重新发送就可以。
很多软路由软件可以收到数据包后,重新封装
msqbeyond 2014-06-02
  • 打赏
  • 举报
回复
什么东西呢!!!!
鸥翔鱼游1 2014-04-29
  • 打赏
  • 举报
回复
看了此贴菜鸟又涨姿势了
Add1116 2014-04-27
  • 打赏
  • 举报
回复
单纯的过来看看
人贱不得不拆 2014-03-11
  • 打赏
  • 举报
回复
引用 楼主 evi10r 的回复:
1.某台内网机器,比如访问百度,我在路由器上能否将这个包替换掉? 2.某台内网机器访问百度后,百度服务器返回数据到路由之后,路由是怎么将数据转发给内网机器的? 我能否在路由器上将这部数据包改掉?或者只是修改下重新发送就可以。
NAT都不知道啊 改什么呢。 netfilter 可以实现 自己在协议栈的基础上写代码也可以做到。 你既然想要改数据包的内容 那么用IPTABLE就难了。 最好当然是在内核里面改。不过你的技术怕是有难度。 建议网上找找相关的驱动代码。这个不少的。。拿来改改。当道你的源码中 编译
AA11111111S 2014-03-09
  • 打赏
  • 举报
回复
nihaaohdhlANSDA
osnetdev 2014-03-08
  • 打赏
  • 举报
回复
如果你的路由器是基于Linux系统,用netfilter就可以很容易办到。你需要做的就是写两个netfilter内核模块,一个match模块用于匹配指定的网站URL,一个target模块用于修改报文。做这些之前你得熟悉内核netfilter的实现,并且对IP,TCP和HTTP协议都有较深入的理解,最好是看过相关的RFC文档,比如明白修改TCP报文后需要重新计算checksum、TCP的seqence number要根据修改后的报文长度进行修改、甚至需要对http服务器端发TCP reset断开连接而由路由器对内网伪装成http服务器(类似于黑客技术里面的中间人攻击)等等。我以前做过类似模块,不过出于商业原因不能将代码开放出来,不过我记得CU论坛的内核源码版以前有人问过类似的问题,你可以去CU论坛找找看,相较于CSDN论坛CU在Linux方面更专业、大牛也更多。
会走路的小鸟 2014-03-08
  • 打赏
  • 举报
回复
貌似很牛,学
aby913 2014-03-07
  • 打赏
  • 举报
回复
学习学习
轩辕5566 2014-03-07
  • 打赏
  • 举报
回复
加载更多回复(44)

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧