基于xor加密的英文文章的解密思路方法
程序员文章站
2022-04-07 09:57:49
xor是经常用到的简单高效的加密方法。
最近研究文本信息的xor加密的解密方法。(仅限于加密过程xor不会变化)
说说思路。希望大家给予补充。
这里...
xor是经常用到的简单高效的加密方法。
最近研究文本信息的xor加密的解密方法。(仅限于加密过程xor不会变化)
说说思路。希望大家给予补充。
这里 主要针对如下密文:
1原文是英文文章,并且大于100H字节。(长度越长,越容易解密)
2加密是简单的xor单字节运算。xor值可以是00-FF的任意数值
我的思路是这样:
怎么判断一段字符串,是英文文章,并且是没有加密的呢?
我的方法如下
1 绝大部分字符在20H-80H之间
2 少部分字符在00H-1FH之间,不会超过5个
比如换行符是0D0A,TAB是09
3 0A和0D的数量是相等的,(因为正常文章只有换行符拥有ODOA)
4 其他方法。比如常用单词,比如字母出现率(e出现概率很高)
如何判断一篇文章,是用相同的XOR进行单字节加密的呢?我的方法如下
1 Hex_sum(00-FF出现的字符数量)的多少,如果这个数量太大了,那么基本不是xor加密。
因为对于xor加密前后,这个数量是不会变的。 这里 我设为70H.
2(非常重要) 定位换行符的位置,就是0D 0A的位置。
因为 1 这2个字符是相等的,并且出现概率不会很低的。在大量字符的文章中,出现相等的字符概率是很低的。
2 这2个字符位置相近,经过xor加密后,位置也会控制在1-7之间
3 这2个字符附近的字符大部分为空。具体可以这样计算,所在起始位置AND 0E0H 后的20H中,有数据的字符不会超过5个
4 正常文件都会有换行符的。
我们的方法就是在密文中找到他们两个,然后xor到0D 0A为止。(如果不知道xor多少,可以先xor自己,再xor 0A)
那么 这就结束了吗?非也。如果原来0D是现在的0A 原来0A是现在的0D那么就不行了,属于解密不彻底。
怎么解决呢?方法很多,前面提到是否字符串判断的第四种方法就可以。
我这里采用一个简单但是不通用的,就是对比20H和27H
正常文章20H的数量是绝对大于27H的数量的 (20H是空格)
如果20H小于27H,那么再xor7就可以了
。
文笔比较差,我们通过一个实例来分析
datahack.exe是我写了一个程序,具有针对这样加密字符串的解密功能。
图片1是我们的解密对象。
图片2是这个图片的字节分析。(各种字节的数量多少)
我们发现,这里相等2个字符分别是7AH和7DH
所以我们对他xor运算,XOR 70H
接下来 就是图3和图4了
这时候0AH和0DH已经相等,可是我们发现字符串并不是我们想要的字符串。仔细看会发现20出现概率很低,27出现概率很高。所以我们把他再xor7 就得到了明文。这时候就是图五和图六
解密成功。
为什么xor7? 因为0D XOR OA=7
最近研究文本信息的xor加密的解密方法。(仅限于加密过程xor不会变化)
说说思路。希望大家给予补充。
这里 主要针对如下密文:
1原文是英文文章,并且大于100H字节。(长度越长,越容易解密)
2加密是简单的xor单字节运算。xor值可以是00-FF的任意数值
我的思路是这样:
怎么判断一段字符串,是英文文章,并且是没有加密的呢?
我的方法如下
1 绝大部分字符在20H-80H之间
2 少部分字符在00H-1FH之间,不会超过5个
比如换行符是0D0A,TAB是09
3 0A和0D的数量是相等的,(因为正常文章只有换行符拥有ODOA)
4 其他方法。比如常用单词,比如字母出现率(e出现概率很高)
如何判断一篇文章,是用相同的XOR进行单字节加密的呢?我的方法如下
1 Hex_sum(00-FF出现的字符数量)的多少,如果这个数量太大了,那么基本不是xor加密。
因为对于xor加密前后,这个数量是不会变的。 这里 我设为70H.
2(非常重要) 定位换行符的位置,就是0D 0A的位置。
因为 1 这2个字符是相等的,并且出现概率不会很低的。在大量字符的文章中,出现相等的字符概率是很低的。
2 这2个字符位置相近,经过xor加密后,位置也会控制在1-7之间
3 这2个字符附近的字符大部分为空。具体可以这样计算,所在起始位置AND 0E0H 后的20H中,有数据的字符不会超过5个
4 正常文件都会有换行符的。
我们的方法就是在密文中找到他们两个,然后xor到0D 0A为止。(如果不知道xor多少,可以先xor自己,再xor 0A)
那么 这就结束了吗?非也。如果原来0D是现在的0A 原来0A是现在的0D那么就不行了,属于解密不彻底。
怎么解决呢?方法很多,前面提到是否字符串判断的第四种方法就可以。
我这里采用一个简单但是不通用的,就是对比20H和27H
正常文章20H的数量是绝对大于27H的数量的 (20H是空格)
如果20H小于27H,那么再xor7就可以了
。
文笔比较差,我们通过一个实例来分析
datahack.exe是我写了一个程序,具有针对这样加密字符串的解密功能。
图片1是我们的解密对象。
图片2是这个图片的字节分析。(各种字节的数量多少)
我们发现,这里相等2个字符分别是7AH和7DH
所以我们对他xor运算,XOR 70H
接下来 就是图3和图4了
这时候0AH和0DH已经相等,可是我们发现字符串并不是我们想要的字符串。仔细看会发现20出现概率很低,27出现概率很高。所以我们把他再xor7 就得到了明文。这时候就是图五和图六
解密成功。
为什么xor7? 因为0D XOR OA=7
上一篇: 大数据技术GBDT算法解析
下一篇: 规范用户输入英文名的大小写(首字母大写)