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

参考链接


Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-3.8/4.3.1/4.5.1/4.6.1 Powermock-1.6.6单元测试环境

基础配置以及常见错误


目前版本的Android Studio 3.6.3/4.0/4.1/4.2使用Robolectric-3.8/4.3.1/4.5.1/4.6.1,只能配合Powermock-1.6.6,不能高于这个版本PowerMock ,尽管软件源中的版本已经更新升级到2.0.7版本了,但是Robolectric并没有及时更新依赖。尝试过使用最新版本的PowerMock,结果很多莫名的报错。

如果 Windows 系统下出现如下提示,受限于Windows系统路径不能超过260个字符的限制

貌似Windows 10 Build 14352版中已经可以通过修改注册表去除260字符的路径长度限制了。

在项目/.idea/workspace.xml文件中添加一行代码如下

对于使用MultiDex的应用,如果报告如下错误:

需要在build.gradle中引入

例子测试代码:

注意,需要

才能使得配置生效。

如果发生如下错误:

继续阅读Android Studio 3.6.3/4.0/4.1/4.2配置Robolectric-3.8/4.3.1/4.5.1/4.6.1 Powermock-1.6.6单元测试环境

Synology(群晖)常见的配置项以及命令项

Apache2.2 相关配置与常见命令

Apache2.4 相关配置与常见命令

Nginx 相关配置与常见命令

Web Station 相关配置与常见命令

继续阅读Synology(群晖)常见的配置项以及命令项

在macOS Catalina(10.15.4)安装ADB(Android调试桥)

什么是 ADB?

Android调试桥( adb )是一个开发工具,帮助安卓设备和个人计算机之间的通信。 这种通信大多是在USB电缆下进行,但是也支持Wi-Fi连接。 adb 还可被用来与电脑上运行的安卓模拟器交流通信。 adb 对于安卓开发来说就像一把“瑞士军刀”。

通过 Homebrew 安装

测试是否正常安装

手动安装

1、如果你以前安装过,请先删除老的文件

2、下载 android-sdk-macosx

下载地址:developer.android.com

3、将下载的文件解压并移动到 ~/.android-sdk-macosx

4、运行 SDK Manager

5、根据你的需要选择,(我只需要Android SDK Platform-tools)[可选步骤]
6、选好后 Install
7、环境变量设置

8、更新配置文件

9、测试是否正常安装

参考链接


在 MAC OS X 安装 ADB (Android调试桥)

使用Python Openssl库解析X509证书信息

X.509 证书结构描述

常见的X.509证书格式包括:

后缀 作用
cer/crt 用于存放证书,它是2进制形式存放的,不含私钥
pem 以Ascii来表示,可以用于存放证书或私钥。
pfx/p12 用于存放个人证书/私钥,他通常包含保护密码,2进制方式。
p10 证书请求
p7r CA对证书请求的回复,只用于导入
p7b 以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。

对于常见的https证书 一般是用crt或者pem来保存, http证书可点击网页前的锁按钮得到, 并且进行导出

继续阅读使用Python Openssl库解析X509证书信息

WordPress修改数据库返回数据

有个简单需求,就是 WordPress 多个网站同步数据的情况下,根据网站域名的不同,修改数据库返回的数据。

实现这个的需求就是在当前 WordPress 主题下的 functions.php 中实现 the_post 拦截函数,在数据库返回的数之后,进行替换。

例子如下:

这个替换过程只能针对没有使用 WP Super Cache 进行缓存的情况,如果已经使用 WP Super Cache 进行缓存,那么很可能导致没有及时生效。

如果只是需要替换域名,那么只需要在 wp-config.php 中定义 WP_HOME/WP_SITEURL 两个变量即可实现域名覆盖。

示例参考代码如下:

参考链接


Android Studio 3.6.2编译报错“GC overhead limit exceeded”

Android Studio 3.6.2 编译报错 “GC overhead limit exceeded”,详细的报错信息如下:

这个问题是由于编译过程中的Java的内存开销太大超过了默认限制导致的,解决方法就是增大Java的内存限制。

具体操作为在项目的 gradle.properties 中修改内存限制 org.gradle.jvmargs 默认情况下,这个限制在 1536m 我们需要拉大到 4096m

修改后的内容如下:

如果这个文件不存在,则在工程文件 build.gradle ,gradlew , local.properties 等相同的目录下新建 gradle.properties 这个文件即可。

参考链接


macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试报错"Caused by: java.util.zip.ZipException: zip file is empty"

macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试时报错,这个项目以前是可以正常调试的,一段时间之后,就不能正常调试之下了

继续阅读macOS Catalina(10.15.4)/IntelliJ IDEA 2018.3/Tomcat 9.0.33/Maven项目调试报错"Caused by: java.util.zip.ZipException: zip file is empty"

ubuntu 18.04系统/var/log/auth.log文件不存在

通过 /var/log/auth.log 文件可以查看一些关于 ssh 登陆、sudo 命令的信息。尤其是 denyhosts 依赖这个日志拦截非法的登陆攻击。 但是,我最近遇到了一个问题,在阿里云的一些主机上没有这个文件,或者日志文件在自动备份(比如被重命名成 /var/log/auth.log.1 )之后,没有重新生成新的 /var/log/auth.log

检查 /var/log 目录的所有者信息,如下:

这里的所有者权限信息是不正确的,缺少所有者所在组的文件创建权限,导致文件创建出现问题。因此需要如下命令:

接着手工创建日志文件,如下:

参考链接


/var/log/auth.log文件不存在