月度归档:2017年12月

华硕路由器(RT-AC66U)进入救援模式从小宝梅林固件等第三方固件刷回官方原厂固件的方法

刷回官方固件,有很简单的方法,比如在网页上直接上传官方固件,然后恢复出厂设置,最后重新配置路由器。但本文主要讲的是如何通过救援模式如何刷回原厂固件。

尝完鲜打算刷回华硕官方原厂固件。华硕提供的救援模式的文档中英文都有,甚至英文文档就是以AC66U为例图文并茂进行说明的。但是当尝试使用华硕提供的软件Firmware Restoration上传固件时,均不成功。官方文档如下:
如何使用紧急救援模式?
How do I use the rescue mode of a router?

下面提供一个可以通过救援模式刷回华硕官方原厂固件的方法。

1 下载最新的原厂固件

截至2017年最后一天最新固件是:ASUS RT-AC66U Firmware version 3.0.0.4.380.8120
解压zip包后得到固件,为了方便说明,把它放到D盘66u目录下:

D:\66u\RT-AC66U_3.0.0.4_380_8120-ge60d6e4.trx

2 将路由器置于救援模式

对照那个官方的英文版文档,所谓“RESTORE”按钮,是位于USB口和WAN口那个按钮,需要用取卡针戳;
操作过程中,无需拔掉电源,使用电源键进行断电和通电的操作即可。

方法是:通过电源键断电,按住“RESTORE”按钮5秒(无需很精确,不要松开),按下电源键通电,当看到电源指示灯开始慢闪时(时间间隔是3.0秒左右),松开“RESTORE”按钮。
此时路由器已顺利进入救援模式。

3 设置电脑的IP

这里有个坑:官方文档说是将电脑的IP设置为192.168.1.10(10为例子,可以为2-255),子网掩码设置为255.255.255.0。但是实际情况是,我们往往会更改华硕路由器的“内部网络(LAN) - 内网地址设置”,比如设置为192.168.0.1,以防和光猫的默认地址冲突。坑的地方在于华硕这个路由器的救援模式不是永远固定在192.168.1.1这个IP,而是我们修改过的IP地址:192.168.0.1。对于这种情况,使用192.168.1.10来操作是不会成功的。不过,即使将电脑IP改为192.168.0.10,使用Firmware Restoration软件上传固件也不会成功,具体原因不详。

如果没有在“内部网络(LAN) – 内网地址设置”更改过路由器的IP地址,那么就按官方文档设置电脑的IP为:192.168.1.10,子网掩码:255.255.255.0;
如果更改过路由器的IP地址,就按更改后的新IP段来修改,比如上面提到的192.168.0.10,子网掩码还是一样:255.255.255.0。
将网线连接在路由器的LAN口上,通过ping路由器的IP(192.168.1.1或192.168.0.1)查看电脑的IP是否已经设置正确。

我们以路由器IP为192.168.0.1,相应的设置电脑IP为192.168.1.10,子网掩码:255.255.255.0为例来进行后续的操作说明。

4 刷入原厂固件

这里我们用到一个工具:TFTP。在现代的Windows系统(Vista以后)中,这个工具无需下载,可以在Windows的控制面板程序管理中通过“启用或关闭Windows功能”来启用“TFTP客户端”功能。
打开命令行提示符,定位到固件所在目录D:\66u,执行如下命令刷入固件:

tftp -i 192.168.0.1 put RT-AC66U_3.0.0.4_380_8120-ge60d6e4.trx

经过漫长的等待,会出现如下提示:

Transfer successful: 31449088 bytes in 123 second(s), 255683 bytes/s

观察路由器的电源指示灯,当不再慢闪而是变成长亮时,说明固件已经刷入成功。

对于华硕路由器来说,这种方法仍然会保留原来的设置,此时可以通过浏览器访问192.168.0.1来查看是否能登陆路由器的管理界面;
如果不能登陆,可以尝试按“RESTORE”按钮5秒来重置路由器,此时所有配置会被清除,路由器地址变成192.168.1.1,待电源指示灯稳定长亮时,将电脑IP设置192.168.1.10,子网掩码设置为255.255.255.0来进行尝试访问路由器的管理界面。

为Debian 9 stretch的SSH登录安装并启用谷歌两步验证(google authenticator)

以密钥方式登录vps提供了更高的安全性,但以用户名密码登录vps的方式比用密钥方式更适用于经常多个地方登录的情况,此时需要加用两步验证防止用户名密码泄漏的情况。目前网上搜索到的教程多半已经过时,稍有不慎,容易配置失误导致自己无法登录vps。本文就如何在Debian 9上正确的设置谷歌两步验证做个介绍。

开始之前需要先有个Debian 9;
下文出现的命令都是一行一条,虽然有时可以全部复制一起执行,但不建议这么做,还是老老实实一行一行执行吧。无特殊说明均以root用户执行。

1 更新系统

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

2 安装所需的软件包

apt-get install wget make gcc libpam0g-dev git autotools-dev autoconf libtool qrencode -y

3 下载并安装两步验证源码

假设打算将源码放到/usr/local/src目录下:

cd /usr/local/src
git clone https://github.com/google/google-authenticator-libpam.git
cd google-authenticator-libpam/
./bootstrap.sh
./configure
make
make install

在安装信息中可以看到有这样一行:
libtool: install: /usr/bin/install -c .libs/pam_google_authenticator.so /usr/local/lib/security/pam_google_authenticator.so
这个信息提供了开启两步验证所需的最重要的文件的安装路径,很多教程无法成功启用两步验证就在于此。

4 修改ssh相关配置文件

4.1 修改sshd_config

将ChallengeResponseAuthentication的no改为yes:

vi /etc/ssh/sshd_config

...
ChallengeResponseAuthentication yes
...
4.2 修改sshd

在/etc/pam.d/sshd第一行后加入auth required /usr/local/lib/security/pam_google_authenticator.so。

vi /etc/pam.d/sshd

# PAM configuration for the Secure Shell service
auth       required     /usr/local/lib/security/pam_google_authenticator.so

# Standard Un*x authentication.
...

5 开启两步验证

当以root用户安装完两步验证后,需要针对某个用户启用两步验证,需要切换为该用户时才能正确启用。假设为名为jackson的用户开启两步验证,需要切换为该用户:

su jackson

然后运行如下命令配置两步验证:

google-authenticator

依次输入5个“y”并回车确认安装即可。
注意备份好密钥(secret key)和备用验证码(emergency scratch codes)。
重启sshd来使两步验证即时生效:

sudo service sshd restart

注意此时不要关闭ssh登录窗口。因为如果启用失败,而又关闭了这个已登录的窗口会把自己挡在外面的。

6 验证是否开启成功

用app扫描二维码或者手动输入密钥启用两步验证,然后打开一个新的ssh窗口尝试登录vps,以查看是否成功启用两步验证。

VPS上的Debian 8 jessie 升级到Debian 9 stretch 的方法

对于追新的一些人来说,总想使用最新的系统,但目前VPS上基本没有Debian 9 stretch的模板可用,但是有Debian 8 jessie的模板,这时就需要升级到Debian 9。在升级过程中,某些配置文件会被替换掉,比如开启了两步验证,更改了ssh端口等,更改起来还是需要耐心的,一不小心就登录不了了。所以建议能不更新就不要更新。如果要更新,就备份好文件,然后重装Debian 8,再升级到9。我们按照这个最保险的思路来进行吧。

1 重装Debian 8并更新系统

1.1 重装Debian 8

首先在vps上重新安装Debian 8,记下密码,以root身份登录vps后,可以看到系统版本为8.0:

cat /etc/debian_version
8.0
1.2 更新Debian 8

将Debian 8 更新到最新:

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

更新过程中,可能会碰到的情况:
更新到ca-certificates时暂停并跳出相关信息,按q即可。

2 更新软件包列表到Debian 9

备份Debian 8的软件包列表:

cp /etc/apt/sources.list /etc/apt/sources.list_Debian8

替换Debian 8 软件包列表到Debian 9:

sed -i 's/jessie/stretch/g' /etc/apt/sources.list

3 系统更新到Debian 9


apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y

更新过程中,可能会碰到的情况:
更新到ca-certificates时暂停并跳出相关信息,按q即可;
更新到apt时暂停并跳出相关信息,按q即可;
跳出Configuring libc6:amd64窗口时,选yes,回车后继续。

4 移除不再需要的软件包

apt autoremove -y

提取Google Pixel 2/Pixel 2 XL 原生自带壁纸和铃声的方法

从谷歌Google Pixel 2/Pixel 2 XL手机的工厂镜像中自己提取原生壁纸和铃声的方法如下:

1 首先解压工厂镜像

具体步骤在此。

2 获得原生壁纸和铃声

按第一步解压后得到system.ext4文件夹。

2.1 获取原生壁纸

找到system.ext4\system\app\WallpapersBReel2017\WallpapersBReel2017.apk,并使用7zip解压,在WallpapersBReel2017\res\drawable-xxxhdpi-v4文件中获得原生壁纸。

2.2 获取原生铃声

在system.ext4\system\media\audio\ringtones文件中获取原生铃声。
如The_big_adventure听起来还可以:

在Windows中解包Pixel 2/Pixel 2 XL Android Oreo 工厂镜像(system.img)

当尝试使用图形化工具,比如这个,解包谷歌手机Pixel 2/Pixel 2 XL Android 8.0/8.1 Oreo 工厂镜像(system.img)时,会遇到程序错误:

"A problem caused the program to stop working correctly. Windows will close the program and notify you if solution is available."

在Linux中运行file命令查看system.img的文件格式:

file system.img
system.img: Android sparse image, version: 1.0, Total of 655360 4096-byte output blocks in 21 input chunks.

其实这个格式,早在几年前就已经很容易解包了。以解包Pixel 2 XL 最新的 8.1 工厂包为例:

1 下载谷歌工厂镜像

taimen-opm1.171019.011-factory-2df1c1cb.zip
使用7zip解压taimen-opm1.171019.011-factory-2df1c1cb.zip,得到image-taimen-opm1.171019.011.zip,再解压得到system.img。

2 下载解包工具

simg2img工具包
解压simg2img_win-master.zip,并将第1步得到的system.img放至simg2img_win-master文件夹中。

3 解包 system.img

在simg2img_win-master文件夹中双击convert.bat,得到system.ext4.img,使用7zip解压system.ext4.img即可。

小米5X刷Mi A1 的ROM

更新

20180105 5x已离我而去,本文不再更新; 如有需要,请关注xda的大神Aex12的文章20171218 添加刷回MIUI官方固件的方法。 20171215 Mi A1 rom 更新为N2G47H.7.12.7 (Android N)版; Aex12更新了TWRP来配合升级N2G47H.7.12.7; 修复开启“设置-手势-滑动查看通知”后无效的bug。
很多网友上手5X后想尝尝原生Android的味道。小米5X和Mi A1有着相同的硬件配置,很多人尝试直接将Mi A1的rom刷入5X,但由于分区不同,直接刷会变砖。而且EDL模式(9008模式)需要打开后盖进行操作。

现在有个xda论坛的大佬,研究出一种相对简便的将Mi A1的rom刷入5X的方法。

1 首先是先将5X解锁

2 下载并准备所需文件:

2.1下载更新后的修改版的recovery,下载地址:
modded-twrp-tiffany-3.1.1-0.img

Size: 41781248 bytes
Modified: Friday, December 15, 2017, 8:33:27 PM
MD5: 963D425B04BF86AEFD51BA9A9A342ABD
SHA1: 3E4A9EAB684B2F219C32AA289027BCC83AB5C16B
SHA256: 6D6C8BCCBADA1FD7884D75F8B8C0BBE76A4EEB9AC8FFB4A7EF8F3BAFE3C58FCC
SHA512: EEE7DDE801F37D2147BCFC84A0A6CE2FB7AA8BAD0C92861C177C36886E4747DE0FB35313094573018D381073B3781191D9B3509DDBC0B955BC6506D244973511
CRC32: 21B646B3
2.2下载Mi A1的固件

目前是:
N2G47H.7.12.7 (Android N)
解压tissot_images_7.12.7_20171207.0000.00_7.1_ac947e5007.tgz,得到:system.img和boot.img。
将modded-twrp-tiffany-3.1.1-0.img、system.img和boot.img这三个文件放到安卓adb/fastboot工具包的目录中。

3 刷入recovery和固件

将手机进入fastboot模式(电源键+音量减),在命令行中定位到安卓adb/fastboot工具包的目录,用如下命令依次刷入刚下载的三个文件:

fastboot flash recovery modded-twrp-tiffany-3.1.1-0.img
fastboot flash system system.img
fastboot flash boot boot.img

4 按组合键(电源键+音量加)重启进入TWRP,依次点击高级(Advanced) > Aex12 Toolbox > Port A1 Rom

5 刷入Mi A1 的firmware

目的是解决滑动指纹传感器不能显示通知的bug。

5.1下载Mi Ai的firmware

5x-a1-partitions.zip
解压5x-a1-partitions.zip,将5x-a1-partitions文件夹内全部文件复制到安卓adb/fastboot工具包的目录中。

5.2刷入Mi Ai的firmware

进入fastboot模式(电源键+音量减),在命令行中定位到安卓adb/fastboot工具包的目录,输入flash_only_secondary.bat后回车,看是否刷入成功。
注意:之所有以命令行方式运行flash_only_secondary.bat,是因为可以查看到为何双击flash_only_secondary.bat一闪而过的错误信息,如:
安卓adb/fastboot工具包的路径中不能含有空格。

6 刷回MIUI的固件

折腾了谷歌原生的rom后,觉得也就那么回事,想刷回MIUI,详细步骤请参考官方教程
6.1 下载MIUI国行版的fastboot固件
6.2 下载刷机工具
6.3 将5X置于fastboot模式(电源键+音量减),按官方教程使用刷机工具刷入fastboot固件。