-
-
[原创]第25题
-
发表于: 2016-12-21 01:01 2691
-
确定字符规律为以L为分割,
在第一处校验比较时直接跳过,到后面解密算法处:
分析算法,确定为camellia算法
然后在以下位置:
因此找到密钥和需要的解密后的数据
因而得到加密后的数据
因此剩下了解码过程:
明天继续。。。
接着昨天来,在上面的一串结果使用前还有一个dword的验证,
这四个字节和上面的十六个字节组成20字节的数组,由输入的
数据编码生成,而输入长度为35-3的32字节,同时看到编码用
到了字串AB......90,所以判断编码为base32编码编码,然后:
得到结果:
981C2H7QAZZ009EJ79BT2BSCVTAFQQDB
插入3个L即答案.
在第一处校验比较时直接跳过,到后面解密算法处:
分析算法,确定为camellia算法
然后在以下位置:
0040348B |. 8BC8 MOV ECX,EAX 0040348D |. 51 PUSH ECX 0040348E |. 8DB424 300100>LEA ESI,DWORD PTR SS:[ESP+130] 00403495 |. 8D8C24 440100>LEA ECX,DWORD PTR SS:[ESP+144] 0040349C |. E8 BFF2FFFF CALL KanxueCT.00402760 ; F2 93 C5 B4 F5 95 004034A1 |. 83C4 04 ADD ESP,4
//camellia_setkey_dec(&camellia, tmp, keysize); //camellia_crypt_ecb(&camellia, CAMELLIA_DECRYPT, data, buf);
因此找到密钥和需要的解密后的数据
unsigned char key[16] = { 0xA2, 0x7F, 0x82, 0x60, 0xB5, 0x91, 0x62, 0x54, 0x17, 0x06, 0x14, 0xEB, 0x60, 0xA2, 0xDB, 0x1F }; unsigned char data[16] = { 0xA8, 0x27, 0xF7, 0x4B, 0x09, 0x79, 0x23, 0xC9, 0xC9, 0x6B, 0x97, 0x95, 0xEB, 0xE6, 0x92, 0x38 };
因而得到加密后的数据
f7 6c 2b 9f 8d 05 6b ff f8 88 e7 83 0b 85 e2 8c
因此剩下了解码过程:
明天继续。。。
接着昨天来,在上面的一串结果使用前还有一个dword的验证,
这四个字节和上面的十六个字节组成20字节的数组,由输入的
数据编码生成,而输入长度为35-3的32字节,同时看到编码用
到了字串AB......90,所以判断编码为base32编码编码,然后:
unsigned char t[20] = { 0xf7, 0x6c, 0x2b, 0x9f, 0x8d, 0x05, 0x6b, 0xff, 0xf8, 0x88, 0xe7, 0x83, 0x0b, 0x85, 0xe2, 0x8c, 0x00, 0x56, 0xb4, 0x61 }; unsigned char res[32] = { 0 }; int main(int argc, char* argv[]) { base32Encode(res, t, 20); return 0; }
得到结果:
981C2H7QAZZ009EJ79BT2BSCVTAFQQDB
插入3个L即答案.
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
看原图
赞赏
雪币:
留言: