暮光博客

小心你讨厌的东西,因为你很可能被它塑造成某种形状

之前固件带后门?于是我自行编译了 N1 OpenWrt 固件

折腾 64 条评论

2019 年初折腾的斐讯 N1,三年来一直作为我的家庭旁路由,承担科学上网工作。去年国庆期间,由于之前固件中科学上网不支持 trojan 协议,就在恩山找了一个网友自编译固件更新到 N1 中,新固件内置了许多第三方插件,包含支持多种协议的科学上网、AdGuard Home、音乐解锁等,然而除了科学上网,其他功能我并用不上。

今年夏天,一次偶然地在主路由翻看日志时,发现经常会有不同的华为设备连接到我的家庭网络。起初,我以为是家庭 WiFi 密码遭到泄露,于是更换了密码,并停止了 SSID 广播。然而,还是会有华为设备不断连进来,包括各种型号的华为手机和平板。

WX20211128-190042.png
(主路由日志,各种华为设备连接记录)

后来我依然猜想是 WiFi 被蹭网,或者是主路由的 DHCP 有 BUG,这半年来没太当回事。
直到前几天下班回家,惊讶发现我的小爱音箱居然在自己播放电影音频。经过一番研究,发现电影是通过局域网 DLNA 点播到我音箱上的。这引起了我极大的不适,这都拉屎拉到我头上了。

于是写脚本监控设备连入,有未知设备连入时就通知我。后续有华为设备连入时,我第一时间去查看了华为设备的网络通信记录,发现华为设备和全国各地的 IP 都有通信。我的家宽极有可能被后门程序开放到公网,放进代理 IP 池了。在家里来来回回拔了几次网线,最终锁定这些华为设备都是从 N1 连入的,因为只要我拔掉 N1 的网线,我就 ping 不通华为设备了。

好家伙,给人当了一年肉鸡。

这里要提一下,这些所谓的「华为设备」可能并非是真实的华为设备,而是后门程序自行虚构的 Hostname 和 MAC 地址。

老固件是哪一个?

其实我本来不想公布老固件型号,因为该作者在恩山发布固件,有诸多用户,未见过其他用户反馈类似问题。后门程序可能不存在于固件本身,而是集成的各种第三方插件,作者可能也处于不知情状态。但思索很久还是发出来吧,如果有其他网友有类似问题,也可以给个参考。

老固件型号是「OpenWrt R20.10.1 国庆中秋双节特别版 by gd772」,在恩山的发布帖子是[N1盒子] 【2021-08-14 】 N1盒子 Openwrt 固件,支持 在线升级!

在此声明,我极大怀疑是内置的某个插件存在后门,具体哪个插件我无法排查,我并非质疑作者有意在编译的固件中投放后门。

自行编译新固件

自此,我觉得还是自己编译固件比较放心,最起码不用内置多余的插件,增加不必要的风险。我用 Parallel 开了一台 Ubuntu 虚拟机,拉取了 Lede 的代码,为了安全和纯净,我只将科学上网插件编译了进去。整个编译过程耗时 4 个多小时,编译完毕后,使用恩山知名用户 flippy 的 Armbian 内核和镜像制作工具,将编译好的 OpenWrt 制成镜像,写入 U 盘。将 U 盘插到斐讯 N1,重启后 U 盘启动,连入 OpenWrt SSH,使用 flippy 的 EMMC 一键写入脚本,将 OpenWrt 写入到 N1 存储中。从编译固件到最终写入 N1,整个过程耗时很久,把我搞得很疲惫。中间也来来回回二次编译了几次,因为第一次编译的固件写入 EMMC 时失败,主要原因是一些写入 EMMC 的依赖工具没有编译进去,比如 fdisk、bikid 等分区工具、文件系统等。

61E91BED-A79E-4B15-B795-BE4EAC602776.png
(LEDE 编译和镜像制作过程)

自行编译的固件很干净,不出意外的话,它作为旁路网关仍将服务我很长时间。

WX20211128-184106.png
(自行编译的新固件界面)

最后不得不说,到 2021 年底,N1 的各种玩法已经很成熟。2019 年初刚玩时,OpenWrt 固件写入 EMMC 还是一个很费事的工作,如今得益于一些大佬的努力,这项工作已经非常简单。

最后,我把固件上传到了云盘。
百度云:https://pan.baidu.com/s/1_rmBpJ5RmEW8EP6UOA-Wag?pwd=atm7
天翼云:https://cloud.189.cn/web/share?code=vIJbimjeMrQ3(访问码:cmp9)

下载完先解压为 .img 文件再制作镜像盘。
默认IP:192.168.123.2
默认账号密码:root / password

永远的长度
评论区 / 取消回复
选择表情选择表情
  1. weeper

    感谢分享,感谢揭露。
    我也一直是自己编译固件来用的

    回复
    1. zepzep
      @weeper

      您好,有编译的教程可以分享么 ? 现在论坛里面的n1固件在旁路由都不能留学了,这个固件在我的n1上开SFE会重启,想试试自己编译一个。感谢!!

      回复
      1. weeper
        @zepzep

        参考如下链接:
        https://zhujitips.com/2410
        https://www.right.com.cn/forum/thread-4050986-1-1.html
        https://blog.isayme.org/posts/issues-65/
        https://zhujitips.com/2156
        https://www.yitoujing.com/article/18

        另外,armbian推荐直接下载github上的版本:
        https://github.com/ophub/amlogic-s9xxx-armbian

        回复
        1. zepzep
          @weeper

          非常谢谢您

          回复
  2. ccc

    非常感谢这么干净的固件,只有ssr,速度很快。论坛里最近有可自定义固件的网站,非常方便。但是用了发现后台总是在连接一个xyz网站,在host里面屏蔽了,心里还是不舒服,看来还是得自己做。谢谢。

    回复
  3. 6

    可以在线升级插件版本吗,还是说要重新编译 icon_razz.gif

    回复
    1. weeper
      @6

      想在线更新而不是重新编译的话,建议换成passwall1,那个可以程序内在线升级

      回复
    2. @6

      不能在线升级的,需要重新编译。

      回复
  4. Alex

    emmc的依赖工具有哪些啊?我一直没刷成功

    回复
    1. @Alex

      离我写文章过去得有点久了,不太有印象了。应该就是我文中提到的 fdisk、bikid 这两个分区工具,还有个文件系统(大概是 ntfs)。

      回复
  5. 1

    非常感谢!!!终于找到一个纯净并且能从U盘刷入EMMC的固件了

    回复
  6. JAFG

    大佬。俺新手一个,有两个N1盒子都刷的这个固件,刷机后设置旁路由,只有一有连接N1盒子就重启。盒子连接电视显示“Unable to handle kernel NULL pointer dereference at virtual address 0000000000000004”

    回复
    1. JAFG
      @JAFG

      请指教,先谢谢了!QQ 24245720@qq.com

      回复
      1. @JAFG

        您好,我不是 openwrt 的专家,所以这个问题我也没有能力解决,抱歉哦。
        您尝试刷下其他固件吧。

        回复
  7. 季亮

    你好,我的斐讯N1想自己编个armbian的固件,能指点下吗?我该如何去做,我这里有linux主要是不会陪置交叉编译环境,请指教,先谢谢了!
    我的Qq106445998

    回复
    1. @季亮

      你可以参考这个视频:https://www.youtube.com/watch?v=UOLnzWU8H4w

      很全面。

      回复
  8. 呜啦啦

    不用啦搞定了,LAN的DNS没填

    回复
  9. 呜啦啦

    你好,我刷了这个固件之后,S用不了咋回事。我在ju**cks买的服务,以前都可以用的。但是这个固件,服务器连接测试总是fall。不管是V*y还是S都一样

    回复
  10. 昂仔

    大佬请教一下啊,N1做旁路由到底需不需要在防火墙加上那一条啊?

    回复
    1. @昂仔

      不需要的。

      回复
      1. 昂仔
        @大袋鼠

        大佬再请教你一个问题哈,我也是深受论坛里openwrt好多我用不到的插件的困扰,找到你这个固件,好清爽啊。但是我想了解一下,如果我后期想自己新装插件(比如docker啊、KMS啊这类),有没有相关的教程可以参考啊?

        回复
        1. @昂仔

          我这个固件不支持安装额外的第三方,要使用其他插件可能得自己重新编译新固件了。

          回复
  11. ld656

    好人 发大财 我一直考虑这安全问题 免费东西是 世界最贵的 小米2100固件 直接带瑞士军刀 朋友问一下smartdns 有用吗

    回复
    1. @ld656

      你好,我这个固件是专门给 n1 用的,另外,该固件不带 smartdns 哦。

      回复
      1. ld656
        @大袋鼠

        你好科学** 开启了但谷歌 百度测试链接失败 好多固件都试了 有的百度能联通 就是外网不行 是不是我科学上网插件要设置下 我是手动添加

        回复
        1. @ld656

          一般是配置有误,检查下插件配置。

          回复
          1. ld6566
            @大袋鼠

            你好 不知道怎么了 自己好了 免费的能跑6000到9000 收费的4k 秒开 速度比我华硕ax爽 过瘾 要是在弄个去广告就过瘾 了 你看电视不 我有app 上千源 很爽

            回复
            1. @ld6566

              可以,直接回复邮件发我 App。

              回复
      2. 来的56
        @大袋鼠

        你好 这固件不能U盘启动吗

        回复
        1. 来的56
          @来的56

          弄好了 这固件太干净了 希望安全 感谢你 用网络设备联系我 我喜欢折腾 很多设备

          回复
  12. micro

    电脑SSH登入192.168.123.2,输入./inst-to-emmc.sh回车,等待写入完毕。

    回复
  13. Sunfish

    请问 flippy 的 EMMC 一键写入脚本哪里可以下载呢?
    另外写入 EMMC 的依赖有哪些,可否分享一下,感谢!

    回复
    1. @Sunfish

      固件自带 emmc 写入脚本,如上面的评论所说:
      电脑SSH登入192.168.123.2,输入./inst-to-emmc.sh回车,等待写入完毕。

      回复
  14. 问题

    用了你的固件,非常简洁,感觉挺好。
    现在准备拿 N1 做旁路由,接打印机,发现没有无线和打印,请问如何增加呢?
    谢谢。

    回复
    1. @问题

      那需要重新编译了,我的固件里没有这两项功能 icon_razz.gif

      回复
      1. 问题
        @大袋鼠

        请问您有IM可以聊下吗?我尝试找了好几个版本的插件,确实都是内核不兼容不能够用。
        清爽的固件很喜欢,想请教下如何操作编译,或者说如何在这个内核的基础上来操作。

        回复
        1. @问题

          编译参考下这个视频:https://www.youtube.com/watch?v=UOLnzWU8H4w
          我的步骤和他大差不差。
          也可以留下你的QQ。

          回复
          1. 问题
            @大袋鼠

            q ***
            麻烦您加一下,偷个懒问您要下编译的配置文件,我自己再按照教程去编译,非常感谢。

            回复
  15. bobo

    谢谢分享

    回复