header image

破解中国移动家庭网关GS3101

起因

众所周知,宽带运营商们送的光猫带无线路由器的性能十分差。要想发挥宽带竹完全能力,必须配合独立的路由器,因此要把光猫改成桥接模示。为此,要使用超级账号。常见三大运营商的超级账号如下:

  • 中国电信
    • 用户名:telecomadmin
    • 密码:nE7jA%5m
  • 中国联通
    • 用户名:CUAdmin
    • 密码:CUAdmin
  • 中国移动
    • 用户名:CMCCAdmin
    • 密码:aDm8h%MdA

当然,凡事总有例外,比如标题中提到的这款中国移动GS3101。

动手

获取telnet权限

首先,准备好普通用户账号,这个一般可以在光猫的背面找到(如果你没改过的话)。

然后连接到光猫,为避免意外最好用有线连接。

用浏览器打开光猫的管理界面,你没改过的话是192.168.1.1。然后用上面准备好的普通账号登录。

登录进管理界面之后,访问一个地址:http://192.168.1.1/cgi-bin/getGateWay.cgi (如果你没改过)。

Family Gateway
Yes

有时会显示No,但不一定代表失败,可以接着尝试后续操作。

用telnet获取超级账号密码

首先我们要准备一个telnet客户端。这个选择就很多了。不过我还是偏好Putty这个能作多种用途的软体。

打开Putty,在主界面中的Host name一栏空中填入光猫的IP地址192.168.1.1。然后点下面Connection type选择Telnet,然后点最下方的的Open按钮开始连接。

然后就会打开命令行窗口,显示tc login提示输入用户名,使用下面的账号登录,输入之后回车。然后会出现Password提示输入密码,同样输入之后回车(注意输入密码时不会有任何符号显示,不要以为是没有输入进去)。

  • 用户名:admin
  • 密码:s2@We3%Dc#

登录成功之后,会出现命令行提示符#,表示你现在是root用户。

输入命令cat /tmp/ctromfile.cfg|grep passwd。不出意外的话,第一行就是我们要找的内容。

web_passwd="CMCCAdminHoVm1TQ0" display_mask="FF FF FF FF EF DF FF FF FF"
        <Entry1 Active="Yes" username="user" web_passwd="a99esmt*"
        <Entry2 Active="Yes" username="user3" web_passwd="1234"
telnet_passwd="s2@We3%Dc#" telnet_port="23" />
console_passwd="s2@We3%Dc#" />

第一行web_passwd=后面的引号内的内容就是超级账号的密码了。上面的例子中就是CMCCAdminHoVm1TQ0

我们还可以在这里获取宽带账号和密码。使用命令cat /tmp/ctromfile.cfg |grep USERNAME,然后可以看到如下内容:

CONNECTION="Connect_Keep_Alive" USERNAME="1234567" PASSWORD="13579"
CONNECTION="Connect_Keep_Alive" USERNAME="80025707493@VIDEO"
USERNAME="" PASSWORD="" WILDCARD="No" />

其中USENAME=后面的引号内就是宽带账号,PASSWORD=后面的引号内就是宽带密码(USERNAMEPASSWORD后面是空的那几行请忽略)。比如上面的例子里账号就是1234567,密码就是13579

修改光猫为桥接模式

还是使用浏览器访问光猫设置页面(182.168.1.1)。用户名是CMCCAdmin,密码就是上面我们获得的(上例中CMCCAdminHoVm1TQ0

登录后找到网络设置,在宽带设置下,在连接名称中选择带有INTERNET的项。将下面的模式改成Bridge即可。

设置路由器

这一步应该不用多介绍了,用自行准备的路由器的WAN口连接到光猫,然后在路由器上设置宽带模式为PPPoE,并使用上面获得的宽带账号来拨号。

最后

最后吐槽一下华为路由器,IPv6居然不支持穿透,只能支持PD。结果现在大多数运营商都不下发前缀,导致IPv6形同虚设。

在AMD CPU的Windows上使用官方安卓模拟器虚拟化加速

这篇文章讲述的是如何在使用官方的安卓模拟器时,在AMD CPU上打开虚拟化加速。

如果使用的是Intel CPU,虽然也可以使用本文的方法,但还是推荐直接安装使用Android SDK里用管理器就可以安装的的Intel HAXM。

安装Android SDK

首先你需要Android SDK,在SDK Manager中安装SDK Tools里的Android EmulatorAndroid Emulator Hypervisor Driver for AMD Processors (Installer)

启用Windows Hypervisor Platform

根据安卓官方文档的说法,你需要在Windows功能中安装Windows Hypervisor Platform。但是我在我的电脑上并没有找到这个选项,这就很尴尬了。

不过随着我找了一圈,还真找到了方法(https://blog.csdn.net/oldfish__/article/details/88641864),十分感谢。

把以下内容保存为.bat文件,然后右键、以管理员身份运行即可。

::%cd%代表的是执行文件的当前目录,强调bat是在哪里启动的     ->盘符展开后是可改变的
::%~dp0代表的是bat文件所在的文件目录,强调bat的文件位置     ->盘符展开后是不可改变的
pushd "%~dp0"
::通过通配符获取文件名到hypervisorplatform.txt
dir /b %SystemRoot%\servicing\Packages\*HypervisorPlatform*.mum >hypervisorplatform.txt
::循环+拼接安装命令
::/quiet表示静默安装,/norestart表示无需重启(这些参数可酌情使用)
for /f %%i in ('findstr /i . hypervisorplatform.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
::删除txt
del hypervisorplatform.txt
::启用
Dism /online /enable-feature /featurename:HypervisorPlatform /LimitAccess /ALL

pause

根据提示重启即可。

AVD Manager

然后我们用安卓SDK自带的AVD Manager添加虚拟机运行即可。

在Ubuntu上使用AMD Radeon RX 5700 XT显卡

由于Ubuntu 19.10锁定的内核版本太低,导致AMD最新的RDNA架构显卡无法在Ubuntu下使用。根据Ubuntu的更新规律,很可能要到下一大版本(20.04)才有可能使用新内核,所以只好自己动手了。

以下方法适用于Ubuntu 19.10及之前的Ubuntu版本(18.04 LTS可以安装AMD官方提供的驱动,所以可以不参考本文)。适用于AMD Navi 10显卡(Radeon RX 5700、Radeon RX 5700 XT及Radeon RX 5700 XT 50周年版),如果将来可以找到其他适用的固件,也可用于Navi 14等显卡。

废话不多说,下面就是具体步骤。

安装新Mesa驱动

理论上,我们需要自己编译。但幸运的是,已经有人编译好放到Launchpad上了,感谢!

用如下命令添加PPA源即可:

sudo add-apt-repository ppa:oibaf/graphics-drivers

根据提示完成添加,然后按照常规方法更新软件包即可。

安装新内核

Ubuntu的内核源码在https://kernel.ubuntu.com上,但我们也不用自己编译,已经有人提供了工具。

和上面一样,添加一个PPA源:

sudo add-apt-repository ppa:cappelikan/ppa

按照提示添加后,再安装我们需要的工具:

sudo apt-get install mainline

安装好后从软件菜单里找到Ubuntu Mainline Kernel Installer运行。加载可能有点慢,加载好之后左边就是现在可以使用的内核,Status可以看到是已安装Installed或者正在运行Running的内核。右边的按钮从上到下依次是:刷新Refresh、安装Install、删除Remove、彻底删除Purge、查看变更日志Changes、设置Settings。

我们在左边选中需要安装的内核版本(对于RDNA显卡需要5.3以上内核),然后点安装Install即可。

等待下载安装结束,就可以关闭软件了。

下载新固件

我们还需要固件才能让显卡正常工作。目前只有Navi 10的,对于新的Navi 14(或以后其他核心)还暂时没有。

固件在https://people.freedesktop.org/~agd5f/radeon_ucode/navi10/,访问之后将所有的bin文件下载回来即可,当然,也可以用一条命令搞定:

wget -nd -np -P navi10 -r 'https://people.freedesktop.org/~agd5f/radeon_ucode/navi10/' --accept-regex='.*\.bin$'

-P navi10表示下载到navi10这个目录下,-nd表示不创建子目录,-np表示不下载父目录,-r表示递归下载(自动识别页面内的链接并下载),--accept-regex='.*\.bin$'表示只递归下载bin文件。

下载好之后,我们将所有bin文件复制到/lib/firmware/amdgpu/目录下即可。

cd navi10
sudo cp navi10* /lib/firmware/amdgpu

最后一步

以上就完成了所有工作,重启即可。

因为非正式版的内核没有经过安全启动签名,所以会有可能无法启动(提示Invalid Signature),需要到UEFI设置中关闭安全启动才行。

重启之后,显卡就能正常工作了,如果有任何问题,欢迎留言探讨。

附:如何卸载

如果以后出新的Ubuntu了,我们要在更新之前卸载上面安装的文件。

对于固件,直接删除即可。

对于内核,只要用Ubuntu Mainline Kernel Installer删除最新的内核,重启之后就会自动用稳定版内核启动了(默认是使用最新的内核启动,只要稳定版内核是已安装的最新版内核即可)。

对于驱动,我们除了删除PPA源之外,还需要还原原版的软件包,这时候我们需要另一个工具ppa-purge

sudo apt-get install ppa-purge

然后卸载即可。

sudo ppa-purge ppa:oibaf/graphics-drivers

按照提示操作即可。

百度网盘下载之bypy

百度网盘现在各种限制,就是逼着用户付款,而且还要付最贵那档才给不限速。吃相这么难看,实在很难让人想给他钱。所以现在各种破解横行。不过我这里要介绍的bypy并不是一种破解方案,所以速度实际上也只能达到300KB/s(但总比10KB/s好),存储目录也不能随意设置,好处就是可以挂在NAS上。

简介

bypy的GitHub仓库:

bypy其实是一个调用百度网盘API的第三方应用,也就是将百度盘作为应用数据存储的地方(比如输入法存储词库这种的),只不过bypy是用这种方法来实现了百度网盘的命令行客户端。

由于是应用数据,所以存储的目录被固定为了我的应用数据/bypy,不过好在可以在百度网盘中将数据复制移动出入这个目录,所以问题不大。

项目作者已经停止了开发,进入了维护期,也许有一天百度网盘关闭或修改API就用不了了。不管怎么样,还是感谢作者。

安装

bypy是一个Python项目,所以只要有Python环境就可以使用。考虑到依赖的问题,我们使用pip来安装。

如果你还没有pythonpip环境,在Ubuntu下可以通过如下命令安装(Windows中可以用WSL的Ubuntu):

sudo apt-get install python python-pip

其他系统也是安装这两个软件包(包名可能有所不同)就可以了。注意,这里的python包要2.X版本的,如果默认的是3.X版,需要安装2.X的软件包(比如python2.7python2.7-pip)。

安装好后就可以直接用pip安装bypy了。

pip install bypy

但是由于pip的源在境外,有可能速度不理想,我们可以用清华大学的镜像:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bypy

pip会自己解决依赖关系,上面我们的安装没有使用sudo,所以仅是针对当前用户的。

使用

初次使用时需要设置百度网盘API key。我们随便用一条命令即可开始设置:

python -m bypy info

命令太长?我们可以加一个别名:

alias bypy='python -m bypy'

执行上面的命令之后,我们就可以用bypy来代替那一长串命令了。为了不每次进终端都要执行上面的命令,我们可以在当前用户的home目录下新建一个.bash_aliases文件(~/.bash_aliases),然后把上面这条命令添加进去,这样每次进终端都可以直接使用bypy命令了。

执行之后会给你一个网址,访问之后就可以得到API key(需要用百度网盘账号登录),然后复制或输入到命令行中即可。如下所示:

user@WIN10-PC:~$ bypy info
Please visit:
https://openapi.baidu.com/oauth/2.0/authorize?scope=basic+netdisk&redirect_uri=oob&response_type=code&client_id=q8WE4EpCsau1oS0MplgMKNBn
And authorize this app
Paste the Authorization Code here within 10 minutes.
Press [Enter] when you are done

输入Key之后回车确认,等一会儿获取授权之后就提示Successfully authorized并且会列出空间使用情况,这就成功了。

bypy命令结构很简单,就是bypy [操作],操作除了上面的info之外,常用的还有listdownloadupload。更多操作以及选项请直接运行bypy不加任何操作来查看。下面只介绍常用的。

列出文件

bypy list就是列出网盘目录(即我的应用数据/bypy)下的文件,每个文件或目录一行,每行有4~5列数据。第1列是类型,D为目录,F为文件;第2列为文件名或目录名;第3列为占用的空间大小(字节);第4列为修改时间;第5列为文件的Hash值。

例如:

user@HOST:~$ bypy list
/apps/bypy ($t $f $s $m $d):
D foo 0 2019-08-06, 23:08:15
F cn_windows_10_consumer_editions_version_1903_updated_aug_2019_x64_dvd_4c9cbf0b.iso 5306406912 2019-09-12, 19:31:11 7722dbe0ccebebe215fb8f0646450079
F win10-64bit-radeon-software-adrenalin-2019-edition-19.9.1-sep10.exe 435216696 2019-09-12, 21:08:51 cba1369bde139fffea4a3f5fef4c60c5

我们还可以在后面加上子目录名来显示子目录的文件列表,如:

bypy list foo

list可以简写为ls,和Linux常用命令一样。

下载文件

下载文件就直接bypy download <远程文件或目录路径> [本地目标路径]即可(尖括号<>里的内容表示必需,方括号[]表示可选)。随后就会调用自带的下载器下载。如果本地目标路径是目录,那么文件或目录就会下载到其中;如果文件或目录不存在,则会新建;如果文件存在,则会检查是否和远程文件匹配,如果不一样则会覆盖目标文件,如果一样则不做操作。

但是这样下载并不能达到最大速度,因此我们需要第三方下载器。bypy只支持aria2,所以我们安装aria2就行了。

sudo apt-get install aria2

aria2是一个非常好用的命令行下载工具,以后有机会再详细介绍。

然后我们需要用参数--downloader aria2来让bypy调用aria2下载,还可以用--downloader-arguments来设置aria2的参数,在此不细说了,请自行研究。

用aria2下载文件:

bypy --downloader aria2 download cn_windows_10_consumer_editions_version_1903_updated_aug_2019_x64_dvd_4c9cbf0b.iso

下载目录:

bypy download foo

下载目录时要注意两点:1、bypy会递归下载目录,也就是说会把目录中的内容一起下载下来;2、bypy会把目录里的内容放在当前目录。比如上面的目录foo中如果有个文件bar,那么bar会放到当前目录,而不是在当前目录新建一个foo然后把bar放进去。如果要下载到foo里,我们需要指定目标路径。

bypy download foo foo

上传文件

上传文件和下载正好反过来。bypy upload <本地文件或目录路径> [远程目标路径],操作也大同小异,因此就不细说了,唯一要说明的是,上传文件会检查文件校验,如果文件是百度已经收录过的,那么就可以做到秒传。

文件操作

bypy可以对远程文件直接进行复制、移动、删除操作,复制的命令是copy(简写cp,移动命令是move(简写mv)或rename(简写ren,重命名实际就是移动操作,两者等价)。命令你个后面加上目标即可。比如:

bypy copy foo foo2
bypy move foo2 foo3
bypy ren foo3 foo/foo3

删除就是deleteremove(简写为rm)后面跟着要删除目标就行了。

bypy rm foo/foo3

其他

bypy还有很多其他操作,比如添加、取消、列出离线下载,比较文件,同步上传、下载目录等等,感兴趣的请自行研究,这里也不细说了。

还有

bypy一段时间闲置之后会丢失token,很不方便。如果是在NAS上用的话,我们可以定时刷新一下。只要在crontab中添加一条定期执行info操作的命令,周期设定为每星期一执行。

在需要修改crontab的用户下执行该命令:

crontab -e

然后添加如下一行:

3 4 * * 1 python -m bypy info

crontab中要用完整的命令,不能用别名。执行时间为每星期一的凌晨3点4分。保存就行了。

最后

感谢bypy的作者,虽然百度云现在已经退出Linux版了,但主要面向的还是图形介面,命令行下能有bypy这样的工具很不错。

如何激活锁区的Steam游戏 [2019-09-10更新]

2019-09-10更新

由于Steam修改规则,只要钱包区域不是俄罗斯就不能激活俄区key,反之,如果钱包区域是俄罗斯则不用云激活也能激活俄区key。因此本文方法几乎失效(有部分游戏允许中国区激活,可以直接购买激活)。

强烈不建议将现有账号钱包区域更改为俄罗斯,因为这样涉及跨低价区,有被收回游戏甚至封号的危险!可以注册一个俄区下小号用于俄区游戏的激活(需要全程俄区IP操作,具体方法请自行研究)。

[之前讲过跨高价区购买Steam游戏的方法。这次来讲讲安全地跨低价俄罗斯区的购买方法吧。

Yuplay等网站上经常会有价格便宜的俄区游戏出售,但是经常是锁激活(只能在指定的地区IP下激活)和锁运行(只能在指定的地区IP下运行)的。那么如何判断是否锁区,又该如何激活和运行呢?

购买

注册

因为这篇文章重点不是如何在Yuplay购买游戏,所以购买过程就简单讲讲了。

首先点页面右上角的Войти(登录)进入登陆页面,然后在右边的登录框上面有一个Зарегистрироваться(注册),点击后进入注册页面。有两个输入框,填写两遍Email,下面两个选择框,第一个是同意条款,第二个是订阅优惠信息,填好后点下面的Зарегистрироваться(注册)按钮即可。然后密码会通过邮件发给你,去注册邮箱里检查邮件就行了。

改密码

其实随机生成的密码比较安全了,如果不习惯,可以修改密码。首先还是进入Yuplay,点右上角的Войти(登录)进入登陆页面,然后登录框里填入EmailПароль(密码),点Войти(登录)按钮登陆即可。登陆后就来到了个人页面,左边有一排链接,其中Личный кабинет(个人账户)下的Редактировать профиль(编辑档案)点进去就可以改密码了。

点进去后有四个输入框,第一个Email不用解释了,如果要修改Email就修改之后点下面的第一个Изменить(修改)按钮即可。第二个输入框Ваш действующий пароль(当前密码)填入当前的密码,第三个Новый пароль(新密码)和第四个Повторите пароль(重复密码)填入新密码,然后点下面的第二个Изменить(修改)按钮即可修改密码。

查看游戏是否锁区

注意,此方法仅适用于已发售游戏,无法用于预购游戏。

进入Yuplay,找到要购买的游戏。比如全面战争:三国。如果是页面的左边一栏下面,可以见到一个Steam SUB_ID,设个SUB_ID之前的文章讲过了。这次就不详细说了。总之,我们打开SteamDB的Sub详情页https://steamdb.info/sub/SUB_ID/info,其中SUB_ID替换为Yuplay上看到的SUB_ID(全站三国就是https://steamdb.info/sub/340375/info/ ),打开页面后可以看到红色的警告框This package is only purchasable in specified countries,说明这是锁激活的,下面的国家和地区里并没有中国,所以我们只能通过特殊手段激活了。如果是锁运行的,还能见到另一个警告框This package can only be run in specified countries,比如这个猛汉王:https://steamdb.info/sub/289476/info/ (不过这个锁激活和锁运行都是中国区,所以不需要特殊方法)。

购买

购买就简单了,登录之后,在游戏页面点右上方价格旁边的Купить(购买)按钮即可加入购物车。之后会进入购物车页面,我们可以把多个游戏加入购物车一起付款。点击页面右上角的Корзина(购物车)链接也可以进入购物车页面。

购物车页面中有已加入购物车的游戏的Название(名称)、Цена(价格),右边是Удалить(删除)选择框,如果要把游戏从购物车中删除,勾选这个选择框后点下面的Изменить(修改)按钮即可。

再下面是支付方式,熟悉的支付宝、微信、银联不用多解释了。

再下面Вы покупаете(你购买的是)是礼物选项,可以选择Себе(为自己)还是В подарок(作为礼物)。

最下面Всего к оплате就是总价了,右边的绿色按钮Перейти к оплате(转到支付)点击就对跳转到支付网站了。右边的输入框Введите код для получения скидки(输入代码获得折扣)可以输入打折码,输入后点Активировать(激活)使用。

查看激活Key

购买成功后,就可以领Key了,首先还是回到Yuplay,页面右上角的第一个链接Мои покупки(我的购买)点进去,就能看到已购买的游戏列表。列表最右边的Статус(状态)一栏,如果是Успешен(成功)就可以提取Key了。Успешен下面会有一个подробнее(更多)链接,点进去后就能看到Key了,有的Key是直接可以复制的,有的会提供图片,只要注意Steam Key一般是AAAAA-BBBBB-CCCCC这种5-5-5的格式就行。

激活锁区Key

如果Key锁区,我们可以用当地VPN激活。不过其实有更方便的选项——云激活,感谢Makazeu的无私奉献。

进入云激活网站后,选择需要激活的地区,点进去即可(需要点那个圆形的箭头图标)。然后用Steam账号登录(AuthCode即手机令牌,如果没有启用请先下载手机应用启用令牌。或者使用邮箱令牌的话,这里先不填,然后点登录按钮之后会弹出提示让你填写)。

但如果这里我们直接登录进去,会发现上面的IP地理位置会显示CN(或你登录的其他地区),这个时候是无法激活俄区Key的,所以我们要先完全退出账户。

完全退出账户

首先,关闭所有Steam客户端(关闭即可,不必登出)。

然后,在手机Steam应用里退出登录。退出登录后令牌仍然可以使用,不用担心。

这时,尝试使用云激活登录,如果IP地理位置还是CN(或你登录的其他地区),那么在浏览器里打开Steam商店,登录之后,点右上角你的用户名,然后点账户明细,然后往下找到账户安全,点击管理Steam令牌。进入管理Steam令牌页面后,点下面的取消对其他所有设备的授权

这个时候就完全退出了。如果没有就再来一次,然后注销网页登录(点右上角你的用户名,点注销)。

登录俄区

然后再尝试使用云激活登录,这时应该就可以看到IP地理位置是RU了。在Steam Key下面的输入框填入Key,然后点激活KEY即可,页面下方会显示激活状态。

如果好用,就给网站作者打赏吧!

运行锁区游戏

如果游戏不光是是锁激活,还锁运行怎么办呢?

一个办法是等3个月,3个月后就不锁运行了。但这肯定不是我们要的方法。

还有一个方法还是利用云激活,感谢Makazeu的无私奉献。

我们还是用上面的方法登录云激活,确保IP地理位置是RU之后,不要关闭网页,马上打开Steam客户端。然后我们通过在浏览器地址栏,或者Windows运行窗口(Win+R),输入steam://nav/console之后回车,就可以打开Steam控制台。然后我们在下面的命令框里输入user_info之后回车,就可以显示用户信息了,其中IPCountry如果是RU,那么恭喜你,你已经成功跨区了,这个时候就可以安装运行锁运行的游戏了。

之后只要不关闭电脑和Steam客户端,就可以一直保持IPCountryRU一直爽了。如果要回到国区(比如要接收礼物等等),可以先按上面的完全退出账户的方法退出,然后再打开Steam客户端即可。

最后

不说了我要去爽了。