macOS Catalina(10.15.6)文件大量变动后mds/mds_stores/mdworker引发系统卡顿

最近在执行bash gradlew clean build之后,macOS Catalina(10.15.6)系统处于长时间的卡顿状态。尽管已经编译结束了,依旧要持续非常长的一段时间才能恢复顺畅。

在执行top命令之后,发现进程mds,mds_stores 持续维持在高负荷运行状态,基本上把CPU跟磁盘IO全部占用。

网上搜索了一下,这两个服务是macOS Catalina(10.15.6)系统的索引服务,由于编译过程中瞬间删除,又重新产生大量的临时文件,数量在几万个,大小达到若干GB。索引服务尝试对这些文件进行索引,引起极大的系统开销。

解决方法就是临时或者永久关闭索引服务

重新打开的话,执行

参考连接


Mac系统 mds、mds_stores、mdworker 占cpu很高,以及这些进程是干啥的

java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7

全新安装的macOS Catalina 10.15.6,使用HomeBrew执行brew install java,安装了目前最新的openjdk-14.0.1之后,执行bash gradlew clean build,报告如下错误信息:

修改

就行了 。

出现原因是这个版本的gradlemacOS版本支持的不是很完善(其实是JDK的版本适配问题)。Windows版本打包倒是没有问题(Windowsopenjdk-14.0.1一样有问题)。

参考链接


java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Ja【已解决】

fatal: could not read Username for 'https://github.com': terminal prompts disabled

最近更新HomeBrew的时候,一直报错,如下:

执行

执行如下命令即可:

参考链接


Git Error: Could could not read Username for 'https://github.com': terminal prompts disabled

Error: Cask 'java7' is unreadable: undefined method `undent' for #

今天在执行brew upgrade的时候出现如下错误:

原因为某次更新之后,配置文件增加了某些不必要的字段。更要命的是,不能执行卸载命令来删除出问题的安装包。解决方法为删除这个字段。

方案如下:

参考链接


undefined method `undent' #49716

bash切换zsh后.bashrc文件失效的解决方案

问题

  • bash切换到zsh后,发现原先bash下的bashrc文件配置都失效了(显示zsh: command not found字样,当然如果手动通过source FileName加载是可以的),macOS Catalina(10.15.5) 已经默认切换到zsh,那么如何实现不用每次加载.bashrc文件就实现alias等便捷功能呢?

解决方案

  1. 使用系统级的/etc/zshrc/etc/zprofile
  2. 使用用户级的~/[X]bashrc~/[X]profile
  • 鉴于/etc/zshrc里有较多zsh特性配置,而且默认全局加载,因此这里通过编辑用户级的profile并加载原先的bashrc(即Bash Shell下用户文件)来实现我们的需求
详细步骤
  • 复制系统文件并修改权限

  • 追加自定义配置项,加载Bash Shell.bashrc文件

  • 测试

参考链接


Bash切换Zsh后,bashrc文件失效的解决方案

macOS Catalina(10.15.5)用蓝牙PAN共享Wi-Fi上网

今天有需要共享上网进行抓包分析报文的情况。

研究了一下MacBook Pro(macOS Catalina(10.15.5))如何通过蓝牙PAN(Bluetooth PAN)来共享笔记本连接的Wi-Fi网络出来,让手机通过共享出来的蓝牙热点来上网的方法。

由于蓝牙PAN(Bluetooth PAN)本质属于局域网转发,起到一个简单网关的作用。因此我们需要设置蓝牙设备的IP地址跟需要共享的Wi-Fi网卡相同。

具体操作如下:

继续阅读macOS Catalina(10.15.5)用蓝牙PAN共享Wi-Fi上网

Android默认调试签名证书

今天遇到了需要手工用调试签名重新签名APK文件的一个需求。

Android默认调试签名证书位置

Windows:

macOS Catalina:

证书密码 :android

签名脚本:

参考链接


macOS Catalina(10.15.4)安装应用提示"无法打开"XXXX",因为无法验证开发者"的解决方法

macOS Catalina(10.15.4)使用HomeBrew安装SageMath

启动的时候提示如下:

继续阅读macOS Catalina(10.15.4)安装应用提示"无法打开"XXXX",因为无法验证开发者"的解决方法

macOS Catalina(10.15.4)下RsaCtfTool的安装及使用

在CTF比赛中,往往会涉及到RSA解密类的题目,有了这个工具(基于python3.x)做起来就得心应手了。

这个也可以作为安全工具来使用,检查密钥的安全性。

RSA简介

为了方便理解,先对RSA密钥体制做个简略的介绍。

  1. 选择两个大的参数,计算出模数 N = p * q
  2. 计算欧拉函数 φ = (p-1) * (q-1),然后选择一个e(1<e<φ),并且e和φ互质(互质:公约数只有1的两个整数)
  3. 取e的模反数d,计算方法为:e * d ≡ 1 (mod φ) (模反元素:如果两个正整数e和n互质,那么一定可以找到整数d,使得 e * d - 1 被n整除,或者说e * d被n除的余数是1。这时,d就叫做e的“模反元素”。欧拉定理可以用来证明模反元素必然存在。两个整数a,b,它们除以整数M所得的余数相等:a ≡ b(mod m),比如说5除3余数为2,11除3余数也为2,于是可写成11 ≡ 5(mod 3)。)
  4. 对明文m进行加密:c = pow(m, e, N),可以得到密文c。
  5. 对密文c进行解密:m = pow(c, d, N),可以得到明文m。
整理:

pq:两个大的质数,是另一个参数N的的两个因子。
N:大整数,可以称之为模数
ed:互为无反数的两个指数
cm:密文和明文
(N, e):公钥
(N, d):私钥
pow(x, y, z):效果等效pow(x, y)% z, 先计算xy次方,如果存在另一个参数z,需要再对结果进行取模。
密钥长度:n以二进制表示的的位数,例如密钥长度为512代表n用二进制表示的长度为512bit

RSA安全性分析

对于RSA加密算法,公钥(N, e)为公钥,可以任意公开,破解RSA最直接(亦或是暴力)的方法就是分解整数N,然后计算欧拉函数φ(n)=(p-1) * (q-1),再通过d * e ≡ 1 mod φ(N),即可计算出 d,然后就可以使用私钥(N, d)通过m = pow(c,d,N)解密明文。

保障RSA的安全性

1. 定期更换密钥
2. 不同的用户不可以使用相同的模数N
3. p与q的差值要大,最好是差几个比特
4. p-1与q-1都应该有大的素因子,一般建议选择的两个大素数p、q使得p=2p+1和q=2q+1也是素数
5. e的选择不要太小
6. d的选择也是不可以太小,最好满足d>=n的4分之1

参考链接