分类: 其他

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通道逃出升天!

 

 

斐讯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

斐讯K2的FLASH分区图及ROM固件提取、修改及打包

3条评论

2017年2月15日 at 上午9:56分类:其他

斐讯K2的FLASH大小为8M

挂载信息:

root@K2:~# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/mtdblock6 on /overlay type jffs2 (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
/dev/mtdblock5 on /mnt/mtdblock5 type squashfs (ro,relatime)

 

挂载大小:

root@K2:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 1.0M 936.0K 88.0K 91% /
/dev/root 5.5M 5.5M 0 100% /rom
tmpfs 29.9M 3.2M 26.7M 11% /tmp
/dev/mtdblock6 1.0M 936.0K 88.0K 91% /overlay
overlayfs:/overlay 1.0M 936.0K 88.0K 91% /
tmpfs 512.0K 0 512.0K 0% /dev
/dev/mtdblock5 5.5M 5.5M 0 100% /mnt/mtdblock5
root@K2:~#

 

 

分区信息:
root@K2:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00800000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 007b0000 00010000 "firmware"
mtd5: 0067bbd2 00010000 "rootfs"
mtd6: 00100000 00010000 "rootfs_data"

 

地址信息(22.4.5.42官方版本,各版本地址不一样):

root@K2:~# dmesg

...

[ 1.680000] Creating 5 MTD partitions on "raspi":
[ 1.692000] 0x000000000000-0x000000800000 : "ALL"
[ 1.700000] 0x000000000000-0x000000030000 : "Bootloader"
[ 1.712000] 0x000000030000-0x000000040000 : "Config"
[ 1.724000] 0x000000040000-0x000000050000 : "Factory"
[ 1.736000] 0x000000050000-0x000000800000 : "firmware"
[ 1.748000] 0x00000018442e-0x000000800000 : "rootfs"
[ 1.756000] mtd: partition "rootfs" must either start or end on erase block boundary or be smaller than an erase block -- forcing read-only
[ 1.784000] mtd: partition "rootfs_data" created automatically, ofs=0x700000, len=0x100000
[ 1.800000] 0x000000700000-0x000000800000 : "rootfs_data"

 

分区图:

分区是嵌套(nested)的,我们把他分成几层来看:
第0层Layer0: 对应Flash芯片,8MiB大小, 焊接在PCB上, 通过SPI连接到CPU(SoC),分区给mtd0
第1层Layer1: 把总存储空间分为了4个区,分别为bootloader(u-boot)、config、factory、firmware
第2层Layer2: 把mtd4 (固件) 进一步分割为 kernel(内核) 和 mtd5 (rootfs)。在固件的一般处理流程中,Kernel二进制文件先由LZMA打包, 然后用gzip压缩之后文件被直接写入到raw flash中而不mount到任何文件系统上
第3层Layer3: 把rootfs更进一步分割成 mtd6(rootfs_data) 和剩下的未命名部分 ,未命名部分用来容纳SquashFS-ROM分区(5.5M大小),rootfs_data挂载为/overlay,即用户配置分区,总大小为1M

我们所说的固件(firmware)包含了上图Kernel和/rom部分,rootfs_data的起始位置是根据固件大小来自动调整的

要提取厂家的ROM固件,执行如下语句
dd if=/dev/mtd5 of=/tmp/fm.bin
用winscp将fm.bin传到计算机,查看大小:

0x18442e-0x800000大小也是6798290。
现在用ultraedit截取0x18442e-0x700000,即为ROM文件。
0x700000-0x18442e=57BBD2
如下图,将57BBD2后的全部删除即可:

另存为rom.bin,拷贝到Ubuntu中,用unsquashfs rom.bin解压

文件会解压到./squashfs-root目录:

你可以根据需要添加或删除文件,完成后重新打包

找到SDK目录(斐讯K2用的是MTK 3.10.14的SDK):

~/mtk/openwrt-3.10.14/staging_dir/host/bin$ ./mksquashfs4 ~/squashfs-root ~/newrom.bin -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -b 256k -processors 1

~/squashfs-root 为解压的rom目录,~/newrom.bin为新生成的文件

注意这只是ROM部分的文件,固件还包括前面1234KiB的kernel部分。

 

如果要生成一个K2固件,完整的过程如下:

 

1、提取厂家固件

dd if=/dev/mtd5 of=/tmp/k2.bin

2、在Ubuntu中的MTK SDK的目录(~/mtk/openwrt-3.10.14/staging_dir/host)建立如下脚本文件rom.sh:

#!/bin/sh
sudo echo "Starting..."
MKSQSHFS4='./bin/mksquashfs4'
PADJFFS2='./bin/padjffs2'
case "$1" in
'extract'|'e')
offset1=`grep -oba hsqs $2 | grep -oP '[0-9]*(?=:hsqs)'`
offset2=`wc -c $2 | grep -oP '[0-9]*(?= )'`
size2=`expr $offset2 - $offset1`
#echo $offset1 " " $offset2 " " $size2
dd if=$2 of=kernel.bin bs=1 ibs=1 count=$offset1
dd if=$2 of=secondchunk.bin bs=1 ibs=1 count=$size2 skip=$offset1
sudo rm -rf squashfs-root 2>&1
sudo unsquashfs -d squashfs-root secondchunk.bin
rm secondchunk.bin
;;
'create'|'c')
sudo $MKSQSHFS4 ./squashfs-root ./newsecondchunk.bin -nopad -noappend -root-owned -comp xz -Xpreset 9 -Xe -Xlc 0 -Xlp 2 -Xpb 2 -b 256k -processors 1
sudo chown $USER ./newsecondchunk.bin
cat kernel.bin newsecondchunk.bin > $2
$PADJFFS2 $2
rm newsecondchunk.bin
;;
*)
echo 'run
"modify-firmware.sh extract firmware.bin"
You will find file "kernel.bin" and folder "squashfs-root".
Modify "squashfs-root" as you like,after everything is done,run
"modify-firmware.sh create newfirmware.bin"
And you will get a modified firmware named newfirmware.bin.
'
;;
esac

脚本权限设置为可执行

3、将k2.bin文件拷贝到~/mtk/openwrt-3.10.14/staging_dir/host目录,并执行:

./rom.sh e k2.bin

会自动将ROM部分解压到./squashfs-root目录:

4、编辑固件内容:在squashfs-root目录点右键,“以管理员权限打开”进行编辑

5、修改完成后,在~/mtk/openwrt-3.10.14/staging_dir/host目录执行:

./rom.sh c k2_new.bin

k2_new.bin即为新固件

重新生成的固件(firmware)有可能大于或小于官方固件,没有关系,rootfs_data的起始位置是根据固件大小来自动调整的,firmware大了,用户的可写空间就小了

注意:固件大小不能超出mtd4的大小( 7872KiB)

openwrt中的自启动服务

没有评论

2017年2月13日 at 上午9:37分类:其他

openwrt中的服务一般放在/etc/init.d目录,脚本的第一行一般为如下语句:
#!/bin/sh /etc/rc.common

查询当前的自启动服务:
# for F in /etc/init.d/* ; do $F enabled && echo $F on || echo $F **disabled**; done
其实就是执行enabled命令,然后查返回值,返回1表示不启动,返回0表示自启动
root@K2:~# /etc/init.d/lc enabled
root@K2:~# echo $?
1
root@K2:~# /etc/init.d/upnp enabled
root@K2:~# echo $?
0

服务开机自启动,使用enable参数:
root@K2:~# /etc/init.d/lc enable
root@K2:~# /etc/init.d/lc enabled
root@K2:~# echo $?
0

禁止服务自启动,使用disable参数:
root@K2:~# /etc/init.d/lc disable
root@K2:~# /etc/init.d/lc enabled
root@K2:~# echo $?
1

三星note3 N900v刷第三方rom

没有评论

2017年2月11日 at 下午10:26分类:其他

一台老手机,废物利用,如下为刷第三方rom过程

原系统为android4.4.2 ,Verizon美版,支持移动2G,联通3G,电信3G,高通骁龙800处理器,2.3GHZ主频, 3GB RAM,32G FLASH

Verizon版的一般都锁了BootLoader(简称bl),如果直接刷第三方rom,会无法启动(开机界面提示Secure Fail)

如出现上述情况,按volume down+home+power键进入download模式,usb连接电脑,线刷官方原版固件(VZW-N900VVRUCNC4)恢复

刷第三方ROM过程:

1、先安装kingroot root设备
2、解锁bl,需插入一张不用的sd卡,参照《N900V已解BL锁,简单教程。 - 三星 Galaxy Note 3 安卓论坛 机锋论坛》

unlock_n3

将上述文件解压拷贝到手机/data/local/tmp,用ipop for android执行此文件即可

解锁bl后在download模式会出现developer字样
3、安装twrp管理器,刷V版twrp

twrp管理器

4、开机volume up+home+power进入recover模式,用twrp 双清后可安装第三方固件,如cm-13.0-20161220-UNOFFICIAL-temasek-hltevzw-V12.3.zip,安装后变为Android 6.0.1版本

https://forum.xda-developers.com/verizon-galaxy-note-3/development/rom-temaseks-unofficial-build-t3364382

或者可以刷入JasmineROM v6.1 (Android 5.0)

https://forum.xda-developers.com/showpost.php?p=62769340&postcount=11940

5、刷新后如需root可直接twrp刷入SuperSU-v2.79-201612051815.zip

SuperSU-v2.79-201612051815