1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| from z3 import * x = [BitVec(f'x_{i}', 8) for i in range(38)] s = Solver() for a in x: s.add(a >= 32, a <= 126) s.add( 8 * (x[0] * x[22]) - 7 * (x[10] * x[28]) - 6 * (x[10] * x[31]) + 8 * (x[10] * x[9]) + 4 * (x[11] * x[14]) + 6 * ( x[12] * x[9]) - 6 * (x[13] * x[26]) + 5 * (x[17] * x[2]) + 9 * (x[17] * x[33]) - 8 * ( x[17] * x[9]) + 9 * (x[18] * x[2]) - 2 * (x[19] * x[30]) + 3 * (x[19] * x[31]) - 2 * x[20] * x[ 20] + 2 * (x[22] * x[6]) - 6 * (x[23] * x[27]) - x[24] * x[9] + 6 * (x[26] * x[7]) + 9 * (x[26] * x[9]) + 9 * ( x[28] * x[8]) + 8 * (x[29] * x[34]) + 4 * (x[33] * x[9]) - 7 * x[8] * x[8] - 134044 == 0, 4 * (x[0] * x[19]) + 9 * (x[10] * x[23]) + 4 * (x[10] * x[24]) + 9 * (x[11] * x[6]) - 6 * (x[14] * x[26]) - 3 * ( x[14] * x[27]) + 4 * (x[15] * x[19]) + 10 * (x[16] * x[25]) + 4 * (x[19] * x[30]) - 8 * ( x[2] * x[26]) + 10 * (x[21] * x[37]) + 10 * (x[23] * x[8]) + 5 * (x[25] * x[8]) - 4 * ( x[26] * x[30]) + 4 * (x[28] * x[31]) + 5 * (x[4] * x[9]) - 380404 == 0, -5 * (x[0] * x[1]) + 9 * (x[0] * x[2]) - 6 * (x[0] * x[5]) - x[12] * x[8] - 8 * (x[13] * x[15]) + 6 * ( x[14] * x[26]) + 3 * (x[17] * x[6]) + 3 * x[17] - 4 * (x[2] * x[20]) + x[21] * x[37] - x[24] * x[ 30] + 3 * x[24] - x[29] * x[7] + 10 * (x[30] * x[36]) + x[30] * x[9] - 8 * (x[31] * x[37]) - 2 * x[ 36] + 88387 == 0, x[0] * x[5] - 2 * (x[1] * x[14]) + 10 * (x[10] * x[24]) + 8 * (x[10] * x[31]) - 7 * (x[13] * x[25]) - 4 * ( x[14] * x[19]) + 5 * (x[15] * x[29]) - 6 * (x[17] * x[18]) - x[17] * x[27] + 4 * (x[18] * x[7]) + 7 * ( x[19] * x[21]) + 3 * (x[19] * x[34]) + 5 * (x[20] * x[30]) + x[20] * x[7] + 2 * ( x[21] * x[25]) - 161788 == 0, 5 * (x[1] * x[3]) - 6 * (x[1] * x[32]) + 6 * (x[12] * x[34]) + 9 * (x[16] * x[5]) + 2 * (x[20] * x[28]) + 6 * ( x[22] * x[24]) - 7 * (x[24] * x[31]) + x[27] * x[35] - x[28] * x[6] + 5 * (x[29] * x[5]) - 8 * ( x[31] * x[33]) - 84847 == 0, x[0] * x[27] + 9 * (x[16] * x[26]) + 6 * (x[16] * x[37]) - 2 * (x[17] * x[32]) - x[20] * x[28] + 3 * ( x[20] * x[35]) + 5 * (x[23] * x[33]) + 6 * (x[25] * x[37]) + 6 * (x[28] * x[6]) + 2 * ( x[31] * x[7]) + 4 * (x[5] * x[9]) - 178286 == 0, -7 * (x[13] * x[25]) + 9 * (x[14] * x[9]) - 4 * (x[15] * x[19]) + 5 * (x[15] * x[35]) - 3 * (x[18] * x[36]) + x[2] * x[28] + 9 * (x[23] * x[28]) + 4 * (x[25] * x[28]) + 5 * (x[29] * x[4]) - x[30] * x[8] - 8 * ( x[4] * x[6]) - 60455 == 0, x[0] * x[33] - x[1] * x[10] + 6 * (x[11] * x[9]) + 4 * (x[12] * x[4]) + 4 * (x[13] * x[17]) + 10 * (x[16] * x[19]) - x[18] * x[2] - x[19] * x[5] - x[2] * x[6] - 5 * (x[26] * x[28]) - 2 * (x[29] * x[35]) + 7 * (x[30] * x[35]) + 10 * ( x[30] * x[5]) - 6 * (x[31] * x[5]) + 6 * x[35] * x[35] + 8 * x[8] * x[8] + x[8] - 154828 == 0, -4 * (x[12] * x[20]) - 8 * (x[13] * x[33]) - 8 * (x[14] * x[36]) - 7 * (x[15] * x[4]) - 3 * (x[16] * x[6]) - 7 * x[ 2] * x[2] - 3 * (x[20] * x[21]) + x[21] * x[30] - 5 * (x[21] * x[7]) + 3 * x[32] * x[32] + 2 * ( x[32] * x[9]) + 195533 == 0, -5 * (x[1] * x[11]) - 3 * (x[10] * x[14]) + 3 * (x[12] * x[28]) - 3 * (x[13] * x[16]) - 4 * (x[13] * x[27]) - 2 * ( x[13] * x[31]) - 6 * (x[14] * x[3]) - 5 * (x[14] * x[36]) - 6 * (x[15] * x[2]) + 4 * ( x[15] * x[33]) - 6 * (x[16] * x[27]) + 10 * (x[18] * x[29]) + 8 * (x[22] * x[33]) - 4 * (x[26] * x[6]) - x[27] * x[6] - 8 * (x[30] * x[6]) + 8 * x[33] * x[33] - 5 * (x[4] * x[9]) + 158981 == 0, 4 * (x[0] * x[16]) + 2 * (x[10] * x[33]) + 10 * (x[12] * x[21]) - 7 * (x[16] * x[25]) + 3 * (x[22] * x[4]) - 6 * ( x[26] * x[9]) + 4 * (x[3] * x[4]) + 9 * (x[30] * x[37]) + 10 * (x[35] * x[6]) + 7 * ( x[36] * x[9]) - 213234 == 0, 10 * (x[1] * x[37]) + 5 * (x[10] * x[22]) - x[13] * x[18] + 7 * (x[15] * x[29]) - 5 * (x[15] * x[35]) + x[16] * x[ 24] - 4 * (x[16] * x[3]) - 2 * (x[16] * x[30]) + 8 * (x[16] * x[8]) - x[17] * x[2] - 3 * (x[18] * x[6]) + 7 * ( x[19] * x[33]) + 3 * (x[20] * x[25]) + 8 * (x[20] * x[5]) + 10 * (x[21] * x[26]) - 2 * ( x[22] * x[3]) + 10 * (x[3] * x[6]) + 2 * (x[7] * x[8]) - 326138 == 0, 4 * (x[10] * x[18]) + 7 * (x[10] * x[4]) - 7 * (x[11] * x[31]) - 2 * (x[12] * x[31]) - x[13] + 8 * ( x[14] * x[5]) - 3 * x[14] - x[17] * x[8] - 7 * (x[19] * x[29]) + 4 * (x[2] * x[28]) - 6 * ( x[20] * x[33]) + 9 * (x[21] * x[37]) + 7 * (x[25] * x[36]) + x[26] * x[31] - 5 * (x[26] * x[34]) + 3 * ( x[4] * x[7]) - 139055 == 0, -4 * (x[1] * x[3]) - 4 * x[10] * x[10] + 3 * (x[10] * x[24]) - 2 * (x[10] * x[4]) - 6 * (x[11] * x[12]) - 6 * ( x[11] * x[35]) + 3 * (x[12] * x[2]) + 5 * (x[13] * x[16]) - 2 * (x[13] * x[3]) + x[17] * x[26] + 10 * ( x[19] * x[23]) + x[20] * x[37] + 6 * (x[20] * x[7]) - 7 * (x[22] * x[32]) + 7 * (x[26] * x[36]) - x[ 28] * x[33] + x[30] * x[6] + 8 * x[31] + 9 * (x[7] * x[8]) + 2130 == 0, -7 * (x[12] * x[14]) - 3 * x[14] * x[14] + 8 * (x[18] * x[35]) - 5 * (x[19] * x[28]) + 8 * (x[2] * x[30]) + 9 * x[ 20] * x[20] + 10 * (x[26] * x[7]) - 4 * (x[37] * x[4]) - 3320 == 0, -4 * (x[11] * x[17]) - x[13] * x[13] + 8 * (x[14] * x[5]) - 4 * (x[16] * x[33]) + 3 * (x[18] * x[27]) - 5 * ( x[18] * x[9]) + 8 * (x[2] * x[36]) + 2 * (x[20] * x[24]) + 9 * (x[22] * x[23]) + x[28] * x[ 31] - 140760 == 0, -7 * (x[0] * x[25]) - 6 * (x[1] * x[24]) + 3 * (x[12] * x[22]) - 4 * x[12] + 2 * (x[13] * x[16]) - 5 * ( x[13] * x[31]) - 3 * (x[19] * x[36]) - 8 * (x[2] * x[28]) - x[25] * x[8] + 5 * (x[26] * x[6]) - 4 * ( x[30] * x[32]) - x[30] * x[37] + 8 * x[31] + 7 * (x[33] * x[34]) + 131023 == 0, 2 * (x[0] * x[7]) + 9 * (x[1] * x[17]) - 8 * (x[10] * x[12]) - 3 * (x[11] * x[18]) + 7 * (x[13] * x[31]) + 9 * ( x[16] * x[30]) + x[17] * x[6] + 8 * (x[18] * x[5]) + 2 * (x[19] * x[3]) + 5 * (x[19] * x[34]) - 8 * ( x[2] * x[5]) + 7 * (x[20] * x[24]) + 3 * (x[23] * x[32]) - 5 * (x[28] * x[35]) + 10 * ( x[28] * x[36]) + 4 * (x[28] * x[6]) - 5 * (x[30] * x[4]) - 5 * (x[31] * x[4]) - 39651 == 0, x[0] * x[20] + 6 * (x[1] * x[20]) - 7 * (x[13] * x[25]) - 7 * (x[15] * x[7]) + 3 * (x[20] * x[21]) + 9 * ( x[20] * x[25]) + 4 * (x[20] * x[3]) + 2 * (x[20] * x[9]) + 9 * (x[21] * x[29]) + 7 * ( x[21] * x[37]) + 8 * x[22] * x[22] + 6 * (x[23] * x[29]) - 2 * (x[24] * x[26]) - x[26] * x[35] - 4 * ( x[27] * x[30]) - 4 * (x[30] * x[31]) + 2 * (x[35] * x[8]) + 10 * (x[37] * x[5]) - 316796 == 0, 5 * (x[0] * x[5]) + 6 * (x[11] * x[28]) + 5 * (x[11] * x[4]) - 3 * (x[12] * x[29]) - 7 * (x[13] * x[4]) + 10 * ( x[15] * x[20]) + 10 * (x[15] * x[6]) + 10 * (x[17] * x[28]) - x[17] * x[4] + 10 * (x[17] * x[5]) + 3 * ( x[20] * x[34]) + 7 * (x[21] * x[26]) + x[21] * x[34] - 4 * (x[21] * x[7]) + 5 * (x[22] * x[31]) - 6 * ( x[24] * x[37]) - 7 * (x[26] * x[9]) + 9 * (x[31] * x[8]) + 6 * (x[33] * x[34]) - 4 * ( x[34] * x[35]) - 3 * x[35] - 286153 == 0, 8 * (x[0] * x[20]) - 8 * (x[1] * x[26]) + 9 * (x[10] * x[25]) - 7 * (x[11] * x[9]) - x[15] * x[26] - 3 * ( x[17] * x[26]) - 3 * (x[18] * x[6]) + 6 * (x[2] * x[20]) + 7 * (x[20] * x[4]) + 5 * ( x[21] * x[30]) - 2 * (x[22] * x[4]) - x[24] + 9 * (x[30] * x[4]) + 10 * (x[33] * x[5]) - 168098 == 0, -2 * (x[0] * x[13]) - 7 * (x[0] * x[4]) + 8 * x[10] + 6 * (x[11] * x[29]) + x[12] * x[21] + 2 * (x[13] * x[29]) - x[ 13] * x[33] + 9 * (x[15] * x[22]) - 7 * (x[21] * x[27]) - 6 * (x[21] * x[4]) - 5 * (x[22] * x[9]) - 2 * ( x[23] * x[37]) + 8 * (x[24] * x[28]) - 5 * (x[27] * x[31]) + 6 * (x[3] * x[35]) + 6 * ( x[34] * x[9]) + 53140 == 0, x[0] * x[15] + 10 * (x[10] * x[6]) - 4 * (x[18] * x[30]) - x[21] * x[36] + 10 * (x[22] * x[3]) - 6 * ( x[24] * x[29]) + 2 * (x[24] * x[6]) - 4 * (x[26] * x[28]) + 3 * (x[27] * x[33]) - 3 * ( x[29] * x[32]) + 2 * (x[3] * x[36]) + 4 * x[32] * x[32] - 77977 == 0, -5 * (x[0] * x[18]) + 6 * (x[10] * x[11]) + 8 * (x[10] * x[33]) + 3 * (x[16] * x[30]) + 10 * (x[16] * x[34]) - 2 * ( x[18] * x[26]) + 7 * (x[23] * x[24]) - x[24] * x[24] + x[26] * x[7] + 3 * (x[30] * x[6]) - 8 * x[4] * x[ 4] - 24347 == 0, 9 * (x[0] * x[13]) - 7 * (x[0] * x[6]) + x[10] * x[6] + 2 * (x[11] * x[16]) - 7 * (x[11] * x[5]) - 4 * x[12] * x[ 12] - 3 * (x[13] * x[26]) - 7 * (x[16] * x[8]) + 9 * (x[17] * x[21]) + 3 * (x[21] * x[22]) + 9 * ( x[21] * x[34]) - x[26] * x[28] - 7 * x[28] - 5 * (x[31] * x[4]) + 10 * (x[31] * x[7]) + 62888 == 0, -3 * (x[0] * x[34]) - 5 * (x[1] * x[24]) + 3 * (x[1] * x[32]) + x[1] * x[9] - 3 * (x[10] * x[22]) - 6 * ( x[11] * x[8]) + 3 * (x[12] * x[17]) + 10 * (x[13] * x[26]) + 9 * (x[14] * x[29]) + 3 * ( x[17] * x[4]) - 2 * (x[17] * x[8]) + 9 * (x[19] * x[28]) - 4 * (x[2] * x[29]) - 4 * ( x[22] * x[26]) - 2 * (x[22] * x[34]) + 9 * x[24] * x[24] + 4 * (x[24] * x[33]) - 2 * ( x[24] * x[8]) + 7 * (x[25] * x[37]) + 7 * (x[26] * x[4]) + 2 * (x[27] * x[37]) + 6 * ( x[27] * x[5]) - 7 * (x[27] * x[7]) - 2 * (x[29] * x[8]) - 2 * (x[8] * x[9]) - 84926 == 0, -6 * (x[1] * x[27]) + 5 * x[1] + x[14] * x[34] - x[14] * x[35] - 4 * (x[15] * x[2]) + 9 * (x[15] * x[3]) - x[21] * x[30] - x[22] * x[34] + 8 * (x[23] * x[24]) - 8 * (x[24] * x[29]) + 7 * x[28] - 6 * (x[29] * x[31]) + 2 * ( x[31] * x[34]) + x[31] * x[7] - 7 * (x[33] * x[4]) + 4 * (x[36] * x[9]) + 10 * x[5] + 79219 == 0, 7 * (x[0] * x[36]) - 6 * x[1] * x[1] + 7 * (x[1] * x[33]) + 7 * (x[1] * x[6]) + 3 * (x[12] * x[31]) + 8 * ( x[16] * x[24]) - 6 * (x[2] * x[22]) + 9 * (x[21] * x[34]) + 4 * (x[26] * x[28]) + 10 * ( x[3] * x[31]) - 4 * x[33] * x[33] - 2 * (x[37] * x[8]) - 187557 == 0, 8 * (x[0] * x[37]) - 6 * (x[0] * x[4]) + 8 * (x[10] * x[6]) + 2 * (x[13] * x[26]) + 3 * (x[15] * x[3]) + 3 * ( x[16] * x[36]) + 5 * (x[2] * x[24]) + 10 * (x[21] * x[31]) - 4 * (x[23] * x[6]) - 8 * ( x[30] * x[32]) - 5 * (x[32] * x[36]) + 4 * (x[33] * x[37]) + 5 * (x[33] * x[6]) - 2 * x[34] + 5 * x[ 36] - 2 * x[8] * x[8] - 127612 == 0, -8 * x[0] * x[0] - 2 * (x[14] * x[35]) + x[16] * x[19] + 5 * (x[16] * x[31]) + x[2] * x[8] + x[22] * x[22] + 5 * ( x[26] * x[3]) + 3 * (x[27] * x[29]) + 10 * (x[34] * x[9]) - 22547 == 0, 7 * (x[10] * x[22]) + 8 * (x[10] * x[29]) - 8 * x[12] - 6 * (x[15] * x[37]) - 6 * (x[16] * x[20]) - 6 * ( x[16] * x[3]) + 10 * (x[18] * x[5]) - 5 * (x[2] * x[8]) - 2 * (x[22] * x[35]) - 3 * ( x[22] * x[7]) + 10 * x[22] + 8 * (x[27] * x[28]) + 10 * (x[28] * x[4]) - 3 * (x[3] * x[33]) + 2 * x[ 31] - 105931 == 0, -7 * (x[1] * x[12]) - 8 * (x[10] * x[16]) - 8 * (x[11] * x[26]) - 4 * (x[11] * x[5]) + 5 * (x[12] * x[14]) + 5 * ( x[13] * x[26]) - 8 * (x[15] * x[9]) - 6 * (x[18] * x[3]) + x[21] * x[9] - 2 * (x[25] * x[27]) + 10 * ( x[26] * x[7]) + 6 * x[26] + 9 * (x[27] * x[32]) + 5 * (x[3] * x[6]) + 7 * x[3] - 4 * ( x[33] * x[5]) + 139254 == 0, 5 * (x[0] * x[8]) + 4 * (x[0] * x[9]) + 2 * (x[12] * x[27]) + 5 * (x[12] * x[31]) - 2 * (x[12] * x[9]) + x[14] * x[ 20] - 8 * (x[17] * x[20]) - 4 * (x[17] * x[31]) - 4 * (x[18] * x[4]) + 4 * (x[2] * x[23]) - 8 * ( x[20] * x[3]) - 2 * (x[21] * x[30]) - 8 * (x[24] * x[6]) + 5 * (x[27] * x[30]) - 6 * ( x[32] * x[5]) + 8620 == 0, 8 * (x[0] * x[29]) + 2 * (x[1] * x[17]) + 6 * (x[10] * x[4]) + 4 * (x[12] * x[19]) + 5 * x[13] * x[13] + 2 * ( x[13] * x[26]) + x[14] * x[26] + 3 * x[16] + 4 * (x[17] * x[2]) + 6 * (x[17] * x[21]) + 8 * ( x[17] * x[26]) + 5 * (x[19] * x[35]) + 10 * (x[2] * x[28]) - 5 * (x[22] * x[29]) + 3 * ( x[25] * x[32]) + 7 * (x[26] * x[7]) + 9 * (x[31] * x[5]) - 2 * x[34] * x[34] - 406015 == 0, 9 * (x[1] * x[2]) + 4 * (x[1] * x[36]) - 3 * (x[11] * x[31]) + 7 * (x[13] * x[8]) + 3 * (x[15] * x[3]) + x[16] * x[ 26] + 4 * (x[17] * x[23]) - 2 * (x[2] * x[21]) + 5 * x[2] - 3 * (x[23] * x[25]) + 4 * (x[25] * x[7]) + 4 * ( x[3] * x[4]) + x[31] * x[37] + 7 * (x[32] * x[36]) - 262436 == 0, x[1] * x[26] + 5 * (x[1] * x[37]) + 4 * (x[11] * x[3]) + x[12] * x[29] - 2 * (x[13] * x[4]) - 4 * ( x[15] * x[26]) + 2 * (x[16] * x[26]) - 2 * (x[19] * x[22]) + 7 * x[19] + 3 * (x[2] * x[31]) + 9 * ( x[21] * x[29]) + 7 * (x[30] * x[36]) + 5 * (x[31] * x[32]) - 6 * (x[36] * x[6]) - 2 * x[ 8] - 205386 == 0, -3 * (x[10] * x[4]) + 7 * (x[13] * x[31]) - 8 * (x[17] * x[8]) + 10 * (x[18] * x[32]) - 7 * (x[18] * x[36]) - 6 * ( x[2] * x[33]) - 3 * (x[23] * x[25]) - 7 * (x[26] * x[35]) + x[27] * x[31] - 5 * ( x[28] * x[32]) + 122684 == 0, 9 * (x[0] * x[20]) - 5 * (x[0] * x[26]) + 4 * (x[1] * x[23]) - 2 * (x[13] * x[25]) + 6 * (x[14] * x[23]) + 7 * ( x[14] * x[36]) + 10 * (x[15] * x[3]) - 3 * x[17] * x[17] + 6 * (x[19] * x[25]) + x[20] * x[5] - 8 * ( x[22] * x[29]) + 8 * (x[23] * x[27]) + 6 * (x[26] * x[31]) + 8 * (x[3] * x[5]) - 5 * ( x[31] * x[7]) - 4 * (x[34] * x[6]) - x[35] * x[7] - 268486 == 0 ) if s.check() == sat: model = s.model() flag = "" for i in range(38): val = model[x[i]].as_long() flag += chr(val) print(f"x[{i}] = {val} -> {chr(val)}") print(flag) else: print("noooooooooooooooooooooooooooooooo") #flag{d20b0ef93913197024a27756d7c3181c}
|