diff --git a/bin/deepstate/reducer.py b/bin/deepstate/reducer.py index 31de9f1..57a5eb7 100644 --- a/bin/deepstate/reducer.py +++ b/bin/deepstate/reducer.py @@ -170,8 +170,28 @@ def main(): for b2 in range(b1+2, len(currentTest)-4): v1 = (currentTest[b1], currentTest[b1+1]) v2 = (currentTest[b2], currentTest[b2+1]) - if (v1 == v2) and (v1 != (0,0)): - print("BYTE SEQUENCE MATCH AT", b1, b2, v1) + if (v1 == v2): + ba = bytearray(v1) + print("BYTE SEQUENCE MATCH AT", b1, b2, ba) + part1 = currentTest[:b1] + part2 = currentTest[b1+2:b2] + part3 = currentTest[b2+2:] + banews = [] + banews.append(ba[0:1]) + banews.append(ba[1:2]) + if ba[0] > 0: + banews.append(bytearray[ba[0]-1]) + for banew in banews: + newTest = part1 + banew + part2 + banew + part3 + r = writeAndRunCandidate(newTest) + if checks(r): + print("BYTE PATTERN", ba, "AT", b1, "AND", b2, "CHANGED TO", banew) + changed = True + break + if changed: + break + if changed: + break if changed: currentTest = newTest