admin管理员组文章数量:1531733
2024年3月20日发(作者:)
dnf封包协议加密分析
很早之前就逆向了DNF的通讯协议加解密算法,最近试了下利用其
进行中间人攻击,并整理出此文。为防止对游戏环境产生影响,一些关键
性技术细节已隐去。
使用Wireshark抓包,设置好捕获过滤器,拿到进入频道的封包
初步分析,前3个字节为封包类型,之后是4个字节的封包长度(带
包头),然后是checksum。发送与接收的包头略有不同。
封包类型可以从客户端搜索"PACKET"字符串得到
从上文提到的ENUM_CMDPACKET_XXX等字符串入手,可以找到
封包加解密的位置。
第一个封包是建立连接后服务端主动发送的
ENUM_NOTIPACKET_CHANNELINFO,加密为简单的位移与异或。根
据调试分析,内容为一些频道信息及后续封包加解密的key。
除了该密钥包的位移异或以外,DNF还使用了14种加密算法,对封
包类型取余数决定使用哪一种。
根据密钥、block大小,配合Detect It Easy的“鲜明特征”功能可
以快速定位每种加密算法。
封包解密后,仍会遇到一些问题:
1、一些封包解密后仍为乱码,内容开头为0x78
2、一些封包无法解密,封包类型为ANTIBOT与DPROTO相关
第一个很明显为zlib压缩的文件头,同时观察到封包头部最后一个字
节为0x01,判断后用zlib uncompress解密即可。
第二个为国服的加密协议,没有走DNF自己的加密逻辑,不需要进
行加解密处理,排除掉即可。
为了修改DNF的封包数据,我用c#编写了一个简单的socks5 server,
并使用Proxifier让走自己设置的socks5代{过}{滤}理。
版权声明:本文标题:dnf封包协议加密分析 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1710920907a290506.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论