SHA384-算法解密(2)还原元数据

2023-10-10 23:30

本文主要是介绍SHA384-算法解密(2)还原元数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SHA384-算法解密(2)还原元数据

上一次的讲解比较潦草,这次写的更全面详细一些。
首先各位,如果想要解开使用这个算法加密后的数据,必须先学会加密,才能解密。
声明:这里仅供学习研究,不要学了三脚猫功夫就去惹麻烦

适用于HTTPS/HTTP ,SOCKET 传输的变量需要加密
apk,web,webGame 都适用 短变量类型
不适用 文本.超文本.大文件

1. 什么是SHA384

SHA是哈希混淆散列,散列算法又称杂凑算法或哈希算法,能将一定长度的消息计算出固定长度的字符串(也可以叫摘要算法)。SHA包含5个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四者并称为SHA-2。
我个人观察评判,且各个行业使用优先的排列:
sha256->sba384->sha512->sha1
SHA-384最大计算明文长度为2^128bit,属于分组算法,分组长度为1024bit,产生的信息摘要长度为384bit。SHA-384算法属于密码杂凑算法,原则上不能通过密文推出明文。

2. 组成元 \符 \号

  • 一组数据为一元或一单元
  • 一符 为一转义,偏移,单步
  • 一号 为一运算,公式,组合
效果
<<<1<<kgfedcbahabcdefghm
h[k]=h[k]+h<<<[1]h0~h7m’
mod
s0 s1
w[i]
>>>k
>>k
~
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
h0~h7:864bit双字,初始哈希值,也存放每组计算的当前哈希值
abcdefgh:864bit双字,存放中间变量
m:消息
m':填充后的消息
mod:模运算
s0,s1:字节扩展时中间变量
S0S1,ch,maj,temp1,temp2:循环迭代时中间变量
w[i]:第i个扩展双字
∧:64bit与运算
∨:64bit或运算
⊕:异或运算
>>>k:循环右移k比特运算
>>k:右移k比特运算
←:左向赋值运算符
~64bit双字按位取反
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||_|_|D|I|A|B|L|O|

<<<1<<k :1是元 k是符, 向左偏移了1位 得出的1,就是元数据了。
为什么叫 元?
现在输入一个字符串:
abc
填充后消息:
0x61 0x62 0x63 0x80 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x18
————————————————————————————————
这里不是主要讲解去理解怎么加密的,而是带入一下话题,好让大家整理一下思路;
这里主要是做解密,所以要懂一些基础的原理。现在我们大概知道了元符号是怎么回事啦;
然后看一下这组数据有什么规律,或无规律?
要加密的数值为 50
在这里插入图片描述
这套算法其实是有漏洞可寻的,某些大厂的加密解密委托我测试研究;
不论你使用的工具也好,还是在线脚本,或者自己编写一个工具编写生成。
他都会有变动,不是100%的固定值。
公式是 ([生成端]时间+[被生成]数据)+虚拟混淆段
更像是 VMP虚拟壳一样,把数值虚拟化了,要从虚拟化的数据中找到真正的值,在解开;
搞过破解的都知道VMP,让不少crack头疼,我也其中之一 哈哈哈!。。。最后还是解开
你任何时间都可以测试,比如早上9.00整 加密一个数值,你多次的加密是一个值,但9.01就变了一个值。也可能到10点前都不变动,随机性很大。所以摸清楚一个元符号的规律要花几个星期不等的时间。
没有必要的数值,最好不要浪费时间!
当我把我的惊奇发现公布了以后,不少人DISS我,怎么可能,你有那么厉害吗?
我这里澄清一下,我是蒙的,一蒙就对了!真的!
蒙一个对了,蒙个3,5个都对吗?是的!就是对了!!

话归正传

从上面的十六进制里,完全看不出什么规律。过一段时间,在生成一个50的加密数据出来
放入UE里,以十六进制编辑模式打开
在这里插入图片描述
此时,发现头步的 04变成了06,结尾的e没有变化。
我们把公式拿过来拆解一下,看看有什么发现没有。
在这里插入图片描述

h= g
g= f
f= e
e= d + temp1
d= c
c= b
b= a
a= temp1 + temp2
赋值初始哈希值a= h0
b= h1
c= h2
d= h3
e= h4
f= h5
g= h6
h= h7

只需要关注十六进制你要找出的值,其余都是虚拟,障眼法!会干扰你的思路。
你在代入公式的时候,不妨把h看做0,即为0x00= 00;
那按照这个假设06= h6对吧?h6=g,g=f,那最后f一步一步偏移回到h;
如果你学过编程,那么这种赋值方式,f=e g=f,原有的数值还是在的,只是重新排列而已?
我们看一下50的十六进制是多少。
在这里插入图片描述
那么变化成元就是= cec0 在变成赋值的初始哈希
h2h4h2h0 然后把这个初始哈希 找出来。
初始哈希值:
h0=0xcbbb9d5dc1059ed8,
h1=0x629a292a367cd507,
h2=0x9159015a3070dd17,
h3=0x152fecd8f70e5939,
h4=0x67332667ffc00b31,
h5=0x8eb44a8768581511,
h6=0xdb0c2e0d64f98fa7,
h7=0x47b5481dbefa4fa4
我们这里用代码演示啦!

var temp=["0x9159015a3070dd17",  //把它扔进数组变量里
"0x67332667ffc00b31",
"0x9159015a3070dd17",
"0xcbbb9d5dc1059ed8"];//这里迭代 80次
for(i from 0 to 79){S1= (e >>> 14)  (e >>> 18)  (e >>> 41)ch= (e∧ f)  ((~ e) ∧ g)temp1= h + S1 + ch + k[i] + w[i]S0= (a >>> 28)  (a >>> 34)  (a >>> 39)maj= (a∧b)  (a∧c)(b∧c)temp2= S0 + maj
}
h= g
g= f
f= e
e= d + temp1
d= c
c= b
b= a
a= temp1 + temp2

大概的加密算法,可能不完整,但我主要不是研究写加密,是教大家怎么解开!不要DISS我
temp1= h + S1 + ch + k[i] + w[i]
就是说 第一次运算出的值,是总值,总值再做一次运算
那么来推导一次;
h=9159015a3070dd1767332667ffc00b319159015a3070dd170xcbbb9d5dc1059ed8,
S1=字节扩展时的中间变量,ch=循环迭代时中间变量;
字节变量= 0000000000000000000000000000000000000000000000006162638000000000

循环变量=470994ad30873f88086c5b2d36a89178470994ad30873f88470994ad30873f88

k[3][5]][3][0]=e9b5dba58189dbbc59f111f1b605d019e9b5dba58189dbbc428a2f98d728ae22
这样庞大计算力,显然不是人力能够计算的,就算依靠计算机的运算,没有百年,也解不开。

那怎么计算呢?

还记得刚才我说的 比对两个文件十六进制吗?
把刚才推导得出的答案 元cec0 转换为初始值 9159015a3070dd1767332667ffc00b319159015a3070dd17cbbb9d5dc1059ed8
把他扔进UE 以十六进制编辑查看
在这里插入图片描述
元数值是没有偏移的,所以偏移4位看看,b和a 发现了35 30?我们把他们反转一下在看
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210308022850873.png在这里插入图片描述
此时我们已经加密解密SHA384 -成功!
但这有些投机取巧,如果数值在庞大一些怎么计算?
怎么保证每次都成功?
如果不知道原数值怎么计算呢?

我只公布一小段,代表这套算法已经能被破解了,其它的算法也一样。
我是一个游戏前端,只是喜欢研究花里胡哨的东西
越是说的厉害邪乎的东西,我越想破解
哪个公司能收我?
大菠萝

我是大菠萝,欢迎各位切磋技术

有疑问或者问题尽管提问,或者PK一下

这篇关于SHA384-算法解密(2)还原元数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183867

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

C#实现将XML数据自动化地写入Excel文件

《C#实现将XML数据自动化地写入Excel文件》在现代企业级应用中,数据处理与报表生成是核心环节,本文将深入探讨如何利用C#和一款优秀的库,将XML数据自动化地写入Excel文件,有需要的小伙伴可以... 目录理解XML数据结构与Excel的对应关系引入高效工具:使用Spire.XLS for .NETC

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

MySQL中的DELETE删除数据及注意事项

《MySQL中的DELETE删除数据及注意事项》MySQL的DELETE语句是数据库操作中不可或缺的一部分,通过合理使用索引、批量删除、避免全表删除、使用TRUNCATE、使用ORDERBY和LIMI... 目录1. 基本语法单表删除2. 高级用法使用子查询删除删除多表3. 性能优化策略使用索引批量删除避免

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

Linux服务器数据盘移除并重新挂载的全过程

《Linux服务器数据盘移除并重新挂载的全过程》:本文主要介绍在Linux服务器上移除并重新挂载数据盘的整个过程,分为三大步:卸载文件系统、分离磁盘和重新挂载,每一步都有详细的步骤和注意事项,确保... 目录引言第一步:卸载文件系统第二步:分离磁盘第三步:重新挂载引言在 linux 服务器上移除并重新挂p