from z3 import *
a1=[Int(f"a1{i}")for i in range(16)]
s=Solver()
s.add(-202850 *a1[0] == -34078800)
s.add( 182136 * a1[0]- 75396 * a1[1] == 18610884 )
s.add(-360745 * a1[1] - 465588 * a1[2] - 300043 * a1[0]==-145478307)
s.add(-360745 * a1[1] - 465588 * a1[2] - 300043 * a1[0]== -145478307)
s.add(31288 * a1[0] + -324524 * a1[3] + -89265 * a1[1] - 239750 * a1[4] - 241348 * a1[2] == -91924377)
s.add(-402351 * a1[4]
+ -496724 * a1[0]
+ 367831 * a1[2]
+ 371046 * a1[5]
+ -123257 * a1[3]
+ 188174 * a1[1]
+ 178541 * a1[6] == -37352471)
s.add( -415443 * a1[1]
+ 237549 * a1[5]
-323336 * a1[7]
-207212 * a1[3]
-23780 * a1[0]
+ 94300 * a1[4]
+ 364867 * a1[6]
+ 273839 * a1[2] == -8993582 )
s.add(511561 * a1[5]
+ -215494 *a1[0]
+ 44567 * a1[6]
+ 179735 * a1[2]
+ 55541 * a1[8]
-204854 * a1[7]
-160275 * a1[1]
+ 441741 * a1[4]
+ 443248 * a1[3] == 57425926)
s.add( 407430 * a1[0]
+ 407030 * a1[3]
+ 503571 * a1[6]
-434809 * a1[5]
+ 385646 * a1[4]
+ 437781 * a1[7]
+ 20147 * a1[9]
-10713 * a1[2]
- 247694 * a1[8]
+ 4963 * a1[1] == 267063706 )
s.add(128236 * a1[7]
-189787 * a1[4]
+ 298269 * a1[2]
+ 117737 * a1[8]
-59638 * a1[1]
+ 503873 * a1[5]
-288072 * a1[9]
-449297 * a1[3]
-307883 * a1[6]
- 60891 *a1[0]
+ 313065 * a1[10]== -99001600)
s.add( 127585 * a1[3]
+ 447223 * a1[10]
-511720 *a1[0]
-64919 * a1[1]
-115935 * a1[11]
-328029 * a1[6]
+ 2659 * a1[4]
-246110 * a1[2]
-491943 * a1[8]
-392232 * a1[9]
- 178041 * a1[5]
+ 49684 * a1[7] == -319105050)
s.add(431281 * a1[7]
+ 303436 * a1[10]
+ 322142 * a1[8]
+ 190343 * a1[2]
+ 522606 * a1[5]
-368910 * a1[9]
+ 427328 * a1[12]
-403570 * a1[11]
-430137 *a1[0]
+ 436111 * a1[4]
-435520 * a1[6]
- 267519 * a1[3]
- 525665 * a1[1] == -150506496)
s.add( -423522 * a1[4]
-393086 * a1[6]
-323745 * a1[12]
+ 463495 * a1[1]
+ 345256 * a1[8]
+ 138356 * a1[7]
-225302 *a1[0]
+ 251299 * a1[11]
-82368 * a1[9]
-428085 * a1[10]
+ 71943 * a1[13]
+ 425456 * a1[2]
+ 56298 * a1[3]
- 365233 * a1[5] == -14594715)
s.add( -26106 * a1[14]
-143761 * a1[3]
+ 15549 * a1[13]
-503539 * a1[10]
-398270 * a1[9]
+ 36874 * a1[2]
-84278 * a1[7]
+ 434801 * a1[12]
-472636 *a1[0]
+ 448925 * a1[8]
-46393 * a1[5]
-129268 * a1[4]
-43783 * a1[11]
+ 60534 * a1[6]
+ 441341 * a1[1] == -38159340)
s.add(-408983 * a1[3]
-453493 * a1[9]
+ 246957 * a1[5]
+ 197292 * a1[15]
+-62054 * a1[8]
+-21100 * a1[6]
+-500028 * a1[14]
+-386306 * a1[2]
+ 415182 * a1[13]
+ 24237 * a1[0]
+ -414063 * a1[4]
+ 524530 * a1[1]
+ 93336 * a1[10]
+ 7350 * a1[12]
+ 129819 * a1[11]
- 293569 * a1[7] == -124057838)
if s.check()==sat:
m=s.model()
k=[m[v] for v in a1]
print(k)
a=[168, 159, 81, 112, 113, 9, 237, 115, 241, 171, 137, 168, 73, 113, 103, 55]
for i in range(8):
a[i+8]^=a[i]
for i in range(len(a)):
print(hex(a[i])+",",end='')
a = [0x25, 0x3A, 0x4C, 0x27, 0x8E, 0x5F, 0xA8, 0xC5, 0x20, 0xC2, 0xFF, 0x8B, 0x28, 0x30, 0xB4, 0x3C,
0x19, 0xC0, 0x2F, 0x6A, 0x65, 0x24, 0x8C, 0x13, 0x7E, 0xF6, 0x3E, 0x17, 0xDD, 0x89, 0x55, 0x82,
0x57, 0x03, 0xF1, 0xE1, 0x3D, 0xB8, 0x31, 0x67, 0x00, 0x22, 0x2D, 0xA7, 0x32, 0x58, 0x8F, 0xCF,
0x78, 0x39, 0x73, 0x44, 0x34, 0xD8, 0x77, 0x12, 0x88, 0xF5, 0x51, 0x75, 0xC9, 0x7F, 0x7B, 0x0F,
0xE5, 0xF8, 0x6E, 0xE2, 0x83, 0x05, 0x47, 0x72, 0xFE, 0xE0, 0xF7, 0xF0, 0x04, 0x9A, 0x80, 0x1C,
0x8D, 0xEF, 0x4E, 0x33, 0xAA, 0x66, 0x9C, 0x37, 0xB1, 0x21, 0x85, 0x1D, 0xAF, 0x81, 0x42, 0x5B,
0xC7, 0x9D, 0xE6, 0x38, 0x8A, 0x49, 0x7A, 0xAE, 0xD0, 0xDF, 0xFB, 0x79, 0x18, 0xDC, 0xF3, 0xA5,
0x59, 0x29, 0xEB, 0xB0, 0x0D, 0x43, 0xEC, 0xEE, 0xCC, 0x2E, 0xF9, 0x08, 0x74, 0x5E, 0x50, 0xBA,
0xE4, 0x61, 0xA6, 0x14, 0x54, 0xE8, 0xDB, 0xB5, 0xFA, 0xD9, 0xED, 0xA3, 0x01, 0xB3, 0x11, 0x2B,
0x96, 0x6F, 0x52, 0x36, 0x23, 0x16, 0x1E, 0xF2, 0x40, 0x6C, 0x48, 0x35, 0x9E, 0xB9, 0x45, 0xC3,
0x02, 0x7D, 0x97, 0x94, 0x4A, 0xD1, 0x95, 0xCB, 0xC4, 0x2C, 0xA4, 0x15, 0x07, 0xBD, 0xA2, 0xAB,
0x9F, 0xB6, 0x9B, 0xFD, 0xB2, 0x53, 0x64, 0x5A, 0xDE, 0x0B, 0x70, 0xBE, 0x76, 0xE9, 0x4D, 0xBF,
0xEA, 0xF4, 0xAC, 0x86, 0x0C, 0x6B, 0x63, 0x5C, 0x71, 0x91, 0x2A, 0x3B, 0x09, 0x90, 0xFC, 0x98,
0x46, 0xA9, 0x69, 0xB7, 0xD7, 0xDA, 0xC1, 0x93, 0xC8, 0xD4, 0x06, 0x4F, 0x62, 0x6D, 0x3F, 0xBC,
0x92, 0x84, 0x26, 0x68, 0x60, 0xE3, 0xD6, 0xC6, 0xCA, 0x1A, 0xCE, 0xAD, 0x10, 0x1F, 0xBB, 0x41,
0x7C, 0xA0, 0x5D, 0x0E, 0x1B, 0x99, 0xE7, 0x4B, 0xD2, 0xCD, 0x0A, 0xD3, 0xA1, 0x87, 0xD5, 0x56]
b = [0xa8, 0x9f, 0x51, 0x70, 0x71, 0x9, 0xed, 0x73, 0x59, 0x34, 0xd8, 0xd8, 0x38, 0x78, 0x8a, 0x44]
for i in b:
for j in range(len(a)):
if i == a[j]:
print(hex(j) + ',', end='')
data=[0xba3ab006,0x328accc8,0x35353470,0x33643063,0x6563696E,0x756F7932]
key= [0x35353470, 0x33643063, 0x6563696E, 0x756F7932]
detal=0x12345678
for i in range(0,len(data),+2):
sum1= (detal * 32) & 0xFFFFFFFF
for j in range(32):
a1=data[i]
a2=data[i+1]
data[i+1]=(data[i+1]-((key[3]+(a1>>5))^(sum1+a1)^(key[2]+(a1<<4)))) & 0xFFFFFFFF
data[i]=(data[i]-((key[1]+(data[i+1]>>5))^(sum1+data[i+1])^(key[0]+(data[i+1]<<4)))) & 0xFFFFFFFF
sum1=(sum1-detal) & 0xFFFFFFFF
bytes_data=b''.join(x.to_bytes(4,'little')for x in data)
flag=bytes_data.decode('utf-8')
print(flag)