smc自解密,md5加密密钥,然后aes加密
可以看到需要先对函数402219解密才能得到该函数,可以使用idapython也可以直接动态调试,这里我直接使用动态调试,让其自解密
可以我们的输入在402219中起作用,进入207B函数中可以发现是md5加密(0x123456789是他的标识符),也可以直接用findcrypto插件发现,当然需要自己安装
402219中为aes加密,因为它将加密数据分成了两部分进行加密
bing的解释是:
判断密文的加密方式有以下几种方法:
如果密文的长度是16字节的整数倍,并且没有任何重复的块,那么可能是CTR或OFB模式3。
如果密文的长度是16字节的整数倍,并且有重复的块,那么可能是ECB或CBC模式3。ECB模式下,相同的明文块会产生相同的密文块,所以重复的块更容易被发现1。CBC模式下,相同的明文块不一定会产生相同的密文块,因为每个块都与前一个块进行异或操作1。但是如果明文中有大量的零或其他常数值,那么CBC模式下也可能出现重复的块3。
如果密文的长度不是16字节的整数倍,那么可能是CFB模式3。CFB模式下,可以对任意长度的明文进行加密,而不需要进行填充1。
from Cryptodome.Cipher import AES
enc = [0xBC, 0x0A, 0xAD, 0xC0, 0x14, 0x7C, 0x5E, 0xCC, 0xE0, 0xB1,
0x40, 0xBC, 0x9C, 0x51, 0xD5, 0x2B, 0x46, 0xB2, 0xB9, 0x43,
0x4D, 0xE5, 0x32, 0x4B, 0xAD, 0x7F, 0xB4, 0xB3, 0x9C, 0xDB,
0x4B, 0x5B]
md5= [0xcb, 0x8d, 0x49, 0x35, 0x21, 0xb4, 0x7a, 0x4c,
0xc1, 0xae, 0x7e, 0x62, 0x22, 0x92, 0x66, 0xce]
mode = AES.MODE_ECB
key = bytes(md5)
text = bytes(enc)
cryptos = AES.new(key, mode)
cipher_text = cryptos.decrypt(text)
print(cipher_text)
flag{924a9ab2163d390410d0a1f670}