斐讯K2 V22.5.9.163版本安装telnet、ssh和breed的方法及净化、精简、去广告版本安装

6条评论

2017年2月25日 at 上午10:49分类:硬件

本方法采用WEB漏洞来让K2运行指定命令

1、WEB漏洞介绍

计算机连接K2(可通过wifi或LAN口),K2 WAN口连internet,先保证K2可以正常上网

用Firefox,傲游,Chrome等浏览器登录http://192.168.2.1

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

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

双击"05",改为你要执行的命令,比如我们要启动telnet服务,可以输入:

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

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

点击“保存”按钮后,就相当于K2执行了“/usr/sbin/telnetd -l /bin/login.sh”命令启动了telnet服务。

你可以通过此方法来执行多条命令。

 

2、开启telent命令

如第一节所描述,执行下面的命令即可:

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

 

3、安装、启动ssh命令

在WEB页面分别输入下面几条命令并保存

05|opkg install http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/dropbear_2014.63-2_ramips_24kec.ipk

05|/etc/init.d/dropbear enable

05|echo -e 'admin\nadmin' | passwd root

05|/etc/init.d/dropbear start

ssh的登录用户名:root   密码:admin

 

4、安装净化版本、精简、去广告版本

利用WEB漏洞输入如下命令即可变为净化版本:
05|wget http://iytc.net/tools/k2_clear.bin -O /tmp/k2_clear.bin;sleep 1;sysupgrade -r /tmp/k2_clear.bin;sleep 1;reboot

输入如下命令可以变为精简版本(精简版本在净化版本上去除了ssh,内存占用更少):
05|wget http://iytc.net/tools/k2_min.bin -O /tmp/k2_min.bin;sleep 1;sysupgrade -r /tmp/k2_min.bin;sleep 1;reboot

输入如下命令可以变为adbyby去广告版本(在精简版本上增加adbyby去广告,缺省关闭,在广告屏蔽页面打开):

05|wget http://iytc.net/tools/k2_adbyby.bin -O /tmp/k2_adbyby.bin;sleep 1;sysupgrade -r /tmp/k2_adbyby.bin;sleep 1;reboot

执行后K2会复位两次,请耐心等待。

上述的净化、精简、去广告版本在恢复出厂设置后会失效,变为纯正的官方版本,如想切换,需再在WEB上输入上述的命令。

20170214142347

官方原始版本和精简版本的内存占用及网络进程对比图:

diffk2

 

5、安装breed

 

注意:K2 V22.5.9.163版本与目前的breed不兼容,不建议安装breed,如安装breed,需要进行修改,否则无法启动K2。目前只建议在需要降级或刷第三方固件时才安装breed!

 

输入下面三条命令

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

05 | mtd unlock Bootloader

05 | mtd -r write /tmp/breed.bin Bootloader

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

下载程序需要时间,第一条命令后最好间隔一段时间再执行第二条命令。

breed的修改(降级或刷第三方固件不需要此步骤):

进入breed环境变量设置---->启用---->位置选择breed内部---->设置---->重启---->再次中断进入breed---->telnet 192.168.1.1进入breed---->手动设置启动位置env set autoboot.command "boot mem 0xbc0a0000"---->保存env save---->重启reset

20170225105841

20170225110030

如果换了其他固件需要进breed禁用环境变量。

 

 

 

 

K2 adbyby启动后设备管理和家长控制无法禁止问题

没有评论

2017年2月21日 at 下午2:32分类:其他

adbyby启动后,会缺省打开一条nat PREROUTING规则

root@K2:~# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
PREROUTING_REMOTE tcp -- anywhere anywhere
port_forward_nat all -- anywhere anywhere
delegate_prerouting all -- anywhere anywhere
REDIRECT tcp -- anywhere anywhere tcp dpt:www redir ports 8118

将所有访问80端口的流量转发到adbyby监听的8118端口,然后由adbyby来转发相应的上网请求

 

K2设备管理的语句为(使用mangle 表的FORWARD控制):

iptables -t mangle -w -A limit_chain -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

Chain FORWARD (policy ACCEPT)
target prot opt source destination
limit_chain all -- anywhere anywhere

Chain limit_chain (1 references)
target prot opt source destination
DROP all -- anywhere anywhere xx:xx:xx:xx:xx:xx

家长控制的语句为(使用filter 表的FORWARD控制):

iptables -t filter -w -I FORWARD -j parent_control

Chain FORWARD (policy DROP)
target prot opt source destination
parent_control all -- anywhere anywhere

Chain parent_control (1 references)

target prot opt source destination
REJECT all -- anywhere anywhere xx:xx:xx:xx:xx:xx  TIME from 08:00:00 to 18:00:00 reject-with icmp-
port-unreachable

根据下图的报文转发流程:
316
报文在前段就被adbyby截住了,所以后面的过滤规则失效,禁止设备通过adbyby通道逃出升天!

 

 

玩转小K智能插座(K2)的openwrt系统

没有评论

2017年2月19日 at 下午5:27分类:硬件

京东买的小K二代:

 

在手机APP上查看“设备信息”,找到MAC地址,在无线路由器“DHCP分配”可以找到此MAC地址分配到的IP地址

 

然后ssh连接,用户名为root,密码为下面中的一个:

admin或1234或p9z34c

又看到熟悉的openwrt界面了:

看一下基本信息:

 

运行的进程和联网程序:

 

dmesg显示为32M内存:

[ 0.000000] Determined physical RAM map:
[ 0.000000] memory: 02000000 @ 00000000 (usable)

4M的FLASH,分区信息:

[ 0.510000] Creating 5 MTD partitions on "spi0.0":
[ 0.520000] 0x000000000000-0x000000020000 : "u-boot"
[ 0.520000] 0x000000020000-0x0000001351cc : "kernel"
[ 0.530000] 0x0000001351cc-0x0000003f0000 : "rootfs"
[ 0.530000] mtd: device 2 (rootfs) set to be root filesystem
[ 0.540000] 1 squashfs-split partitions found on MTD device rootfs
[ 0.540000] 0x000000360000-0x0000003f0000 : "rootfs_data"
[ 0.550000] 0x0000003f0000-0x000000400000 : "art"
[ 0.550000] 0x000000020000-0x0000003f0000 : "firmware"

 

CPU频率:

Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz

 

采用TL-WR703N架构:

Kernel command line:  board=TL-WR703N  console=ttyATH0,115200 rootfstype=squashfs,jffs2 noinitrd

 

 

斐讯K2固件修改的一些信息

没有评论

2017年2月18日 at 下午8:36分类:其他

1、第一次固件启动标志

/etc/config/Luci文件中的

option firststart '1'

当检测为1时,表示固件第一次启动,会启动向导页面

2、在Ubuntu中修改固件文件,会自动产生一个备份文件

比如修改了/etc/init.d/corn

会产生一个/etc/init.d/corn~文件

用如下语句删除:

find . -name "*~"  | xargs rm -f
3、第一次启动时的网络配置生成
无线配置文件/etc/config/wireless通过/lib/wifi/mt7620.sh和mt7612e.sh生成
函数
detect_mt7612e() {
ssid=@PHICOMM_`eth_mac r wan | cut -c 16-`
SSID为@PHICOMM_加MAC地址的后两位

有线配置文件/etc/config/network通过/etc/uci-defaults/02_network生成,第一次执行后此文件自动删除:
touch /etc/config/network
board=$(ramips_board_name)
ramips_setup_interfaces $board
ramips_setup_macs $board
uci commit network

4、扫描AP

iwpriv ra0 set SiteSurvey=1

sleep 2

iwpriv ra0 get_site_survey

root@K2:~# iwpriv rai0 get_site_survey
rai0 get_site_survey:
Ch SSID BSSID Security Signal(%)W-Mode ExtCH NT WPS DPID
60 @PHICOMM_F8_5G cc:81:da:a6:5c:08 WPA1PSKWPA2PSK/TKIPAES 29 11a/n/ac ABOVE In NO
157 homejjj b8:f8:83:7c:db:09 WPA1PSKWPA2PSK/TKIPAES 24 11a/n/ac ABOVE In NO

无线中继参数说明:

ApCliEnable 1为开启apcli,0为关闭
ApCliSsid 需要上联的ap ssid
ApCliAuthMode 上级ap的认证方式,可选项为:
WEPAUTO
SHARED
WPAPSK
WPA2PSK
OPEN
请根据实际上级ap认证方式填入此参数
ApCliEncrypType 上级ap的加密方式,可选项为:
WEP
TKIP
AES
请根据实际上级ap加密方式填入此参数
ApCliPassWord 上级ap的密码,明文写入。
注意,还需修改channel参数与上级ap一致
还需注意,WRTnode lan口ip网段必须与上级ap网段不同,如上级ap网段为192.168.1.x网段,WRTnode则需要改为192.168.1.x之外的其他网段。

扫描到的信息与配置信息的对应:

扫描信息                                       配置信息

WPA1PSKWPA2PSK/TKIPAES	WPA2PSK/AES
WPA2PSK/AES		WPA2PSK/AES
WPA2PSK/TKIP		WPA2PSK/TKIP
WPAPSK/TKIPAES		WPAPSK/TKIP
WPAPSK/AES		WPAPSK/AES
WPAPSK/TKIP		WPAPSK/TKIP
WEP			WEP/WEP

脚本控制:

#!/bin/sh

ifconfig apcli0 down 
ifconfig apcli0 up
iwpriv apcli0 set ApCliEnable=0
iwpriv apcli0 set ApCliSsid="上级路由名称"
iwpriv apcli0 set ApCliBssid="90:a4:de:c0:f3:6c"
iwpriv apcli0 set Channel=4
iwpriv apcli0 set ApCliAuthMode=WPA2PSK
iwpriv apcli0 set ApCliEncrypType=AES
iwpriv apcli0 set ApCliWPAPSK=上级路由密码
iwpriv apcli0 set HT_BW=0
iwpriv apcli0 set ApCliEnable=1

linux shell中的if语句

没有评论

2017年2月17日 at 上午11:16分类:软件

[ -a FILE ] 如果 FILE 存在则为真。

[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。

[ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。

[ -d FILE ] 如果 FILE 存在且是一个目录则为真。

[ -e FILE ] 如果 FILE 存在则为真。

[ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。

[ -g FILE ] 如果 FILE 存在且已经设置了SGID则为真。

[ -h FILE ] 如果 FILE 存在且是一个符号连接则为真。

[ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。

[ -p FILE ] 如果 FILE 存在且是一个名字管道(F如果O)则为真。

[ -r FILE ] 如果 FILE 存在且是可读的则为真。

[ -s FILE ] 如果 FILE 存在且大小不为o则为真。

[ -t FD ] 如果文件描述符 FD 打开且指向一个终端则为真。

[ -u FILE ] 如果 FILE 存在且设置了SUID (set user ID)则为真。

[ -w FILE ] 如果 FILE 如果 FILE 存在且是可写的则为真。

[ -x FILE ] 如果 FILE 存在且是可执行的则为真。

[ -O FILE ] 如果 FILE 存在且属有效用户ID则为真。

[ -G FILE ] 如果 FILE 存在且属有效用户组则为真。

[ -L FILE ] 如果 FILE 存在且是一个符号连接则为真。

[ -N FILE ] 如果 FILE 存在 and has been mod如果ied since it was last read则为真。

[ -S FILE ] 如果 FILE 存在且是一个套接字则为真。

[ FILE1 -nt FILE2 ] 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。

[ FILE1 -ot FILE2 ] 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。

[ FILE1 -ef FILE2 ] 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。

[ -o OPTIONNAME ] 如果 shell选项 “OPTIONNAME” 开启则为真。

[ -z STRING ] “STRING” 的长度为零则为真。

[ -n STRING ] or [ STRING ] “STRING” 的长度为非零 non-zero则为真。

[ STRING1 == STRING2 ] 如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。

[ STRING1 != STRING2 ] 如果字符串不相等则为真。

[ STRING1 < STRING2 ] 如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。

[ STRING1 > STRING2 ] 如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。

条件表达式

  • 文件表达式

if [ -f  file ]    如果文件存在
if [ -d ...   ]    如果目录存在
if [ -s file  ]    如果文件存在且非空
if [ -r file  ]    如果文件存在且可读
if [ -w file  ]    如果文件存在且可写
if [ -x file  ]    如果文件存在且可执行

  • 整数变量表达式

if [ int1 -eq int2 ]    如果int1等于int2
if [ int1 -ne int2 ]    如果不等于
if [ int1 -ge int2 ]       如果>=
if [ int1 -gt int2 ]       如果>
if [ int1 -le int2 ]       如果<=
if [ int1 -lt int2 ]       如果<

  •    字符串变量表达式

If  [ $a = $b ]                 如果string1等于string2
字符串允许使用赋值号做等号
if  [ $string1 !=  $string2 ]   如果string1不等于string2
if  [ -n $string  ]             如果string 非空(非0),返回0(true)
if  [ -z $string  ]             如果string 为空
if  [ $sting ]                  如果string 非空,返回0 (和-n类似)

 逻辑非 !                   条件表达式的相反
if [ ! 表达式 ]
if [ ! -d $num ]                        如果不存在目录$num

逻辑与 –a                    条件表达式的并列
if [ 表达式1  –a  表达式2 ]

逻辑或 -o                    条件表达式的或
if [ 表达式1  –o 表达式2 ]

逻辑表达式

  •     表达式与前面的=  != -d –f –x -ne -eq -lt等合用
  •     逻辑符号就正常的接其他表达式,没有任何括号( ),就是并列

if [ -z "$JHHOME" -a -d $HOME/$num ]

  •     注意逻辑与-a与逻辑或-o很容易和其他字符串或文件的运算符号搞混了