使用dd和nc将手机内部存储直接备份到电脑


因为打算自己编译一个CyanogenMod14.1给我的Zenfone 5,要备份一下文件。但是忘了之前在哪里看到用nc和dd通过usb传输备份文件到电脑。又忘了nc怎么用,我实在太懒,就在Google上搜索现成的教程。刚好看见一个知乎提问,方法类似,多个gzip而已(安卓使用dd命令备份镜像如何加入gzip压缩参数? - 知乎)。于是我就先在这里备份一下,避免下次用到又忘了怎么用。

首先你得有adb。

然后将手机连上电脑,用adb devices确认已经连接上了,并且显示的是device而不是unauthorized什么的。

adb forward tcp:2333 tcp:2333转发端口。2333是端口号,tcp是协议。第一个是电脑上的监听端口,第二个是手机上的端口。

接着adb shell su进入shell模式并且获取得到root。

nc -p 2333 -L dd if=/dev/block/mmcblk0

(如果nc版本不同,命令的使用也不尽相同。在某些版本中,上面命令的写法是nc -p 2333 -l -e dd if=/dev/block/mmcblk0)

我这里备份的是整个mmcblk0,如果你只要其中一个分区那就先fdisk -l /dev/block/mmcblk0不过我的手机没有成功列出分区表,也许是GPT分区表的锅。你也可以通过ls /dev/block/by-name通过名字找到你的数据分区(比如说data,那命令就是nc -p 2333 -L dd if=/dev/block/by-name/data),当然也可以直接用mount命令找到你想要分区的挂载点。

至此,手机上的准备结束。

QQ20161106-1.png

电脑上也很简单。

shell里一句话nc 127.0.0.1 2333 | pv -i 1 > asus_t00f-20161106-backup.img就可以了,后面的asus_t00f-20161106-backup.img是电脑上接受备份的文件名。

然后去吃零食等传输好就可以了。

QQ20161106-2.png


Typecho在HTTPS反代HTTP时遇到的bug处理


把博客改成HTTPS反代HTTP以后,觉得自己很久没收到评论提示了,于是决定上博客后台看看。突然发现博客后台进不去了,不仅是所有资源都被写成了http://,还有就算是手动load了这些http的不安全脚本,还是不能登录。后来经过阅读相关Typecho的源代码,才知道问题出在/var/Typecho.Request.php中的getUrlPrefix()函数中。这里调用了同文件中的isSecure()函数。而isSecure()函数中判断是https的方式有3种:

  1. PHP的$_SERVER['HTTPS']中值不为off
  2. PHP的$_SERVER['SERVER_PORT']中值为443
  3. 常量__TYPECHO_SECURE__为true

一看第三种方式处理起来最方便,于是打开/config.inc.php,在该插入的位置插入define('__TYPECHO_SECURE__', true);,就可以解决。博客的评论问题也同时可以完美解决。


自动登录浙江省高校招生考试信息管理系统


刚刚经历了浙江省的2016年10月学考选考,但不知道什么时候出成绩,于是我决定写一个自动查询的脚本。

0x00 准备

首先我打开了http://pgzy.zjzs.net:8011/login.htm,仔细观察了它的验证码。

pgzy.zjzs.net:8011

看了一下这个验证码的干扰因子很少,应该很方便识别。为了研究,我用wget下载了20个验证码。

wget http://pgzy.zjzs.net:8011/INC/VerifyCode.aspx -O $(date +%s).jpg

这里为了试验,我把20个验证码全部重命名过了。

验证码们

这里打算使用的语言是交易 3Python 3,并装好opencv和diff-match-patch。

本来想使用TensorFlow,但是我怕我在研究怎么使用它上会花费大量时间,于是使用了最机械的方法。

// 点开我,里面还有许多内容!


在qemu/kvm上安装Windows 10


这两天玩了qemu/kvm,装了debian玩,当我装Windows Server 2016的时候,遇到了问题:安装光盘卡在了Windows的Logo处,就像这样。

QQ20161003-1.png

一直以为是Windows在qemu/kvm上配置麻烦,于是各种搜索。直到我后来挂载了2012R2的安装盘能启动,然后搜索了"install windows 10 on qemu",爬到了国外的一个帖子,才知道,要修改cpu设置……

首先先在host上执行virsh -c qemu:///system进入libvirt的shell。然后edit {你的虚拟机名字}

然后在feature节点下面添加以下内容

<kvm>
  <hidden state='on'/>
</kvm>

添加cpu节点

<cpu mode='custom' match='exact'>
  <model fallback='allow'>core2duo</model>
  <feature policy='require' name='nx'/>
</cpu>

然后再启动虚拟机,就可以正常引导安装了!

QQ20161003-2.png

顺便,如果开启了virtio后安装程序不能识别到硬盘,请参考这个:KVM安装Windows Server 2008 R2使用virtio硬盘

还有问题欢迎在评论区提问!


OpenWRT做4G随身WiFi


突然生出了造一个4G随身WiFi的冲动,于是搞了一个硬改过的WR702N,和一个USB联通4G网卡来玩。

首先先得有一个OpenWRT,装上需要的软件包。

opkg install chat comgt kmod-ppp kmod-usb-serial kmod-usb-corekmod-usb-2 libusb-1.0 luci-proto-3g luci-proto-ppp ppp pppd usbutils libpthread librt zlib

关于usb-modeswitch,我们得专门编译,虽然官方也有,但是那个包实在是太不靠谱了,亲测。这里专门推荐一个GitHub repo:https://github.com/gzhechu/openwrt-usb-modeswitch-official。这里就不讲OpenWRT及packages的编译了。

装好usb-modeswitch后用usb_modeswitch -h调出帮助。看网卡的venid和proid用lsusb。usb-modeswitch的库还是比较全的。我是适用Sierra模式,所以直接通过usb_modeswitch -S -v 0x05c6 -p 0x92fe就转换成了Modem模式。

// 点开我,里面还有许多内容!