type
status
date
slug
summary
tags
category
icon
password
Tea
直接来看代码吧,看不明白下面有详解和注释
有的地方初次看的话,会有很多地方看不懂, 所以下面解释一下
但我们需要知道的东西是
Tea 算法有一个魔数 delta=0x9e3779b9
这个值,是标准 tea 算法的魔数,如果看到这个特征值多半就是 tea 加密
然后我们看到解密算法里面有一个数
sum=0xC6EF3720
这个数是怎么来的呢?
很简单记住一个公式就行
Delta * 加密轮数然后从后面取 8 位
比如这里:
delta * 0x20 (32) = 0x13C6EF3720
这里取 8 位的话,就是0xC6EF3720
然后再解释一下左移和右移
左移多少位就是该值乘以 2 的移位次方
相反右移多少位就是该值除以 2 的移位次方
举例:
a<<4 表示 a 乘以 2 的 4 次方
a>>5表示a除以2的5次方
a 移动 x 位表示对 a 进行 2 的 x 次方操作
由于是函数传参用的 eax 寄存器,用来存储 32 位的无符号整数,最大 4 字节,所以多出来的会省去
举个例子:如果是 0x1b2ceed32f,则会看到 0x2ceed32f,在这里先提个醒,下面直接分析加密算法:
加密流程图
图解符号:
方框:相加盒。将指向该盒的变量进行相加
圆圈:异或盒。将指向该盒的变量进行异或
知道了加密,解密就很简单了,直接逆过来就是了
上面的这是标准的 tea 算法,
然后我们可以进一步魔改如下
这里改变特征值,然后加密算法微调,加了异或而已,就完成了魔改工作
Xtea
一样,上xtea算法代码
这里主要需要说的是
key[sum & 3]
,key[(sum >> 11) & 3]
, 建议动调看一下,这里其实就是简单的取出 key 数组的值Xtea 考的不是很多,我们只需要记住在 tea 算法的基础上,再记住特征,
key[sum&3]
,key[(sum >> 11) & 3
还有轮转数的选择,就可以认出 Xtea算法了加密流程图:
图解符号:
方框:相加盒。将指向该盒的变量进行相加
圆圈:异或盒。将指向该盒的变量进行异或
Xxtea
一样上代码
这里说一下,注意注释里面写的特征值,然后可以根据特征值识别 xxtea 算法,然后加密细节强烈建议动调一下,你就会明白原理了,光看代码是没用的
加密流程图:
图解符号:
方框:相加盒。将指向该盒的变量进行相加
圆圈:异或盒。将指向该盒的变量进行异或
总结
知道加密原理,才能应对任何魔改,只有自己乱改,才能逆向出别人的奇淫技巧魔改,标准的 tea 系列算法现在已经被很多密码工具箱集成了,python 也有一个 tea 系列算法加解密库
不过,再多的工具,不知道原理,只会是成为像 web 手那样满天飞的脚本小子,没错说的就是我这个脚本小子