dp = d%(p-1)
∴dp*e=d*e mod(p-1)
∴d*e=dp*e+k1*(p-1) ①
又有e*d = 1mod((p-1)*(q-1))
∴e*d=k2*(p-1)*(q-1)+1 ②
①带入②得
dp*e+k1*(p-1)=k2*(p-1)*(q-1)+1 k1,k2∈Z
dp*e =k2*(p-1...
基本编程环境配置可以通过wsl apt包管理器安装sagemath
1sudo apt install sagemath
再在windows中vscode安装wsl插件连接wsl,再在扩展中安装python插件
将python路径设置为sage-python的路径 即可在windows中即时编译运行
基本语法
hashcat - advanced password recovery
也可以通过
1pip install hashcat
nvidia需要cuda kit支持
常用hash模式标识符12345678-m 0 #MD5-m 100 #SHA1-m 1400 #SHA256-m 1700 #SHA512-m 3200 #bcrypt-m 1000 #NTLm-m 400 #WordP...
脚本参考美团CTF: 100mazes - Pandaos’s blog (panda0s.top)
主要函数
此处的地址offset是物理地址,也就是文件内数据的地址,不是ida反编译中的地址
用010editor查看其物理地址为0x810
通过第一个迷宫函数sub_140001460的地址(0x140001460)与入口点的虚拟地址(0x140001410)相减获取与0x810的相对...
12345678910111213141516171819202122232425262728#!/usr/bin/pythonfrom Crypto.Cipher import AESimport binasciifrom Crypto.Util.number import bytes_to_long,long_to_bytesfrom flag import flagfrom key i...
AES ECB不带初始向量,以16字节为一组
123456from Crypto.Cipher import AESm=b'xxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyy'key=b'aEs_1s_SO0o_e4sY'aes=AES.new(key,AES.MODE_ECB)enc=aes.encrypt(m)print(enc)
...
小明文攻击的要求是e足够小
因为存在这个关系
1234m^e=c mod n所以有m^e=k*n + c k为整数m = (k*n+c)^(1/e)
同时因为e足够小所以k足够小,可以通过穷举k来获得明文m
exp:
123456for e in range(1,5):#遍历e,已知e可以不用遍历 for k in range(2000):#遍历k import Crypto.Uti...
直接拖进jadx,无法正常输出反编译结果
解压后再进行压缩为apk,就可以进行反编译了
只有一个activity组件
12345678910111213<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.c...
给了两个文件夹,一个是源码一个是编译后的文件
可以直接将resources压缩包打包为apk然后丢进jadx(apk本质就是压缩包)
123456789101112131415<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://sche...
主要需要查看so文件的JNI_OnLoad函数,查看是如何进行注册的,对应的函数名是什么
类似于下图,就是将sub_1434注册为java内的com/ctf/findthekey/MainActivity findthekey方法
123456789101112131415jint JNI_OnLoad(JavaVM *vm, void *reserved)...