BUU-[GWCTF 2019]re3
AES加密逆向学习
https://blog.csdn.net/zhangmiaoping23/article/details/8949290
ECB模式 平均分组 每组互不干扰
CBC模式 平均分组 改明文和前一个密文异或之后再进行加密 所以需要一个初始化数组对第一组异或
一般来说AES加密前会调用一个函数对密匙进行拓展 然后才会处理明文
解题:
首先输入为32位 之后的sub_402219()又一个异或 只能动态查看了
使用插件发现以下这么多加密
并且sub_40207B如下
这个函数内没有用到Input 且最终得到的值还是在参数unk_603170里面 我们可以动态get值
动态之后的sub_402219()
首先是密匙扩展 然后是等分为两组分别加密 这里能判断出是ECB模式的加密
以下摘录自 https://blog.csdn.net/heyatzw/article/details/76165635
电码本模式(Electronic Codebook Book (ECB)
这种模式是将整个明文分成若干段相同的小段,然后对每一小段进行加密
密码分组链接模式(Cipher Block Chaining (CBC))
这种模式是先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。
之后一个for循环对比 写出脚本解密即可
from Crypto.Cipher import AES from Crypto.Util.number import * f = open('so.in') a = '' for i in range(2): s = f.readline() for j in range(16): a += chr(int(s[j*3:j*3+2],16)) b = '' s = f.readline() for j in range(16): b += chr(int(s[j*3:j*3+2],16)) print a,b _aes = AES.new(b,mode = AES.MODE_ECB) print _aes.decrypt(a)
补充。。。
so.in内容
BC 0A AD C0 14 7C 5E CC E0 B1 40 BC 9C 51 D5 2B 46 B2 B9 43 4D E5 32 4B AD 7F B4 B3 9C DB 4B 5B CB 8D 49 35 21 B4 7A 4C C1 AE 7E 62 22 92 66 CE