V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mac2man
V2EX  ›  小米

解决小米路由 404 劫持和插入广告的办法

  •  2
     
  •   mac2man · 2015-06-25 13:04:08 +08:00 · 13842 次点击
    这是一个创建于 3437 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小米路由净化计划初步操作--20150625

    小米越来越无下限了,打着优化用户体验的幌子,做一些让人匪夷所思的事情。
    先是用户发现劫持404页面后,最近又有用户发现一些页面被插入了页眉广告。
    网上搜索这类事情结果很多,可以看看下面几篇讨论文章:
    ---如何看待小米路由进行 404 网页劫持?
        http://www.zhihu.com/question/30358197
    ---小米路由器先劫持 http 错误码, 现在又在部分网站添加小尾巴, 什么节奏?
        https://www.v2ex.com/t/199701
    ---这是我之前对小米路由插入页眉广告的一点分析,上面的链接中我也做了回复
        http://pastebin.com/4t7eKNsA
    
    正是因为出现了页眉广告,我实在是对小米忍无可忍了。
    当然最好的办法是直接抛弃使用小米路由,但世上不是没有后悔药的么
    况且花了几百元买的路由器,总不能仍了,目前也还没有小米路由干净的openwrt的固件
    所以,想着是否通过一些操作,将小米路由一些不必要的启动项和进程,以实现一台干净的openwrt系统。
    
    
    最近几天稍微对小米路由(R1D)上的启动项和进程做了一些分析,初步得到一个稍微干净的小米路由:
    
    1. 可疑启动项和进程分析
      1.1 /etc/init.d/http_client_detect
      在这个启动项里,主要是加载nf_conn_ext_http 和 insmod nf_tcp_proxy 两个内核模块,同时有启动 /usr/sbin/http_dpi
      我还没深入研究,但初步判断小米路由监控用户的HTTP数据,已达到404劫持和插入广告的操作。
      所以这个启动项必须删除掉,抛弃

      1.2 /etc/init.d/rule_mgr
      这个启动项中有http_match , nf_conn_ext_http, nf_tcp_proxy 内核模块
      估计也是辅助劫持所用,抛弃

      1.3 /etc/init.d/http_status_stat
      单从名字上看,应该就是为劫持404所用,抛弃

      1.4 /etc/init.d/statisticsservice
      启动的进程中的配置文件中有一段:ad_filter_stat_url = "http://127.0.0.1:8195/"
      感觉是广告的代理,你说没事去访问8195端口干啥,另外“ad”这个名字,就是广告缩写呀,抛弃

      1.5 /etc/init.d/sysapihttpd
      这是启动http服务器,纯粹启动80端口也就罢了,启动了N个服务和端口,我也就不一一吐槽了
      总之也是为配合404劫持和广告所用,所以需要抛弃。
      如果才启动项禁用掉的话,可能就无法访问小米路由的WEB配置页面了,别担心,可以启动uhttpd来实现。

      1.6 /etc/init.d/mihttpd
      同样是启动小米路由的配置页面,不过不在80端口,抛弃。

      1.7 /etc/init.d/xunlei
      小米路由中的下载用的就是迅雷,如果有下载需求的可以不用停,但我无此需求,看着也不爽,抛弃。

      1.8 /etc/init.d/messagingagent.sh
      此启动项是将路由器一些数据上报给小米服务器,手机app远程访问也就是联系小米服务器获取路由的相关信息。
      具体我也不一一描述了,个人感觉,将一些信息上传给小米,这件事不靠谱。
      虽然打着“远程管理”的幌子,谁知道有无上传个人隐私信息呢。
      如果你还需要用手机APP远程配置路由的话,可以留着。

    2. 操作步骤:
      当然小米路由上还有其他可疑进程,但还未搞清楚其用途或者关联,暂时不去理会。
      这次主要初步解决掉404劫持,插入广告这类问题:
      手上这台小米路由的系统版本是: 开发版2.3.10 ,其他版本未尝试。

      2.1 首先得开启ssh权限,这个不需要多说了,网上教程很多,也可以通过小米官网开启
      开启之后就失去保修了,个人衡量。

      2.2 关闭可疑进程操作:
      /etc/init.d/rule_mgr stop
      /etc/init.d/http_client_detect stop
      /etc/init.d/http_status_stat stop
      /etc/init.d/statisticsservice stop
      /etc/init.d/sysapihttpd stop
      /etc/init.d/mihttpd stop
      不需要远程访问和迅雷下载的话,可以继续操作:
      /etc/init.d/messagingagent.sh stop
      /etc/init.d/xunlei stop
      这样的话,以上进程都被关闭掉了。

      2.3 关闭可疑进程开机自动运行:
      /etc/init.d/rule_mgr disable
      /etc/init.d/http_client_detect disable
      /etc/init.d/http_status_stat disable
      /etc/init.d/statisticsservice disable
      /etc/init.d/sysapihttpd disable
      /etc/init.d/mihttpd disable
      不需要远程访问和迅雷下载的话,可以继续操作:
      /etc/init.d/messagingagent.sh disable
      /etc/init.d/xunlei disable
      这样的话,以上进程,重启之后也不会开机运行了

      2.4 启动uhttpd操作:
      因为停掉了sysapihttpd ,小米路由配置WEB将无法访问。
      幸运的是,小米路由上还有uhttpd
      首先修改一下/etc/init.d/uhttpd

      找到 [ $use_uhttpd -eq 0 ] && return 0 这行,大概在倒数第8行的样子,注释掉这一行。
      然后启动uhttpd:
      /etc/init.d/uhttpd start
      并设置开机自动运行:
      /etc/init.d/uhttpd enable

      2.5 计划任务中一些操作也让我存疑
      执行crontab -e 可以注释停掉,目前我计划任务中只保留了ntp,其他项都被我注释掉了。

      至此,我个人认为可以解决小米路由劫持404,插入广告,上报数据的问题了。
      我的小米路由器运行了3天,目前正常使用中,可能还有可疑的进程,还未发现,继续持续关注。
      小米路由净化计划继续,继续分析可疑进程,将其打入小黑屋,
      另外想办法用原生luci替换掉目前小米定制的小米luci,装个插件都得在手机APP操作,实在蛋疼。

    第 1 条附言  ·  2015-06-26 09:28:48 +08:00
    更新一下,已经将小米WEB配置页面替换成原生的luci了

    第 2 条附言  ·  2015-06-26 12:37:57 +08:00
    等小米路由正常运行一段时间后,整理一下,然后准备启个github的项目,将小米路由"刷"openwrt的相关脚本和文件分享出来。
    第 3 条附言  ·  2016-12-26 16:27:00 +08:00
    不要等待楼主的小米路由净化 github 开源了,因为楼主已经完全抛弃小米路由了
    31 条回复    2015-09-03 17:18:08 +08:00
    neo2015
        1
    neo2015  
       2015-06-25 13:05:21 +08:00
    据说。。。这些功能都是开发版才有,没刷开发版的没有。求证
    keyfunc
        2
    keyfunc  
       2015-06-25 13:07:16 +08:00
    @neo2015 稳定版也有
    ihciah
        3
    ihciah  
       2015-06-25 13:51:57 +08:00
    楼主的帖子坚定了我不买小米任何产品的决心
    churchmice
        4
    churchmice  
       2015-06-25 13:55:02 +08:00
    这玩意在国外卖的话早被告到生活不能自理了
    iwege
        5
    iwege  
       2015-06-25 14:00:21 +08:00
    为啥不直接刷掉?
    crazyxin1988
        6
    crazyxin1988  
       2015-06-25 14:06:16 +08:00
    支持楼主
    可以搞个开源项目 一键脚本 清理小米路由 哈哈
    subpo
        7
    subpo  
       2015-06-25 14:09:49 +08:00
    目前只遇到未找到域名劫持啊,比电信的劫持要友好
    LazyZhu
        8
    LazyZhu  
       2015-06-25 14:10:29 +08:00
    哈哈,其他功能/稳定不说,先把隐私搞到手...
    cyberdak
        9
    cyberdak  
       2015-06-25 14:11:43 +08:00
    解决办法难道不是把这路由扔了?
    明知小米没有节操,却还要购买来使用,是一种什么样的精神啊
    justahappy
        10
    justahappy  
       2015-06-25 14:12:15 +08:00   ❤️ 2
    @churchmice 生活不如意么,见啥喷啥,可悲。
    KeySouundsFan
        11
    KeySouundsFan  
       2015-06-25 14:19:51 +08:00
    dotpig
        12
    dotpig  
       2015-06-25 14:53:44 +08:00
    @churchmice 还记得米4回传数据吗?在国外被发现后小米动作快啊,立马停止。但是国内,那帮米粉纷纷出来主动帮小米洗地。不得不佩服雷军,培养了一支脑残大军,有这支军队,小米在镇里做任何事情都可以毫无顾忌。
    yuhu
        13
    yuhu  
       2015-06-25 14:53:50 +08:00
    404用手机客户端可以关闭。页眉广告暂时还没发现。
    404关闭方法:路由器设置-关于-网页调制选项。
    cyberdak
        14
    cyberdak  
       2015-06-25 15:00:19 +08:00
    @dotpig 还有楼主这种孜孜不倦买小米,小米为何要担心。
    不能用就修改用,屌屌的
    cielpy
        15
    cielpy  
       2015-06-25 15:19:31 +08:00
    不是应该换新的吗。
    mac2man
        16
    mac2man  
    OP
       2015-06-25 16:10:58 +08:00   ❤️ 1
    @cyberdak 买之前不知道它这么无节操呀

    @djp518 还是想用op来着
    tobyxdd
        17
    tobyxdd  
       2015-06-25 16:21:14 +08:00 via Android
    中国网民真艰难 跟gfw斗跟isp斗现在自家路由器都得防着了
    xrjr2015
        19
    xrjr2015  
       2015-06-25 23:00:39 +08:00
    小米的设备将严重的危害个人信息隐私,小米手机rom的后门也是不了了之,这辈子怕是不会沾小米的产品!国产的很多设备只能用一个词来形容,就是垃圾!
    IvanLing
        20
    IvanLing  
       2015-06-26 09:48:57 +08:00 via iPhone
    亏本的生意不会有人做的。你觉得它设备便宜,他觉得你数据便宜。
    yegle
        21
    yegle  
       2015-06-27 00:30:36 +08:00
    http_dpi 这个从名字猜测是deep packet inspection,深度包检测
    tifan
        22
    tifan  
       2015-06-27 01:26:18 +08:00
    nf_* 一看就是 netfilter 嘛 ... 配合 dpi,这是要搞本地 GFW? 啧啧

    谁把二进制贴上来看看?
    gjflsl
        23
    gjflsl  
       2015-06-28 11:52:01 +08:00 via iPhone
    稳定版也开始劫持404页面了,准备换掉路由器了
    lasx
        24
    lasx  
       2015-06-30 10:40:48 +08:00
    @djp518 那个分区的压缩包下载了没有,目前访问是404
    yech1990
        25
    yech1990  
       2015-07-02 02:52:59 +08:00 via Android
    楼主快开放GitHub啊
    更换luci的教程搞定了么?
    yech1990
        26
    yech1990  
       2015-07-02 15:59:37 +08:00
    修改后lan口获取不了ip.....
    mac2man
        27
    mac2man  
    OP
       2015-07-06 14:39:00 +08:00
    @yech1990 我上面说描述的操作是不会影响到DHCP的,估计你的dnsmasq没启动起来 至于github项目,目前我还在测试,目前主要问题是wifi有些不正常,无法直接在luci上配置,需要手工配置1条命令
    yech1990
        28
    yech1990  
       2015-07-08 12:14:51 +08:00
    @mac2man 已经可以正常使用
    zhoujianqingz
        29
    zhoujianqingz  
       2015-08-26 20:39:38 +08:00
    @djp518 你好,请问这个是什么,不懂毛子的语言
    KeySouundsFan
        30
    KeySouundsFan  
       2015-08-26 22:57:32 +08:00
    @zhoujianqingz 湾湾出了新的: http://digiland.tw/viewtopic.php?id=2648 不要告诉我看不懂繁体
    yech1990
        31
    yech1990  
       2015-09-03 17:18:08 +08:00
    @djp518 试过了没有?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 19:24 · PVG 03:24 · LAX 11:24 · JFK 14:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.