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)
	
 posted on 2025-08-22 21:40  hellv  阅读(79)  评论(0)    收藏  举报