请选择 进入手机版 | 继续访问电脑版

DNF阿拉德游戏论坛

 找回密码
 立即注册
查看: 36|回复: 0

[教程] 如何读取数据库中的blob字段

[复制链接]

签到天数: 18 天

[LV.4]阿拉德玩家

13

主题

13

帖子

113

积分

阿拉德菜鸟

Rank: 2

积分
113
怒气
11
声望
38
战力
13
发表于 2024-5-7 17:49:19 | 显示全部楼层 |阅读模式
如何读取数据库中的blob字段

下面是图片为sql查询穿戴的装备

查询创建工具

查询创建工具

首先要知道的是这个数据是经过zlib压缩的,所以我不可能找到任何和身上相关的数据,例如装备的id, 所以,第一步,就是解压缩


1.使用mysql自带的解压缩方法

(BLOB)732 bytes

(BLOB)732 bytes



2.要知道,本身blob的数据是二进制的,只是这里显示的是十六进制,在使用java或者python,c++还是其他,都有zlib解压的工具类。如果要使用这些工具类,要注意的是,解压缩前,要丢弃前四个字节。原因大概是如下图


uncompress

uncompress



java的解压方式如下


2个用法

2个用法



解压之后,我们会看到这里解压之后是732字节,转换为二进制就是如下的结果
00000000000000010110000001110010000.....
0101的结果,解析主要是看懂这部分内容


我之前发过,每个格子是61个字节,对应的字节翻译如下
0 封装/魔法封印
1 类型 1装备 8时装 5 6
2-5 装备id
6 强化等级
7-10 装备品级
11-12 耐久度
13-16 宝珠
17 增幅 1体力 2精神 3力量 4智力
18-19 增幅附加值 最大65536
31-32 异界气息
37-50 魔法封印,具体可以看看神牛的教程,或者插件相关的代码
51 锻造等级


之前解压缩后的二进制 就需要每61个字节,即61*8个数字。
我们在ID以2-5个字节,装备id为教程


加压后的二进制如下


二进制

二进制



装备id对应的字节为


装备id对应的字节

装备id对应的字节

操作系统在处理二进制是分高位和低位的,
这里不用管是高位还是低位,反正不一样
需要高低位互换


高低位互换

高低位互换






将最后一行 00000110000001010111001001100000 转换为 十进制就是 101020256


二进制转十进制

二进制转十进制



101020256就是装备id,去pvf搜索就可以查到


三一真神

三一真神



基于此可以直接改背包里的装备


分享作者:vhjgdvmjk





“我还是从前那个少年,没有一丝丝改变!”——阿拉德勇士
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|DNF阿拉德游戏论坛 ( 渝ICP备13007431号1 )

GMT+8, 2024-5-18 17:19 , Processed in 0.158102 second(s), 36 queries .

快速回复 返回顶部 返回列表
关闭

阿拉德大陆的勇士们!今天也会是充满希望的一天!