常用算法库
Python
IDA Python
顾名思义,在IDA中写python脚本,用来提取数据等
用到idc_bc695这个库
另见:
https://www.cnblogs.com/iBinary/p/14642662.html
https://blog.csdn.net/m0_52164435/article/details/124878537
数学库
z3库
安装
需要使用python3(python2已不再受支持,安装很可能出现问题)来安装
1 | pip install z3 |
声明求解范围
1 | #Int()和Ints()函数用于申请整数解 |
增加方程约束
1 | #建立求解器 |
求解
1 | print(s.check()) # sat代表有解,unsat代表无解 |
数据处理库
二进制-字符处理—binascii
参阅https://blog.csdn.net/asmartkiller/article/details/114704320
主要用于二进制和ASCII互相转换
转为二进制数据bin_var后,如果进一步转为字符串,那么进行bin_var.decode()
即可
例如(SUCTF2019)SignIn
中使用binascii.unhexlify()
方法将生成的十六进制字符串转为字符串
例题
使用int.from_bytes()方法进行字节流转为int的操作,同时需要指定大小端序
解密脚本:
1 | import binascii |
C语言
高精度—GMP库
GMP(The GNU Multiple Precision Arithmetic Library)又叫GNU多精度算术库,是一个提供了很多操作高精度的大整数,浮点数的运算的算术库,几乎没有什么精度方面的限制,功能丰富。我刚接触到这个东西的时候是在学习PHP的过程中。GMP的主要目标应用领域是密码学的应用和研究、 互联网安全应用、 代数系统、 计算代数研究等。
__gmpz_init_set_str() 函数
1 | int mpz_init_set_str (mpz_t rop, char *str, int base) |
将str字符数组以 base 指定的进制解读成数值并写入 rop 所指向的内存
__gmpz_powm() 函数
1 | void __gmpz_powm(mpz_t rop, const mpz_t base, const mpz_t exp, const mpz_t mod) |
将base求exp次幂,然后对mod求模,最后把结果存到rop中(可以用于编写RSA)
其他函数见文档
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WAHAHA's blog!
评论