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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课