Kindle 4 第一课:SSH 到 Kindle

Kindle 4 还是很容易“越狱”的。严格来讲,不算是越狱,因为不需要寻找漏洞就可以直接 SSH 到你的 Kindle。

SSH 到 Kindle 有什么用呢?其实 Kindle 就是一部基于 Linux 和 Java 的小电脑,SSH 后可以干很多事情,比如换字体、换屏保、去广告等等。由于 4.0~4.0.1 版的 USBnet 还暂时没有封闭,使用 root 账户和对应的密码可以轻松登入根分区进行各种修改。此文介绍一下登入 Kindle 4 SSH 的方法。


方法一:直接使用 USBnet 登入

首先,你需要一个 SSH 客户端,*nix 下的 Terminal 或者 PuTTY 都是可以的。

接下来,开机后按下菜单键打开菜单,选择 Settings→Device Info→Serial Number找到序列号,记下来。

然后,使用下面这个 Python 脚本生成 root 密码:

#!/usr/bin/env python
import hashlib
print("fiona%s"%hashlib.md5("XXXYOURSERIALXXX\n".encode('utf-8')).hexdigest()[7:11])

当然,你也可以使用这个工具在本页面上生成密码:

Kindle SSH 密码: 请输入序列号

如果你是 Windows XP 用户,你还需要下载一个 RNDIS Ethernet 驱动: RNDIS Ethernet Driver

接下来就开始进入调试模式了。将你的 Kindle 插到电脑上,然后在 Kindle 的根目录下新建一个空文件,命名为“ENABLE_DIAGS”,弹出你的 Kindle 但不要拔下数据线。按菜单键进入菜单,选择 Settings 进入设置界面。再次按菜单键进入菜单,选择 Restart 来重启 Kindle。

重启以后过一会儿会出现 TEQUILA - Systen Diags,即 Kindle 的调试模式。按五向键的下键将光标移到 "N) Misc individual diagnostics",按下五向键中间的确认键进入子菜单。
然后在新的菜单中选择最后一项 "U) Utilities",确认进入后再选择第二项 "Z) Enable USBnet",然后按照提示按一下五向键的右键退回刚才的菜单。

这时电脑会找到叫 "RNDIS\Ethernet card" 新硬件,按键盘上 Win+R 打开运行,输入 "devmgmt.msc" 打开设备管理器,便能看到一项未知设备。双击打开并升级驱动:
- 如果你是使用 Windows XP,解压上面下载的驱动并安装;
- 如果你是使用 Windows Vista/7,选择手动浏览驱动→自选驱动→网络适配器,厂商选 "Microsoft Corporation",驱动选择 "Remote NDIS Compatible Device",并强制安装此驱动。

安装驱动后会在网络中心找到一块新网卡。右键打开属性,设置 IPv4 选项,IP 地址设为 "192.168.15.200",子网掩码设置为 "255.255.255.0"(一般会自动填写,不去管它好了)。

这时候你就可以打开你的 SSH 客户端登陆到 Kindle 了。主机地址为 "192.168.15.244",类型为 "SSH",账户为 root,密码就是上面使用序列号生成的密码。如果密码不正确,请使用 "mario" 作为密码就可以登陆了。

登陆后需要修改主分区的话,请先挂载主分区:

mount /dev/mmcblk0p1 /mnt/base-mmc

(P.S. 所有修改需以 /mnt/base-mmc/ 作为根目录进行)

当修改完成后,请执行:

umount /dev/mmcblk0p1

取消主分区的挂载,然后登出 SSH 客户端,拔掉数据线,连按两次右键退出到调试模式主菜单,选择 "D) Exit, Reboot or Disable Diags",确认进入子菜单,然后选择 "D) Disable Diagnostics",确认进入后按左方向键重启到正常模式。

方法二:使用 Wi-Fi 登入

如果你希望使用 Wi-Fi 登陆到 Kindle 方便以后的修改,那么可以按照下面的方法在正常模式下登陆到 SSH。

首先按照上面的方法登入 SSH,然后执行:

mount /dev/mmcblk0p1 /mnt/base-mmc

挂载 Kindle 的主分区(所有的系统文件保存在这里),然后

cp -r /usr/local /mnt/base-mmc/usr/
sync

复制调试模式的 scpd 到主分区并同步内存,以便在正常模式下也能 SSH 到 Kindle。最后

vi /mnt/base-mmc/etc/sysconfig/iptables

打开防火墙规则,在最后的 COMMIT 之前添加一行:

-A INPUT -i wlan0 -p tcp --dport 22 -j ACCEPT

开通 SSH 需要的 22 端口。

修改完成后退出调试模式,开机后即可使用 SSH 登入到 Kindle 了。如果上面一中方式中使用的密码提示错误,请使用另外一个密码登陆。

另外请注意,根分区默认挂载为只读属性,要打开写入,请执行:

mntroot rw

所以,在执行完操作后,请将根分区改回只读:

mntroot ro

P.S. 请注意在屏保模式下 Kindle 会断开 Wi-Fi 连接,请按电源键恢复后尝试连接。还有,和调试模式不同的是,此时的系统分区已经挂载至 "/",所以不需要以 "/mnt/base-mmc" 作为根目录修改。

Acknowledgement:
Javascript MD5
Get root password with Python and SSH via Wi-Fi
RNDIS\Ethernet Driver for XP

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.