月度归档: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即可。