请分析下这封包的加密方式 110
10000200000008D45060055B3F56DBEE58571001060FC3BB0A54DED01A9ECC243993792BA200002000000...
1
0000 20 00 00 00 8D 45 06 00 55 B3 F5 6D BE E5 85 71
0010 60 FC 3B B0 A5 4D ED 01 A9 EC C2 43 99 37 92 BA
2
0000 20 00 00 00 8D 45 06 00 05 00 3B 70 D7 B3 F7 44
0010 0A B8 92 64 49 56 C3 C4 B4 55 38 B4 80 DC FA 87
3
0000 20 00 00 00 8D 45 06 00 3A 90 72 CA 02 78 63 95
0010 BC B1 3A 0D 0B AC 47 0F 47 9C 29 E5 D0 CF 5C 99
以上3个为一网游出售同一物品时截取的3个封包
下面这个是出售另2个物品截取的封包
0000 20 00 00 00 8D 45 06 00 60 67 DF AA 09 00 F8 D8
0010 CB F1 9D 81 46 1A 3F AC 50 50 71 97 CB CF 24 E3
0000 20 00 00 00 8D 45 06 00 A9 9F 4C 6C 80 A7 B3 78
0010 69 57 89 F9 A3 19 8B 63 FC E9 2F 6A 69 06 B6 1A
我刚入门没2天 只懂一点 每个封包的第一列前半部分是一样的 前面的20 和8D 45 06表示了出售的动作 问题就是后半段和第二列开始就完全不一样了 我猜想是不是用异或加密 我试过用1XOR2=KEY1 XOR KEY2这个公式来做 得到的是一组完全没有规律的值
问题1帮我分析下他的加密方式如果分析不出或者怕麻烦这条请跳过
问题2 游戏为什么从第9位才开始加密 我把卖东西发出去的那个封包 复制然后用WPE发出去 为什么就掉线 不管他用什么方法加密 我复制刚才发出的封包 为什么就不可以 难道服务器事先知道下个封包该用什么方式 什么KEY来加密? 所以我用旧KEY加密过的封包发送才失败?
问题3如果游戏的KEY 是动态改变的 如果改变是没有规律的 那么即使我们破了他的封包又有什么用呢? 反正又不知道下个封包该用什么KEY来异或
问题4 绝大部分的网游都是用异或加密的吗 如果不是请举出其他几种加密方式并解释一下
回答出第一个问题追加100分
不用费心到网上复制 因为那些我都看过了 展开
0000 20 00 00 00 8D 45 06 00 55 B3 F5 6D BE E5 85 71
0010 60 FC 3B B0 A5 4D ED 01 A9 EC C2 43 99 37 92 BA
2
0000 20 00 00 00 8D 45 06 00 05 00 3B 70 D7 B3 F7 44
0010 0A B8 92 64 49 56 C3 C4 B4 55 38 B4 80 DC FA 87
3
0000 20 00 00 00 8D 45 06 00 3A 90 72 CA 02 78 63 95
0010 BC B1 3A 0D 0B AC 47 0F 47 9C 29 E5 D0 CF 5C 99
以上3个为一网游出售同一物品时截取的3个封包
下面这个是出售另2个物品截取的封包
0000 20 00 00 00 8D 45 06 00 60 67 DF AA 09 00 F8 D8
0010 CB F1 9D 81 46 1A 3F AC 50 50 71 97 CB CF 24 E3
0000 20 00 00 00 8D 45 06 00 A9 9F 4C 6C 80 A7 B3 78
0010 69 57 89 F9 A3 19 8B 63 FC E9 2F 6A 69 06 B6 1A
我刚入门没2天 只懂一点 每个封包的第一列前半部分是一样的 前面的20 和8D 45 06表示了出售的动作 问题就是后半段和第二列开始就完全不一样了 我猜想是不是用异或加密 我试过用1XOR2=KEY1 XOR KEY2这个公式来做 得到的是一组完全没有规律的值
问题1帮我分析下他的加密方式如果分析不出或者怕麻烦这条请跳过
问题2 游戏为什么从第9位才开始加密 我把卖东西发出去的那个封包 复制然后用WPE发出去 为什么就掉线 不管他用什么方法加密 我复制刚才发出的封包 为什么就不可以 难道服务器事先知道下个封包该用什么方式 什么KEY来加密? 所以我用旧KEY加密过的封包发送才失败?
问题3如果游戏的KEY 是动态改变的 如果改变是没有规律的 那么即使我们破了他的封包又有什么用呢? 反正又不知道下个封包该用什么KEY来异或
问题4 绝大部分的网游都是用异或加密的吗 如果不是请举出其他几种加密方式并解释一下
回答出第一个问题追加100分
不用费心到网上复制 因为那些我都看过了 展开
2个回答
展开全部
解密
游戏里面使用频率非常高的几大加密方式-----异或运算加密、背包运算加密等
1.异或运算加密:
例:
我们看到的是a,b,c ,d ,e ,f但是,他的实际意思不是这样的,实际意思是,1,2,3,4,5,6,当我们看到的是1时,他的实际意思就是6,在映射的时候没有按照一定规律影射,如果要在只知道a,b,c的情况下来破解其中的规律,那是需要一定经验和技巧的!
加密问题
y=f(x),
这里的 x就相当于上面提到的abcdef,而y呢就是123456,箭头就是f,f是映射方式,函数就是某种映射方式,从函数和映射的角度来理解加密是非常好的和正确的,
异或运算加密特点
这种加密方式,不是非常隐蔽,但是非常容易实现,建立一个映射,可以在整个软件中调用,所以,在游戏制作的时候,制作一个映射并不需要太高的技术,而且这个映射可以在任何时候修改,非常容易维护和更新,如果映射规律被破解了,也可以更新游戏来更新映射.
破解这种加密方式:
在一个网管软件中,有一个会员功能,功能是这样的,凡是会员,就可以不在网吧老板那儿去登记而是直接上机?
其实,该软件实现该功能的过程是这样的,首先用户输入用户名和密码,然后把用户名和密码发送到主控电脑,由主控电脑检查该用户名是否存在,如果存在,再检查密码是否正确,有密码发送,就会有封包发到主控机上去,就可以中途拦截,这个是WPE的专长,当然也可以使用其他黑客工具来拦截,先拦截几个用户名密码先,下面这个是某台电脑上被拦截到的封包,内容如下:
send 0000 01 00 00 00 7a 68 61 6e 67 6a 75 6e 30 30 37 00
00 02 00 64 66 6c 64 68 6a 66 64 65 6a 68 00 00
规则:比较法则和结构法则,这里使用比较法则,利用比较法则的相同比较和不同比较,很容易辨认用户名和密码各在那一段
用户名是: 7a 68 61 6e 67 6a 75 6e 30 30 37
密码是: 64 66 6c 64 68 6a 66 64 65 6a 68
马上使用我们的进位专家来对付这些16进制的文字,翻译出来的结果如下:
用户名:zhangjun007
密码:dfldhjfdejh
显然密码不正确,因为这个密码一般人是很难记住的,
异或运算分析来分析这个密码!
假设这是一个单满映射,
建立从A到A的映射到从A到Z的映射逐个分析,结果都是错的,
所以,应该考虑从字母到数字的映射,
最后检查出映射是从C到L映射到0-9,
分析结果出来了:
密码是:13915731275
这个密码是正确的
加密解密
从一个进制到另一个进制是一中异或运算,而且是单满映射,所谓单满映射,意思是每一个象都有原象,每一个原象都有象.
例如我们的映射是从16进制到10进制,象,就是10进制里面的所有的数,而16进制里面的数就是原象,每一个10进制的数都唯一对应一个16进制的数,所以说所有象都有唯一一个原象,而反过来,每一个16进制也唯一对应一个10进制的数,所以每一个象都有且只有一个象,这样的映射就是单满映射!
单满影射:
如果我们这样对应,0对应A,1对应B,这样一个一个对应下去,如果你的生日是:1986年2月14日,把生日加密,按照我们的映射,结果就是BJIG年C月BE日.
怎么知道一个封包是不是异或运算加密
如果一个封包确实是异或运算加密的,就要采用枚举法,也称穷举法,比如:y=F(x)
我们找几个点,称为已知点,然后解方程,
例:已知:a对应的是0,d对应的是3,f对应的是5,
那么可以这样做,
F(a)=0,F(d)=3, 这种异或运算都是线性的,也就是可以认为是一维的,映射就是:F(x)=Asc(x)-97,
Asc()是VB里面的一个函数,功能是返回该字母的Ascii码
带f对应5进行检验,
(这些可以确定函数的点从那里来?
例:要知道游戏里面钱的数字与封包里面数字的联系,
就要找点来确定,
我们扔掉一元钱,看看数字是多少,就找到一点,一个点如果确定不了,可以多取一些点来确定,如果还是不行,那么再来.
如果是不规则的映射,就要取遍所有点.
游戏里面钱的数字的加密一定是规则的运算加密的,至于是不是异或运算加密的就不知道了!要多动手分析才行,这个需要的是经验和技巧,或找一些工具来帮助分析,会对您的封包破解很有帮助的!
背包加密
是一中相当高级的加密方式.
背包分两种,加法背包和乘法背包!
加法背包:1<2,1+2<4,1+2+4<8,1+2+4+8<16,…….
前面所有的数加起来的值总小于后面的数,这些数就可以构成一个背包.数就是被加密的数.
这个背包组成这个数只有一种组合方式.
给大家一个封包(2,3,6,12,24,48).
由这个背包里的某些数构成的数:86,
86怎么来的?
是由2+12+24+48得到的.
如果你没有这个背包,而是直接得到这个86,你知道组成这个86的最小的数是多少吗?
你无法知道,因为加起来等于86的数非常多:85+1=86,82+2=86等等,你是无法知道的,所以,背包加密非常难破。
游戏里面如何利用这个加密呢?
用户名和密码只能有字母和数字组成,
那么总共就那么36个元素,
利用一个包含36个元素的背包,
背包的一个元素对应一个字母或者数字,
当玩家设好用户名后,
我们把这个用户名翻译成背包里面的元素,
然后把这些用户转化而来的数字加起来,
得到一个数,
这个数就是用户名,
你得到这个数,
你知道用户名吗?
例:有个密码是:511,背包是:(1,2,4,8,16,32,64,128,256),是加法背包,有如下对应关系:1对应a,2对应b,4对应c,8对应d,16对应e,32对应f,64——>g,128---->h,256---->i,
那么密码就是:abcdefghi,
从511到这个密码,是不是很难想到呢?
如果密码不是这个顺序呢?(不讲解)
解密方法:
1.利用孤立点破解;2.利用背包破解。
乘法背包
1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683,
背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素.
破解乘法背
同加法背包一样,可以利用孤立点的方法,也可以使用直接得到背包的方法破解!
已知背包、加密数据,怎么知道背包数是有那些元素组成的.
加法背包里找背包里面最接近数但是又比数小的数A,加密数减A,比较被减后的数,继续重复上面的操作,是很容易就能找到所有的组成元素了!乘法的方法也是一样的道理,这里就不介绍了!
游戏里面使用频率非常高的几大加密方式-----异或运算加密、背包运算加密等
1.异或运算加密:
例:
我们看到的是a,b,c ,d ,e ,f但是,他的实际意思不是这样的,实际意思是,1,2,3,4,5,6,当我们看到的是1时,他的实际意思就是6,在映射的时候没有按照一定规律影射,如果要在只知道a,b,c的情况下来破解其中的规律,那是需要一定经验和技巧的!
加密问题
y=f(x),
这里的 x就相当于上面提到的abcdef,而y呢就是123456,箭头就是f,f是映射方式,函数就是某种映射方式,从函数和映射的角度来理解加密是非常好的和正确的,
异或运算加密特点
这种加密方式,不是非常隐蔽,但是非常容易实现,建立一个映射,可以在整个软件中调用,所以,在游戏制作的时候,制作一个映射并不需要太高的技术,而且这个映射可以在任何时候修改,非常容易维护和更新,如果映射规律被破解了,也可以更新游戏来更新映射.
破解这种加密方式:
在一个网管软件中,有一个会员功能,功能是这样的,凡是会员,就可以不在网吧老板那儿去登记而是直接上机?
其实,该软件实现该功能的过程是这样的,首先用户输入用户名和密码,然后把用户名和密码发送到主控电脑,由主控电脑检查该用户名是否存在,如果存在,再检查密码是否正确,有密码发送,就会有封包发到主控机上去,就可以中途拦截,这个是WPE的专长,当然也可以使用其他黑客工具来拦截,先拦截几个用户名密码先,下面这个是某台电脑上被拦截到的封包,内容如下:
send 0000 01 00 00 00 7a 68 61 6e 67 6a 75 6e 30 30 37 00
00 02 00 64 66 6c 64 68 6a 66 64 65 6a 68 00 00
规则:比较法则和结构法则,这里使用比较法则,利用比较法则的相同比较和不同比较,很容易辨认用户名和密码各在那一段
用户名是: 7a 68 61 6e 67 6a 75 6e 30 30 37
密码是: 64 66 6c 64 68 6a 66 64 65 6a 68
马上使用我们的进位专家来对付这些16进制的文字,翻译出来的结果如下:
用户名:zhangjun007
密码:dfldhjfdejh
显然密码不正确,因为这个密码一般人是很难记住的,
异或运算分析来分析这个密码!
假设这是一个单满映射,
建立从A到A的映射到从A到Z的映射逐个分析,结果都是错的,
所以,应该考虑从字母到数字的映射,
最后检查出映射是从C到L映射到0-9,
分析结果出来了:
密码是:13915731275
这个密码是正确的
加密解密
从一个进制到另一个进制是一中异或运算,而且是单满映射,所谓单满映射,意思是每一个象都有原象,每一个原象都有象.
例如我们的映射是从16进制到10进制,象,就是10进制里面的所有的数,而16进制里面的数就是原象,每一个10进制的数都唯一对应一个16进制的数,所以说所有象都有唯一一个原象,而反过来,每一个16进制也唯一对应一个10进制的数,所以每一个象都有且只有一个象,这样的映射就是单满映射!
单满影射:
如果我们这样对应,0对应A,1对应B,这样一个一个对应下去,如果你的生日是:1986年2月14日,把生日加密,按照我们的映射,结果就是BJIG年C月BE日.
怎么知道一个封包是不是异或运算加密
如果一个封包确实是异或运算加密的,就要采用枚举法,也称穷举法,比如:y=F(x)
我们找几个点,称为已知点,然后解方程,
例:已知:a对应的是0,d对应的是3,f对应的是5,
那么可以这样做,
F(a)=0,F(d)=3, 这种异或运算都是线性的,也就是可以认为是一维的,映射就是:F(x)=Asc(x)-97,
Asc()是VB里面的一个函数,功能是返回该字母的Ascii码
带f对应5进行检验,
(这些可以确定函数的点从那里来?
例:要知道游戏里面钱的数字与封包里面数字的联系,
就要找点来确定,
我们扔掉一元钱,看看数字是多少,就找到一点,一个点如果确定不了,可以多取一些点来确定,如果还是不行,那么再来.
如果是不规则的映射,就要取遍所有点.
游戏里面钱的数字的加密一定是规则的运算加密的,至于是不是异或运算加密的就不知道了!要多动手分析才行,这个需要的是经验和技巧,或找一些工具来帮助分析,会对您的封包破解很有帮助的!
背包加密
是一中相当高级的加密方式.
背包分两种,加法背包和乘法背包!
加法背包:1<2,1+2<4,1+2+4<8,1+2+4+8<16,…….
前面所有的数加起来的值总小于后面的数,这些数就可以构成一个背包.数就是被加密的数.
这个背包组成这个数只有一种组合方式.
给大家一个封包(2,3,6,12,24,48).
由这个背包里的某些数构成的数:86,
86怎么来的?
是由2+12+24+48得到的.
如果你没有这个背包,而是直接得到这个86,你知道组成这个86的最小的数是多少吗?
你无法知道,因为加起来等于86的数非常多:85+1=86,82+2=86等等,你是无法知道的,所以,背包加密非常难破。
游戏里面如何利用这个加密呢?
用户名和密码只能有字母和数字组成,
那么总共就那么36个元素,
利用一个包含36个元素的背包,
背包的一个元素对应一个字母或者数字,
当玩家设好用户名后,
我们把这个用户名翻译成背包里面的元素,
然后把这些用户转化而来的数字加起来,
得到一个数,
这个数就是用户名,
你得到这个数,
你知道用户名吗?
例:有个密码是:511,背包是:(1,2,4,8,16,32,64,128,256),是加法背包,有如下对应关系:1对应a,2对应b,4对应c,8对应d,16对应e,32对应f,64——>g,128---->h,256---->i,
那么密码就是:abcdefghi,
从511到这个密码,是不是很难想到呢?
如果密码不是这个顺序呢?(不讲解)
解密方法:
1.利用孤立点破解;2.利用背包破解。
乘法背包
1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683,
背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素.
破解乘法背
同加法背包一样,可以利用孤立点的方法,也可以使用直接得到背包的方法破解!
已知背包、加密数据,怎么知道背包数是有那些元素组成的.
加法背包里找背包里面最接近数但是又比数小的数A,加密数减A,比较被减后的数,继续重复上面的操作,是很容易就能找到所有的组成元素了!乘法的方法也是一样的道理,这里就不介绍了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询