nss3327(第五周培训内容)
这个源文件打开不知道为什么会出错,甚至都运行不了,所以我在在线网站上上传了源码,获得了一个正常的源码。
以上是错误的源码,以下是正常的,所以如果大家在解这个题有问题的时候,可以去看。
这个题的文档里面告诉我们了
0x17, 0x65, 0x54, 0x89, 0xed, 0x65, 0x46, 0x32, 0x3d, 0x58, 0xa9, 0xfd, 0xe2, 0x5e,
0x61, 0x97, 0xe4, 0x60, 0xf1, 0x91, 0x73, 0xe9, 0xe9, 0xa2, 0x59, 0xcb, 0x9a, 0x99,
0xec, 0xb1, 0xe1, 0x7d
当我们输入正确的flag加密后会输出以上的结果,那我们意思是需要去解密。那现在我们来搞一下吧
解释以下代码
关于这个题内的大小端序
我们做这个题,我们需要先知道uint32_t这个类型的字节(4字节)
这段代码中里面 1. 0xff 的二进制是 11111111
2. eg:v[0]是4字节则二进制是 00000000 00000000 00000000 00000000
-
k这个就是4字节,所以k就是4,每次循环需要把最右面的1个字节给去除就这样简单。
我的dev的c++有问题,在打开这个文件的时候我们不可以进行,所以我是在在线网站上运行的。
4.我们知道在tea加密中,我们加密的时候,需要先将v0 += ((v1 << 4) + k[0]) ^ (v1 + sum) ^ ((v1 >> 5) + k[1]);然后再将v1 += ((v0 << 4) + k[2]) ^ (v0 + sum) ^ ((v0 >> 5) + k[3]);二者互相影响,并且有先后顺序,我们在逆向的时候需要把v0和v1的顺序调换,并且变为-=.同理:sum也应该去-=delta。
5.为了让我的结果直接呈现字符串,我们可以把我们的输出数据变为字符串,就可以的到flag
以下是成品