首页
社区
课程
招聘
[原创]第25题
发表于: 2016-12-21 01:01 2691

[原创]第25题

2016-12-21 01:01
2691
确定字符规律为以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期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//