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
| opcode = [0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x67, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x8C, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x50, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x7A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x4E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6F, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x7E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x10, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x06, 0x00, 0x34, 0x02, 0x04, 0x00, 0x3D, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x42, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x0C, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x47, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x09, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x5C, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x09, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x43, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x0B, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x1F, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x2D, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x5A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x0A, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x34, 0x02, 0x04, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x2B, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x34, 0x02, 0x03, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x3A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x32, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x09, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x64, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6C, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x0A, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x39, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x3B, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x74, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0xC8, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x58, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6F, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x68, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x74, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6D, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x34, 0x02, 0x02, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x38, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x34, 0x02, 0x01, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x33, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x82, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x45, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x08, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x79, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3A, 0x00, 0x01, 0x00, 0x34, 0x01, 0x03, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x7A, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x34, 0x02, 0x03, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x3E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x34, 0x02, 0x02, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x04, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x64, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x01, 0x00, 0x34, 0x02, 0x02, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x0F, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x40, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x02, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x02, 0x00, 0x34, 0x02, 0x01, 0x00, 0x3B, 0x01, 0x02, 0x01, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x05, 0x00, 0x6E, 0x00, 0x01, 0x00, 0x34, 0x01, 0x6E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x35, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x34, 0x00, 0xFF, 0x00, 0x34, 0x01, 0x01, 0x00, 0x3B, 0x00, 0x01, 0x00, 0x34, 0x01, 0x7E, 0x00, 0x3D, 0x00, 0x01, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00] from z3 import *
flag='' point=0 for i in range(38): s=Solver() var=[BitVec('zzz',8) ,0,0] tmp=var[0] while 1: op1=opcode[point] if op1==0x34 and opcode[point+1]==0: print ("0x34 0") s.add(var[0] >= ord(' ')) s.add(var[0]<= ord('~')) point+=4 continue if op1==0x34 and opcode[point+1]!=0: print ("0x34 1" ) var[opcode[point+1]]=opcode[point+2] point+=4 continue if op1==0x3b: print ("0x3b" ) if opcode[point+1]!=0 and opcode[point+2]!=0: var[opcode[point+1]]+=var[opcode[point+2]] else: var[0]+=var[opcode[point+2]] point+=4 continue if op1==0x6e: print ("0x6e") if opcode[point+1]!=0 and opcode[point+2]!=0: var[opcode[point+1]]^=var[opcode[point+2]] else: var[0]^=var[opcode[point+2]] point+=4 continue if op1==0x3d: print ("0x3d") if opcode[point+1]!=0 and opcode[point+2]!=0: var[opcode[point+1]]-=var[opcode[point+2]] else: var[0]-=var[opcode[point+2]] point+=4 continue if op1==0x3a: print ("0x3a" ) if opcode[point+1]!=0 and opcode[point+2]!=0: var[opcode[point+1]]*=var[opcode[point+2]] else: var[0]*=var[opcode[point+2]] point+=4 continue if op1==0x4f: print ("0x4f") s.add(var[0]==0) print (s) print (s.check()) result = s.model() flag += chr(result[tmp].as_long().real) point+=4 break raw_input()
print (flag)
|