From dc80d2ccdcd753f5b8d6a85baec6b4469389b46a Mon Sep 17 00:00:00 2001
From: aaqwq <172821606+weasUXL@users.noreply.github.com>
Date: Mon, 10 Feb 2025 16:47:29 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE=E5=BA=93?=
=?UTF-8?q?=E8=A7=A3=E6=9E=90=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
...07\344\273\266\345\210\206\346\236\220.md" | 31 ++++-----
.../data_line_msg_fts.db.md" | 13 ----
.../emoji.db.md" | 57 ++++++++++++++++
.../group_info.db.md" | 21 +++---
...27\346\256\265\345\220\253\344\271\211.md" | 68 +++++++++----------
5 files changed, 117 insertions(+), 73 deletions(-)
delete mode 100644 "docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/data_line_msg_fts.db.md"
create mode 100644 "docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/emoji.db.md"
diff --git "a/docs/plan/1.db\346\226\207\344\273\266\345\210\206\346\236\220.md" "b/docs/plan/1.db\346\226\207\344\273\266\345\210\206\346\236\220.md"
index b6236ec..fafe729 100644
--- "a/docs/plan/1.db\346\226\207\344\273\266\345\210\206\346\236\220.md"
+++ "b/docs/plan/1.db\346\226\207\344\273\266\345\210\206\346\236\220.md"
@@ -10,30 +10,29 @@ description: db文件分析
| ------------ | ------------------------------------------------------------ | -------------------------------------------- |
| 🤔 | nt_msg.db | 聊天数据文件 |
| 🤔 | profile_info.db | 联系人信息 |
-| 🤔 | buddy_msg_fts.db | (疑似部分临时会话信息) |
-| 🤔 | rich_media.db | (群聊或私聊发送/接收的文件信息,有待分析) |
-| ✔ | data_line_msg_fts.db | (推测为我的设备接收文件信息) |
-| 🤔 | files_in_chat.db | (暂时未解析出信息含义) |
+| 🤔 | rich_media.db | 群聊或私聊发送/接收的文件信息存贮路径 |
+| 🤔 | files_in_chat.db | 媒体文件信息(包括下载的图片视频路径) |
| 🤔 | recent_contact.db | (推测为黑名单,待测试) |
-| ❓ | gpro_v1-6_u_******.db | (由于暂未实现数据库解密无法分析) |
-| 🤔 | group_info.db | |
-| 🤔 | group_msg_fts.db | |
-| 🤔 | guild_msg.db | |
-| ✔ | ~~discuss_msg_fts.db~~ | (文件中未发现有效聊天信息) |
-| ✔ | ~~file_assistant.db~~ | (文件中未发现有效信息) |
-| ✔ | ~~collection.db~~ | (文件中未发现有效信息) |
-| ✔ | ~~misc.db~~ | (文件中未发现有效聊天信息) |
-| ✔ | ~~msg_fts.db~~ | (文件中未发现有效聊天信息) |
+| ❓ | gpro_v1-6_{nt_uid}.db | (由于暂未实现数据库解密无法分析) |
+| 🤔 | group_info.db | 群聊信息(包含群头像,群成员等) |
+| 🤔 | guild_msg.db | 频道聊天数据 |
+| 🤔 | collection.db | QQ收藏数据 |
+| 🤔 | file_assistant.db | 已下载文件存放数据 |
+| 🤔 | misc.db | 见下表 |
+| ✔ | emoji.db | (存贮QQ表情包的数据库) |
+| ✔ | group_msg_fts.db | 本地搜索使用的数据库 |
+| ✔ | data_line_msg_fts.db| 本地搜索使用的数据库 |
+| ✔ | buddy_msg_fts.db | 本地搜索使用的数据库 |
+| ✔ | discuss_msg_fts.db | 本地搜索使用的数据库 |
+| ✔ | msg_fts.db | 本地搜索使用的数据库 |
| ✔ | ~~rdelivery.db~~ | (文件中未发现有效信息) |
-| ✔ | ~~emoji.db~~ | (疑似存贮QQ热门表情包的数据库,不再分析) |
| ✔ | ~~settings.db~~ | (无法理解的设置信息,有效信息很少,不再分析) |
| ✔ | ~~yffm.db~~ | (文件中未发现有效信息) |
# 注:
- ~~已被删除~~是在本人数据库中未发现具有有效数据的,因此后续不再探查实际意义
+ ~~已被删除~~是在本人数据库中未发现有意义的数据,因此后续不再探查
蓝色字体是存在有效信息的数据库,有待继续分析
✔的是已完成对表名的分析(列名会单独重开分析)
当然如果你发现你号对应的db中含有有价值的数据也欢迎提出,再分析……(
-
diff --git "a/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/data_line_msg_fts.db.md" "b/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/data_line_msg_fts.db.md"
deleted file mode 100644
index 84dd50a..0000000
--- "a/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/data_line_msg_fts.db.md"
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: data_line_msg_fts.db
-description: data_line_msg_fts.db分析……
----
-
-# data_line_msg_fts.db
-
-| data_line_msg_fts.db | | |
-| ---------------------------------- | ----------------- | -------------------- |
-| 是否完成分析 | 表名 | 分析 |
-| 🤔 | data_line_msg_fts | 我的设备传输文件信息 |
-| 其余表名为文件id等信息不具有大价值 | | |
-
diff --git "a/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/emoji.db.md" "b/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/emoji.db.md"
new file mode 100644
index 0000000..720f487
--- /dev/null
+++ "b/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/emoji.db.md"
@@ -0,0 +1,57 @@
+---
+title:emoji.db
+description:emoji.db分析……
+---
+
+# emoji.db
+`base_sys_emoji_table`:QQ默认表情数据
+| 列名 | 含义 | 说明 |
+|--------|--------------------------------|----------------------------------------------------------------------|
+| 81211 | 表情ID | |
+| 81212 | 表情描述(外显文字) | |
+| 81218 | protobuf格式 | 为81229与81230的下载链接内容 |
+| 81221 | 特殊类表情标识 | 0为正常,1为特殊 |
+| 81224 | 特殊限定类表情标识 | |
+| 81225 | 特殊限定类表情标识 | |
+| 81226 | EmojiType | 系统表情为1,emoji表情为2,动态可变表情为3(比如掷骰子) |
+| 81266 | 表情类型说明 | |
+| 81229 | 静态图片下载地址 | |
+| 81230 | APNG图片下载地址 | emoji 表情没有此链接 |
+
+`bottom_emoji_table`:protobuf格式,包含该账号下已收藏的原创表情数据
+
+`emoji_config_storage_table`:QQ系统表情数据
+
+`emoji_group_table`:包含表情ID说明(如 超级表情0-16)
+
+`emoji_misc_data_table`:QQ默认表情下载地址
+
+`fav_emoji_info_storage_table`:QQ收藏表情数据
+
+| 列名 | 含义 | 说明 |
+|--------|--------------------------------|----------------------------------------------------------------------|
+| 80002 | 文件名 | 格式为`{uin}_0_0_0_{MD5}}_0_0` |
+| 80001 | 表情排序 | 倒序,即最新的收藏表情序号为0 |
+| 1002 | 收藏用户uin | |
+| 80012 | 本地存贮路径 | |
+| 80010 | 下载地址 | 格式为`hxxps://p.qpic.cn/qq_expression/{1002}/{8002}/0` |
+| 80011 | 表情MD5 | 32位大写 |
+| 80213 | 是否为原创表情 | 0为否,1为是 |
+| 80201 | 原创表情标识符 | 当80213为1时,显示为对应原创表情的标识符 |
+| 80202 | 原创表情包ID | 当80213为1时,显示对应原创表情包ID |
+| 80223 | 表情备注 | |
+| 80225 | 表情备注 | |
+
+`market_emoticon_package_table`:原创表情市场
+| 列名 | 含义 | 说明 |
+| ------ | -------- | ----------------------------------------------------------------------------------- |
+| 80943 | 原创表情 ID | 知道 ID 可在 ../{uin}/nt_qq/nt_data/Emoji/marketface/{ID} 找到已缓存的原创表情包 |
+| 80947 | 原创表情包名字 | |
+| 80948 | 表情包说明 | |
+`market_emoticon_table`
+| 列名 | 含义 | 说明 |
+| ------ | ---------- | ---------------------------------------------- |
+| 80920 | 表情标识符 | |
+| 80943 | 原创表情包 ID | |
+| 80921 | 表情描述 | 外显文字 |
+
diff --git "a/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/group_info.db.md" "b/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/group_info.db.md"
index ee6ca42..2ddca45 100644
--- "a/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/group_info.db.md"
+++ "b/docs/plan/3.db\346\226\207\344\273\266\345\210\206\346\236\220/group_info.db.md"
@@ -4,13 +4,14 @@ description: group_info.db分析……
---
# group_info.db
-| | group_info.db | |
-| -------- | ------------------------------- | ---------------------------------------------------------- |
-| 完成解析 | 表名 | 分析 |
-| 🤔 | group_avatar | 据名称推断是群头像,未经验证 |
-| 🤔 | group_bulletin | 疑似群公告,未经验证 |
-| 🤔 | group_detail_info_ver1 | 这里发现了群公告实际内容(据测试,QQ并不会将完整公告内容) |
-| 🤔 | group_detail_info_ver1_fts_data | 未推断出实际意义 |
-| 🤔 | group_list | 群聊名称列表,包含群名称,群号,更多数据有待解析…… |
-| 🤔 | group_member3 | 推测为群成员信息,包括群昵称,QQ号,QQ昵称等信息 |
-| 🤔 | group_tab_1 | 推断为群火苗信息 |
\ No newline at end of file
+| | group_info.db | |
+| -------- | ---------------------- | -------------------------------------------------- |
+| 完成解析 | 表名 | 分析 |
+| 🤔 | group_avatar | 据名称推断是群头像,未经验证 |
+| ✅ | group_bulletin | 完整的群公告信息 |
+| ✅ | group_essence | 群精华消息 |
+| ✅ | group_detail_info_ver1 | 这里发现了群公告部分内容(应该是用于外显的) |
+| 🤔 | group_list | 群聊名称列表,包含群名称,群号,更多数据有待解析…… |
+| 🤔 | group_member3 | 推测为群成员信息,包括群昵称,QQ号,QQ昵称等信息 |
+| 🤔 | group_tab_1 | 推断为群火苗信息 |
+
diff --git "a/docs/view/\345\255\227\346\256\265\345\220\253\344\271\211.md" "b/docs/view/\345\255\227\346\256\265\345\220\253\344\271\211.md"
index 0523e0f..74785bb 100644
--- "a/docs/view/\345\255\227\346\256\265\345\220\253\344\271\211.md"
+++ "b/docs/view/\345\255\227\346\256\265\345\220\253\344\271\211.md"
@@ -12,21 +12,21 @@ description: 主要是nt_msg下私聊和群聊的部分消息定义
群聊数据 `group_msg_table` 表中的部分列含义如下:
-| 列名 | 类型 | 含义 | 说明 |
-| ----- | ----- | -------- | ---------------------------------------------------------------- |
-| 40001 | int | 消息 ID | |
-| 40003 | int | 消息序号 | 在每个群聊中依次递增 |
-| 40021 | str | 群号 | |
-| 40027 | int | 群号 | |
-| 40030 | int | 群号 | QQNT 保存的群号 |
-| 40033 | int | 发送者 QQ 号 | QQNT 保存发送者 QQ 号 |
-| 40050 | int | 时间 | 时间戳 |
-| 40058 | int | 日期 | 当日 0 时整的时间戳格式,时区为 GMT+0800 |
-| 40090 | str | 发送者群名片 | 旧版 QQ 迁移数据中格式为 `name(12345)` 或 `name`, QQNT 中为群名片 |
-| 40093 | str | 发送者昵称 | 旧版 QQ 此字段为空,QQNT 中未设置群名片时才有此字段 |
-| 40600 | bytes | 撤回状态 | protobuf 格式 |
-| 40800 | bytes | 消息内容 | protobuf 格式 |
-| 40850 | int | 回复消息序号 | 该消息所回复的消息的序号 |
+| 列名 | 类型 | 含义 | 说明 |
+| ----- | ----- | ------------ | ------------------------------------------------------------ |
+| 40001 | int | 消息 ID | |
+| 40003 | int | 消息序号 | 在每个群聊中依次递增 |
+| 40021 | str | 群号 | |
+| 40027 | int | 群号 | |
+| 40030 | int | 群号 | QQNT 保存的群号 |
+| 40033 | int | 发送者 QQ 号 | QQNT 保存发送者 QQ 号 |
+| 40050 | int | 时间 | 时间戳 |
+| 40058 | int | 日期 | 当日 0 时整的时间戳格式,时区为 GMT+0800 |
+| 40090 | str | 发送者群名片 | 旧版 QQ 迁移数据中格式为 `name(12345)` 或 `name`, QQNT 中为群名片 |
+| 40093 | str | 发送者昵称 | 旧版 QQ 此字段为空,QQNT 中未设置群名片时才有此字段 |
+| 40600 | bytes | 撤回状态 | protobuf 格式 |
+| 40800 | bytes | 消息内容 | protobuf 格式或 protobuf array |
+| 40850 | int | 回复消息序号 | 该消息所回复的消息的序号 |
私聊数据 `c2c_msg_table` 表中的部分列含义如下:
@@ -49,25 +49,25 @@ description: 主要是nt_msg下私聊和群聊的部分消息定义
消息段(48000)的部分字段含义如下:
-| Field Number | 类型 | 含义 | 说明 |
-| ------------ | -------- | ------------------------------- | ---------- |
-| 45001 | int | 消息段 ID | |
-| 45002 | int | 消息类型 | 类型较多,见另表 |
-| 45101 | str | 消息文本 | 适用于文本消息 |
-| 45102 | str | 图片文件名 | 适用于图片消息 |
-| 45402 | str | 图片文件名 | 适用于图片消息 |
-| 45411 | int | 图片宽度(压制后) | 适用于图片消息 |
-| 45412 | int | 图片高度(压制后) | 适用于图片消息 |
-| 45812 | str | 本地缓存目录 | 适用于图片消息 |
-| 45815 | str | 替代文本,如 "[动画表情]" | 适用于图片消息 |
-| 47402 | int | 原消息序号 | 适用于引用消息 |
-| 47403 | int | 原消息发送者 | 适用于引用消息 |
-| 47404 | int | 原消息时间 | 适用于引用消息 |
-| 47410 | protobuf | 格式复杂,存储原消息文本,疑似原消息过期后用以替代 47423 | 适用于引用消息 |
-| 47413 | str | 显示的引用文本 | 适用于引用消息 |
-| 47423 | protobuf | 引用消息段(嵌套) | 适用于引用消息 |
-| 47713 | str | 撤回消息后缀 | 适用于系统撤回消息 |
-| 48602 | str | XML 消息内容 | 适用于 XML 消息 |
+| Field Number | 类型 | 含义 | 说明 |
+| ------------ | -------- | -------------------------------------------------------- | ------------------ |
+| 45001 | int | 消息段 ID | |
+| 45002 | int | 消息类型 | 见下表 |
+| 45101 | str | 消息文本 | 适用于文本消息 |
+| 45102 | str | 图片文件名 | 适用于图片消息 |
+| 45402 | str | 图片文件名 | 适用于图片消息 |
+| 45411 | int | 图片宽度(压制后) | 适用于图片消息 |
+| 45412 | int | 图片高度(压制后) | 适用于图片消息 |
+| 45812 | str | 本地缓存目录 | 适用于图片消息 |
+| 45815 | str | 替代文本,如 "[动画表情]" | 适用于图片消息 |
+| 47402 | int | 原消息序号 | 适用于引用消息 |
+| 47403 | int | 原消息发送者 | 适用于引用消息 |
+| 47404 | int | 原消息时间 | 适用于引用消息 |
+| 47410 | protobuf | 格式复杂,存储原消息文本,疑似原消息过期后用以替代 47423 | 适用于引用消息 |
+| 47413 | str | 显示的引用文本 | 适用于引用消息 |
+| 47423 | protobuf | 引用消息段(嵌套) | 适用于引用消息 |
+| 47713 | str | 撤回消息后缀 | 适用于系统撤回消息 |
+| 48602 | str | XML 消息内容 | 适用于 XML 消息 |
其中消息类型(45002)的已知消息类型与对应序号如下: