Для задачи CTF мне нужно восстановить массив байтов на основе нескольких ограничений для каждого байта.
Однако, немного поигравшись с битовыми векторами в Z3, я заметил, что Solver.check() возвращает unsat, как только я добавляю более одного ограничения.
Вот пример кода для воспроизводимости:
from z3 import *
# Create solver
solver = Solver()
# Declare a BitVector of 8 bit
x = BitVec('x', 8)
# Add multiple constraints
solver.add(x >= 0) # x should be greater or equal than 0
solver.add(x = 0)< /code> или Solver.add(x = 0)
solver.add(x
Подробнее здесь: https://stackoverflow.com/questions/790 ... constraint