<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    JustRe

    第一部分:

    兩端執行相同操作,看其中一個即可。

    from z3 import *
    
    base_data = [0x78B09135,0xE78DBAE5,0xFB0C084A, 0x3B5C0EA2,0x82C7F904,0xF937EE81,0xEB130A06,0x3B4D7202,0x3ACC6A08,0x045A0A49, 0x26E84E1B,0x5513B95C, 0x3B4D8209,0xAD132C0D,  0x044BEE4A,0x61164B1F]
    
    base_data = [0x79B19266,  0x0E88EBBB6,  0x0FC0D093B, 0x3C5D0F73,  0x83C8FA15,      0x0FA38EF92,  0x0EC140B17, 0x3C4E7313, 0x3BCD6B19,  0x55B0B5A,0x27E94F0C,0x5614BA4D,0x3C4E831A,0x0AE142D1E, 0x54CEF5B,    0x62174C10]
    
    func_data = [0x83EC8B55,0xEC81F0E4,0x00000278,0x405004A1,0x89C43300,0x02742484,0x100F0000,0x4041A805,0x41C0A000,0x0F560040,0x2C244411,0x7E0FF357,0x4041B805,0xD60F6600,0x0F402444,0x6A0A4110]
    
    
    f1 = BitVec('f1', 4*8)
    f2 = BitVec('f2', 4*8)
    
    # f1 = Int("f1")
    # f2 = Int("f2")
    
    solver = Solver()
    
    for i in range(16):
    
        solver.add(func_data[i] == ((f1 + i) ^ ((0x1010101 * f2) + base_data[i])))   
    
    s = solver.check()
    m = solver.model()
    
    print hex(int(str(m[f1])))[2:], hex(int(str(m[f2])))[2:]
    
    # 13242218 18

    第二部分 密鑰為 “AFSAFCEDYCXCXACNDFKDCQXC” 的3des算法。直接算即可

    from Crypto.Cipher import DES3
    import base64
    
    BS = DES3.block_size
    
    
    def pad(s):
        return s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
    
    
    def unpad(s):
        return s[0:-ord(s[-1])]
    
    
    class prpcrypt():
        def __init__(self, key):
            self.key = key
            self.mode = DES3.MODE_ECB
    
        def encrypt(self, text):
            text = pad(text)
            cryptor = DES3.new(self.key, self.mode)
            x = len(text) % 8
            if x != 0:
                text = text + '\0' * (8 - x)
            # print(text)
            self.ciphertext = cryptor.encrypt(text)
            return (self.ciphertext).encode("hex")
    
        def decrypt(self, text):
            cryptor = DES3.new(self.key, self.mode)
            # de_text = base64.standard_b64decode(text)
            plain_text = cryptor.decrypt(text)
            st = str(plain_text.decode("utf-8")).rstrip('\0')
            print st.encode("hex")
            print st
            out = unpad(st)
            return out
    
    # 507CA9E68709CEFA20D50DCF90BB976C  #9090F6B07BA6A4E8
    
    cipher = "507CA9E68709CEFA20D50DCF90BB976C".decode("hex")
    
    p = prpcrypt("AFSAFCEDYCXCXACNDFKDCQXC")
    
    print p.decrypt(cipher)

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类