Time Machine备份

知道苹果有这个东西,但一直没用过。最近要换新电脑,想到了Time Machine,想着应该能够无缝迁移吧。

在NAS上开了一个共享空间,打开了afp设置,同一个网络下,自动就搜到了,然后就开始了漫长的备份过程。,

发现了一些问题,体验并不那么好

  1. 第一是慢,是真的慢,备份了好几次都没有一次成功
  2. 因为上班有时要连VPN,有时要切有线/无线,断了之后,又重新开始计算,体验太糟糕
  3. 一次到了98%, 时间显示7分钟,但是等了好长时间还是显示7分钟,时间估算太差
  4. 每次断了,重新计算都需要等很的时间,进度也是莫名其妙
  5. 空间已经占了1T+,但依旧还没有备份完成

网上搜到几个密令

 1. sudo sysctl debug.lowpri_throttle_enabled=0
 2. sudo fs_usage backupd

[1]说是可以解除CPU/IO限制,可以全速备份

[2]可以看到当前的备份状态

如果需要恢复限制,只需要把0->1

 sudo sysctl debug.lowpri_throttle_enabled=1

早点没有看到这个命令,要不可以省很多时间吧。

当然除了用Time Machine备份,我也使用了传统的备份方式

  • 1. 单独压缩需要备份的目录
  • 2. NFS/SMB挂载远程目录
  • 3. cp file.zip /remote/path

实际使用发现

  • 启用压缩能够节省很多时间,可能是小文件比较多,压缩需要一点时间,但cp速度可以快太多,比直接cp快很多
  • 使用Mac Find

Script for clean the duplicate files for DSM

2020年已经过去大半了,更新一下博客,刷一下存在感。

去年收了一个暴风影音播客云二期,安装了破解版的黑群晖。每三个月更新一次Let’s Encrypt证书。

但它的Android客户端很奇怪,每次更新证书之后就无法再登录了,需要把App缓存清掉,重新登录,导致的后果就是需要重新设置备份文件目录。然后就每次重新开始备份手机上的视频照片,关键不是增量的,需要全部重新备份。

ssh进入系统后就可以看到重复的文件,文件名加了后缀_1, 例如 VID_20200913_170932_1.mp4, 文件太多超过2W个, 不能手动去删除,于是顺手就写了一个脚本去自动删除。

原理很简单,先找到那些不含_1后缀的文件,然后查看是否存在_1后缀的文件,文件存在的话就直接删掉,310G变到202G了,清理了100G+的空间。

#!/bin/sh
count=0
remove=0
for file in `ls|grep -v "_1\." `
do
	((count++))
	#echo -n "${count} "
	name=`echo ${file}|cut -d "." -f1`
	ext=`echo ${file}|cut -d "." -f2`
	dup_file=${name}_1.${ext}
	echo -n  "total:${count}, 

Android bypass SSL Pinning

很多Android App现在出于安全考虑都会加上SSL Pinning,有时在Charles Debug过程中会不是太方便,当然可以加一个设置一键关掉这个功能。

最近刚好看了一些关于Frida的资料,发现这个东西用来做代码注入很方便,而且平台通吃,Android/iOS/Linux/Mac。

找到下面这个JavaScript脚本,可以在不侵入原Apk的情况下,去掉SSL Pinning, 通过Charles启用SSL Proxy,在手机设置好Charle代理,直接明文抓到所有请求。

Java.perform(function() {
    var array_list = Java.use("java.util.ArrayList");
    var ApiClient = Java.use('com.android.org.conscrypt.TrustManagerImpl');
    ApiClient.checkTrustedRecursive.implementation = function(a1, a2, a3, a4, a5, a6) {
        // console.log('Bypassing SSL Pinning');
        var k = array_list.$new();
        return k;
    }
}, 

Wordfence Premium

编辑wp-contentplugins/wordfence/lib/wordfenceClass.php, 添加下面的这段配置

wfConfig::set('isPaid', 1);
            wfConfig::set('keyType', wfAPI::KEY_TYPE_PAID_CURRENT);
            !!wfConfig::set('isPaid', 1);
            !!wfConfig::set('keyType', wfAPI::KEY_TYPE_PAID_CURRENT);

改好之后为

	// Sync the WAF data with the database.
		$updateCountries = false;
		if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
			$homeurl = wfUtils::wpHomeURL();
			$siteurl = wfUtils::wpSiteURL();
            // Add by Jianqing, 2019/04/02
            

Android P(9.0/API Level 28) 升级不完全教程

自从去年Google强制升级target API到26之后,Google就开始计划着下一波的升级,而这次是要升级到9, 也就是target API level 28,而且日期也已经定了 “November 1, 2019″。

以前每次API升级都是小打小闹,并不会有那种大规模的改动,而这次改动就有点大了。当然这次强制target API升级对国内开发者的影响会小一些,因为毕竟不用发布到Google Play,而国内应用市场这么多,各个要求也都参差不齐,所以短期还是安全的。

这次改动其实动的最大的就是非官方API的调用,也包含”Java Reflection”,基本上可以说国内要用到的那些动态APP升级方案都基本被伤了,网上搜了一下,也找到一些厅淫技巧,可以绕过去官方的这个限制,正所谓道高一尺,魔高一丈,但总的来说这样做是不推荐的,因为不知道系统又做个升级,就把这些方案给干掉。官文给了黑名单列表和灰名单列表,黑名单是一定要修复的,灰名单只是一个过渡阶段,后面看Google的心情什么时候在系统层面强制执行,那就必须都修复。2019年的Google IO大会在即,就看这次Google有什么表示。

具体我们需要做什么/take away

把官方相关的文档都看过了,下面这些是我认为比较重要的地方

  • Migration to androidx/JetPack
  • Network TLS enabled by default, so need double check https is enable by default.
  • Non SDK APIs call scanning,