作者归档:CD

在 Mac 或 PC 上更改Apple ID 国家或地区为美国的方法

将iCloud数据放到中国有国家安全和苹果方面的考虑,云上贵州也会为当地带来经济增长。大家都注意到了隐私声明:《iCloud(由云上贵州运营)条款与条件》中有意思的地方之一:

您理解并同意,苹果公司和云上贵州有权访问您在此服务中存储的所有数据,包括根据适用法律向对方和在彼此之间共享、交换和披露所有用户数据(包括内容)的权利。

虽然明知早已没有隐私,但是仍有人以为更改国家和地区就可以避免将iCloud数据存放在云上贵州从而避免所有数据被有权访问。有些人尝试了但没有成功,卡在付款方式那里,没有“无”这个选项。

付款信息为何没有“无”

苹果官方给出了“如果您无法在编辑 Apple ID 付款信息时选取“无””的解释和解决方案,简要的记录如下:
1 如果您有未付余款或应付账款
您必须先付清余款,然后才能选择“无”作为付款方式。
2 如果您有自动续订的订阅
除非您取消订阅,否则可能无法选择“无”。
3 如果您是首次使用 iTunes Store 或 App Store
如果您是首次通过现有的 Apple ID 来使用商店,则必须提供付款方式。创建帐户后,您可以将付款信息更改为“无”。
4 如果您不在创建的 Apple ID 所属的国家或地区
如果您是首次创建 Apple ID,而且创建时身处这个 Apple ID 所属的国家或地区之外的地方,那么您必须输入付款方式。这种情况下,您无法选择礼品卡或商店余额作为付款方式。
例如,如果您身处美国,但所创建的 Apple ID 的账单邮寄地址却在中国,那么您将无法选取“无”作为付款方式。
5 如果您更改了帐号所属国家或地区
当您更改现有 Apple ID 所属的国家或地区时,必须提供付款方式并更新您的账单选项。这种情况下,您无法选择礼品卡或商店余额作为付款方式。更改国家或地区后,如果您要移除付款方式,可将付款信息更改为“无”。
6 如果您是“家人共享”的一员
当您设置“家人共享”时,家庭组织者必须提供有效的付款方式。这个付款方式将用于家庭成员发起的所有购买,且只有家庭组织者可以更改。
如果您要停止使用“家人共享”,可以解散您的家庭群组。

可行的做法

参照上面的条目逐一排查,该付清的付清,该取消的取消,该解散的解散,然后全程使用美国IP,按照官方提供的方法:在 Mac 或 PC 上更改您的国家或地区,使用iTunes进行操作。
1 打开iTunes,登陆Apple ID。
2 从您电脑屏幕顶部或 iTunes 窗口顶部的菜单栏中,选取“帐户”>“查看我的帐户”。
3 在“帐户信息”页面上,点按“国家或地区”右边的“更改国家或地区”。
4 从“选择国家或地区”菜单中,选择新的国家或地区,比如:美国。
5 下拉阅读条款与条件以及 Apple 隐私政策,两次点按“同意”。
6 在付款信息页面,付款方式选择无,付款地址找一个免税州,比如俄勒冈州(Oregon)的某地址,点按“继续”完成更改。

注:上文主要的讲的是更改国家和地区的方法;
如果是想创建美国Apple ID的话,那么还是全程美国IP,在iTunes中下载一个免费应用,按照提示操作就可以了。

解决Chrome书签管理器无法打开的问题

1 出现的问题

谷歌浏览器Chrome的扩展程序书签管理器(Bookmark Manager)在Chrome某次版本升级后就打不开了。具体情况是,点击Chrome状态栏右侧“三个竖点” > “书签(Bookmarks)” > “书签管理器(Bookmark manager)”,会出现如下提示:

eemcgdkfndhakfknompkggombfjjjeno is blocked

Requests to the server have been blocked by an extension.

Try disabling your extensions.

ERR_BLOCKED_BY_CLIENT
eemcgdkfndhakfknompkggombfjjjeno 已被屏蔽

对服务器的请求已遭到某个扩展程序的阻止。

尝试停用扩展程序。

ERR_BLOCKED_BY_CLIENT

2 解决的方法

在地址栏中输入:

chrome://flags/#enable-md-bookmarks

将默认的“Default”改为“Disabled”,重启浏览器,问题解决。
原因是Material Design书签功能目前存在bug,关闭就好了。

使用qBittorrent时遇Kernel Power 事件 ID 41 错误致windows 10 重启一例

1 问题描述

环境:windows 10 64位操作系统,博通ac网卡
之前用IDM下载文件,看电影等任何操作,一切正常。但使用qBittorrent下载种子时,短则几秒,长也不到一分钟,电脑就直接黑屏重启。且没有蓝屏错误代码出现。

2 问题分析

简要说一下排除步骤吧。

2.1 事件查看器(Event Viewer)

因为没有蓝屏代码,首先查看Windows X 系统自带的事件查看器,在Windows 日志 > 系统下,可以看到一条红色叹号图标的“关键(Critical)”错误,类似如下:

系统已在未先正常关机的情况下重新启动。如果系统停止响应、发生崩溃或意外断电,则可能会导致此错误。
The system has rebooted without cleanly shutting down first. This error could be caused if the system stopped responding, crashed, or lost power unexpectedly.
…
来源(s):       Kernel-Power
事件 ID(E):    41
级别(L):       关键

按照Kernel-Power 41 检索,发现微软有一篇技术文档来说明此问题,有点符合场景三的描述:Scenario 3: The system randomly restarts and no Stop error BugcheckCode is listed, or the computer is completely unresponsive (hard hang)。系统随机重启,且未列出关机的相关错误代码,或者电脑完全没有反应(硬件故障)。可能原因是:超频,内存问题,电源问题,过热。显然都不太是。
此外有人建议更新声卡驱动来解决这个问题,经测试无效。

2.2 Windows 10 调试工具(Debugging Tools for Windows (WinDbg, KD, CDB, NTSD))

微软提供了一个新的诊断工具:Windows 调试器 (WinDbg),我们按方法三来安装一个独立运行的版本,在安装Windows 10 SDK时仅勾选 Debugging Tools for Windows来安装。
微软该技术文档,将系统错误日志Minidump(位置在“C:\Windows\Minidump\”文件夹中)复制到桌面,打开WinDbg,在其菜单栏依次点击File > Open Crash Dump…来打开dmp文件。
待出现Bugcheck Analysis信息后,点击 !analyze -v来进一步分析错误原因。可以看到比较可疑的地方:

…
Probably caused by : bcmwl63a.sys ( bcmwl63a+8ef6f )
…
6: kd> .trap 0xffff8f805fd6a5d0
NOTE: The trap frame does not contain all registers.
Some register values may be zeroed or incorrect.
…

看起来是wifi驱动bcmwl63a.sys导致的问题,这是一个老生常谈的问题了。

2.3 更新WIFI驱动

出问题的Wifi网卡是博通的ac网卡BCM4352,驱动是Windows 10自带的:

驱动提供商:     Broadcom
驱动日期:       7/6/2015
驱动版本:       7.35.290.0

找到比较新的是联想提供的这个版本:

WLAN Driver (Atheros, Realtek, Broadcom) for Windows 7 (64-bit) - Lenovo B41-35, B51-35

Document ID: DS103113
Release Date: 12/28/2017

下载7gb301wf.exe并双击释放到c盘后,通过在设备管理器中右键更新驱动,并指向该文件夹来更新驱动,升级后的驱动是如下版本:

驱动提供商:     Broadcom
驱动日期:       7/20/2015
驱动版本:       7.35.295.2

打开qbittorrent测试,真的是好了一会会,没有一打开几秒钟就崩溃。但是一个多小时后问题又出现了,还是这个bcmwl63a.sys的错误。

2.4 禁用tereto(IPv6)

网上有使用bittorrent时出现该问题的情况,但更新Wifi驱动或者使用旧版驱动后问题依旧。不过在回帖中technonymous提到禁止teredo (ipv6)可解决该问题,以管理员方式运行命令行提示符,输入如下命令:

netsh interface teredo set state disabledok.

暂时正常,仍在观察中。
原因可能是因为qbittorrent等bt软件需要发送接收大量udp包,与tereto隧道兼容不好所致,尽管根本没有IPv6。微软有一篇文档提到:因为操作系统无法分配足够的堆栈空间为 UDP 数据包有许多内核过滤器 driversinstalled 时,将出现此问题。该文档中有一句:UNEXPECTED_KERNEL_MODE_TRAP,而在我的WinDbg中也有一行:6: kd> .trap 0xffff8f805fd6a5d0,不知是否有关。

wordpress博客启用 UpdraftPlus作者的两步验证插件后登陆时不跳出验证码界面的解决办法

使用两步验证插件来保护wordpress登陆是个常用安全防范措施。来自大名鼎鼎的wordpress博客备份工具UpdraftPlus作者的Two Factor Authentication是个很方便使用的两步验证解决方案。

碰到的一个尴尬情况

启用这个两步验证插件后,正常情况是,在wordpress登陆界面输入用户名和密码后,点击登陆,会自动跳转到输入两步验证码的界面。但有时候输入用户名和密码后,点击登陆后,两步验证码的界面一直不出现,而是看到登陆按钮左边有个圈一直转啊转。

解决办法

尝试使用带www和不带www的域名地址登陆,看哪个可以成功出现两步验证码的界面。
我的碰到的情况是使用co1dawn.com/wp-login.php登陆时就会出现上面的尴尬情况;
这时加上www,即登陆www.co1dawn.com/wp-login.php就会正常出现两步验证码。
也许你是相反的情况。

华硕路由器或刷了梅林的路由器导致光纤宽带PPPoE连接每天断线的解决办法

碰到的现象

使用华硕路由器或者其他路由器刷了梅林固件后,梅林固件本质上就是华硕固件改版而成(描述可能不太准确),通过PPPoE方式进行的光纤连接,差不多每天都会断线,并且不会自动重连,需要重启路由器和光猫才能重新连接上网。

可能的原因

华硕或梅林固件有个叫“网络监测”(Internet Detection)的功能,该功能默认开启,通过PPP echo方式发送数据包到ISP处并取得回应来保持宽带连接,当重试10次得不到回应时断开连接。早在2013年就有人提出更改PPP echo设置会导致PPPoE断线
这个问题并不是十分常见,估计是因为仅部分地区的ISP路由设备未对路由器发出的PPP Echo进行回应所致。

解决的方法

很简单,就是关闭该功能。
登陆路由器,依次定位到:
外部网络(WAN) > 互联网连接 > 帐号设置 > 网络监测
将默认的PPP Echo改为关闭
因为该问题引起的原因是和PPPoE相关,因此当使用华硕路由器或其他路由器刷了梅林固件后出现PPPoE断线问题时,不管是光纤还是普通宽带都可以尝试该方法。
如果是ISP所谓主动断线来释放IP就无效了。

华硕路由器(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即可。