python z3库学习(python基础教程)

网友投稿 778 2022-08-25


python z3库学习(python基础教程)

介绍

Z3 在工业应用中实际上常见于软件验证、程序分析等。然而由于功能实在强大,也被用于很多其他领域。CTF 领域来说,能够用约束求解器搞定的问题常见于密码题、二进制逆向、符号执行、Fuzzing 模糊测试等。此外,著名的二进制分析框架 angr 也内置了一个修改版的 Z3。

安装

pip uninstall z3_solver

注意不要安装z3,这是另外一个模块了。

整型(Int)方程求解

from z3 import *a, s, d = Ints('a s d')x = Solver()x.add(a-d == 18)x.add(a+s == 12)x.add(s-d == 20)check = x.check()print(check)model = x.model()print(model)# sat# [a = 5, d = -13, s = 7]

有理数(Real)型解方程求解

from z3 import *x = Real('x')y = Real('y')s = Solver()s.add(x**2 + y**2 == 3)s.add(x**3 == 2)check = s.check()print(check)model = s.model()print(model)# sat# [y = -1.1885280594?, x = 1.2599210498?]

位向量(BitVec)型解方程

from z3 import *x, y, z = BitVecs('x y z', 8)s = Solver()s.add(x ^ y & z == 12)s.add(y & z >> 3 == 3)s.add(z ^ y == 4)check = s.check()print(check)model = s.model()print(model)# sat# [z = 27, y = 31, x = 23]


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊一聊new对象与Spring对bean的初始化的差别
下一篇:python sqlite3 返回字典列表(python培训)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~