封包解密趣事2
这就是我们经常看见这种发言的原因吗?这次主角是这个
初见就如同本人当初做最后高中数学那最后一道大题,不能说不会,那简直是一点想法都不敢有。
但是呢,这种是目前最主流的封包,要想搞一些莫名奇妙{:1_926:}的东西,那肯定是不能绕开它的。
先分析前一篇和这一篇封包的特点(最重要的思路):
前一篇封包,只有个别字节变化(基本都是我们的消息内容字节,再者加上长度),内容一样,每次发送封包(密文)都是一样的。我们知道明文 + 密钥 = 密文,这很明显,密钥是固定的。
这一篇封包,除了第一个第二个字节有点规律,其他字节都是乱的,3个1, 我们甚至不能从中找到三个相同且连续的字节,更过分的是,他连续两次内容相同的封包,它密文都是不同的,比如这个
都是111, 除了前两个字节,其他只能说毫不相干,按照明文 + 密钥 = 密文这个公式,我们很容易知道,他密钥是变化的,而且每一个包里面用多个密钥,
因为111,没有三个连续相同的字节与之相对应。
稍等!这里还有个疑惑,既然每次密钥都是变化的,那么它是怎么传输的,我们先假设它分两次传送,第一次传送密钥,第二次传送内容,这样的话每次发送一条消息,都有两条封包,显然第一次的密钥非常显眼,而且严重影响服务器效率。所以它密钥和内容在同一个封包中。这样既能动态变化密钥,还能干扰你的分析。
下面进入正题:
对于这种复杂的封包,首先分析结构,我们的基本原则是相同中找不同,不同中找相同。
按照这条原则,我们可以轻松的搞成这样
这里再放个内容相同密文不同的封包方便阅读
前两字节为一部分,很明显,82为封包头,9C为封包长度(对比右边的封包),EA EF我们暂时理解为分隔符,分为上下两部分,13 29为上部分的子分隔符,里面还有EF像是分隔符。
分析到这,我们需要知道我们的目的,找到内容和密钥,因为只有找到这两,我们又有密文,才能验证解密是否是对的。
假设上部分直接每个和下部分异或,我们可以得到,倒数第14位总是1A,我们也可以从上面封包得到相同的结果,至于意义,本人猜测是终止符。
但是并没有其他有用的信息。
破解之路陷入了僵局。
洗洗睡吧,咋不是学破解的料。
咋也不是这么容易半途而废的?
只能用最笨的方法了。控制变量法
和原封包改变一个字节,然后不停发送,最后得出一个结论,最后13位是无效的,也就说,怎么改变,对整条封包来说没有影响,相反除了这13个字节,其他改变都能使服务器改变你的套接字(重新连接),所以封包中存在验证码,不然改变内容的相应字节,内容应该也发生变化, 而不是失败。
通过上面这一种方法,下部分基本解密结束;
这里还有一个问题,你怎么知道加密方式是异或?
解密中首选的就是异或,其次是位运算,因为效率好效果好(看上去比较复杂),加减乘除在底层运算比较复杂,同一数用同一个密钥结果相同,不同数用同一个密钥也很容易看出来(成等差,等比)。位运算和乘除差不多,密钥为01,02之类的。
我们开始解密下部分(纯纯的计算量):
13 29 之间的内容,大概率是消息内容,我们如果有经验的话,可以直接锁定DB EF,EA EF是密钥, 因为最后后字节相同,DB xor EA 刚好等于31, 13 29 分别xor 22 18刚好也是31。
解密到这似乎已经结束了?
我们要做到完全理解这条封包
,
这里再放个内容相同密文不同的封包方便阅读
,
其中六个字节(黑色),似乎没有规律,通过计算EF xor E9 = 6, EA xor EE = 4, DE xor EA = 34, 两个封包相同的字节位计算结果相同。
至于E4 4F, 我们需要与13 29 异或为 F7 66,这两个字节每个封包(内容不同)计算都是这两个结果(F7 66)。
到这里完了吗?
还有没,我们再看看这个
,
我们可以发现内容长度不同,结构有一些变化,长度3和7,2和6, 1和5的结构是一样的,也就是说有四种结构,刚好和密钥位数相对应。
总结上面规律和这种结构,我们其实可以知道了,封包中2-6位为密钥,也就是上面提到的EA EF 13 29 不是分隔符,它是由于明文为0异或之后产生的,所以才与密钥相同。
它的解密方式是2-6位为密钥,后面每四个为一个可读框,进行异或。
封包结构有四种(总体相同):
0位封包头,1位封包长度 + 2-5位密钥+ 6-7位内容缓冲区长度(6位内容缓冲区长度,7位为0)+ 8-11位为校验位(8-9位为F7 66,10-11位为校验码,规则长度乘2) + 12位至(12+内容缓冲区长度)位为内容缓冲区 + 若干0 + 倒数14位为1A + 13位填充位。
其实解密过一次这种封包,以后可以直接用 明文 异或 密文 再对比 密文,找出密文中密钥。
解密:
rengaoxiong 发表于 2022-11-8 12:53
大佬这种封包解密后又该怎么发送呢,用WPE就算知道哪位是我需要修改的字节,但是每次都不一样,过滤也没办 ...
一般需要知道加密方式都是自己写封包脚本的或者拿来参考做开发的,wpe只能算个研究封包的工具,对某些特定的程序还是自己写的好用。 文章不长,我建议编辑合并到之前帖子一起,方便阅读如何? 我觉着h大的建议不错 本帖最后由 Huixingzi 于 2022-9-26 11:42 编辑
Hmily 发表于 2022-9-26 11:00
文章不长,我建议编辑合并到之前帖子一起,方便阅读如何?
主要是内容还是不一样的,算是个系列的续集了,可能还有后续 感谢分享!!! 分析的很详细,支持一下。 大佬这种封包解密后又该怎么发送呢,用WPE就算知道哪位是我需要修改的字节,但是每次都不一样,过滤也没办法弄 你会用刷页游的道具吗?别人能刷,能不能来试一下?报酬相当不错 file:///C:/Users/xiong/Desktop/%E6%89%B9%E6%B3%A8%202023-02-21%20081943.png大佬我想问问这个封包,4A FC 0E 91 4A FC 0E 91 是8个2其中FC 0E 91 分别跟 CE 3C A3异或运算了,但是4A也是2啊,4A跟32异或运算是78,没有相对应的密钥,这种是怎么加密的啊?
页:
[1]
2