尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Bilibili-Old 反查弹幕发送者指南:一篇讲透 CRC 彩虹表原理与代码弹幕还原

Bilibili-Old 反查弹幕发送者指南:一篇讲透 CRC 彩虹表原理与代码弹幕还原 Bilibili-Old 反查弹幕发送者指南一篇讲透 CRC 彩虹表原理与代码弹幕还原【免费下载链接】Bilibili-Old恢复旧版Bilibili页面为了那些念旧的人。项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-OldBilibili-Old是一个恢复 B 站旧版网页的开源项目其中最有趣的功能之一是反查弹幕发送者借助CRC 彩虹表把弹幕里那个看不破的匿名哈希值还原成发送者的真实账号还能把已经丢失的代码弹幕弹幕艺术重新放出来。 为什么匿名的弹幕能被反查在 B 站旧版 XML 弹幕里每一条弹幕的p属性是这样的d p时间,模式,字号,颜色,日期,轨道,midHash,弹幕ID弹幕内容/d注意第 7 位midHash——它并不是发送者的 UIDmid而是 mid 经过CRC32 校验算出来的哈希值。B 站故意只下发哈希、不播发真实 mid所以页面上看不到发送者是谁弹幕看起来都是匿名的。项目里 XML 弹幕解析时正是从这里取出哈希见src/utils/danmaku.tsmidHash: json[6]protobuf 弹幕协议中同样保留了这个字段DanmakuElem.midHash定义在src/io/grpc/api-dm-web.ts这也是反查功能能在新版弹幕上继续工作的基础。 什么是 CRC 彩虹表CRC32 是单向计算从 mid 算哈希很快从哈希反推 mid 却没有数学捷径。但彩虹表的思路是以空间换时间B 站用户的 mid 是递增的数字取值范围有限提前把每一个可能 mid 的 CRC32 值全部算好存成一张哈希 → mid的映射表运行时只要用弹幕里的midHash查一次表就能得到发送者的真实 mid速度等同一次查表。这条路线来自经典文章《用 crc 彩虹表反向 B 站弹幕匿名我不想浪费内存但是要和彩虹表一样快》项目 README 的参考致谢中也标注了 CRC 逆向算法的来源。拿到 mid 之后故事就圆满了调用用户卡片接口即可查回昵称、头像、等级。项目中的实现见src/io/account-getcardbymid.tsaccountGetCardByMid函数返回的name、face、level_info等字段会直接用于在页面上展示发送者信息。⚙️ Bilibili-Old 如何串起整条反查链路整个功能由几个模块协作完成弹幕获取src/core/danmaku.ts负责 protobuf 弹幕拉取getSegDanmaku、在线/本地弹幕加载与下载弹幕解析src/utils/danmaku.ts的parseCmd把 protobuf 元素还原为旧版结构uhash/uid字段就是 midHash哈希反查用 midHash 查 CRC 彩虹表得到真实 mid身份展示src/io/account-getcardbymid.ts请求用户卡片把匿名路人还原成有头像、有昵称、有等级的 UP 主形象。对使用者来说不需要关心这些细节打开视频页弹幕相关操作就会自动带上发送者信息。 代码弹幕与弹幕保护计划2020 年 5 月 21 日 B 站启用 protobuf 弹幕后大量高级弹幕和mode 8/9 的代码弹幕允许把弹幕文本按 HTML 渲染的弹幕艺术永久丢失。Bilibili-Old 为此做了两件事代码弹幕支持代码弹幕的换行符在编解码时做特殊处理src/utils/danmaku.ts的encodeXml中对mode 8 || mode 9单独分支保证这类弹幕能正确还原弹幕保护计划项目内置danmaku/目录按 cid 命名存档了 7 个经典弹幕艺术作品如96048.xml、329896.xml「10 years after 白屏弹幕」等存档清单见danmaku/README.md。在重构播放器中你可以通过弹幕菜单加载本地弹幕选择 xml/json 文件由src/core/danmaku.ts的localDmXml解码后经appendDm注入播放器——那些上古珍宝就能在旧版页面上重新滚动起来。 安装与快速上手用户脚本方式安装 Tampermonkey 后从 GreasyFork 安装脚本打开任意 B 站页面点右下角浮动齿轮图标进入设置浏览器扩展方式使用 Chrome 扩展程序的加载已解压的扩展程序功能加载chrome/目录Manifest V3两种方式的完整步骤见项目根目录的README.md想查看源码直接克隆仓库git clone https://gitcode.com/gh_mirrors/bi/Bilibili-Old✨ 小结弹幕里的匿名只是一个CRC32 哈希midHash并非无法破解彩虹表用预计算的哈希 → mid映射把无法逆运算变成一次查表反查出的 mid 再走用户卡片接口就补齐了发送者的完整身份项目还顺手保护了濒临失传的代码弹幕艺术并支持本地加载恢复。对念旧的人而言Bilibili-Old 恢复的不仅是旧版页面还有那些藏在哈希值背后的弹幕背后的人。【免费下载链接】Bilibili-Old恢复旧版Bilibili页面为了那些念旧的人。项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Old创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表