A code library to marshal, unmarshal, visual and reverse visualization of BDX files
Project description
BDX Converter
一个免费开源的 BDX 文件解析器
目录
BDX Converter
BDX Converter
是一个轻量化的纯 Python
实现,它提供了基本的 BDX
解析、反解析、JSON
可视化和反可视化功能。
注意事项
兼容性
- 版本
1.1.11
在签名功能上不兼容之前的版本 - 版本
1.1.0
不兼容之前的所有版本 - 版本
1.0.16
在可视化和反可视化字典方面不兼容之前的版本
签名
-
BDX
文件格式是由PhoenixBuilder
所定义,签名BDX
文件则必须具备PhoenixBuilder
账户 -
由于一些原因,您需要自行获取
签名
时的Prove
和PrivateSigningKey
,以下展示了获取方法。有关本项目实现的签名功能,请见BDXConverter/Converter/Signature.py
""" import ecdsa peer = ecdsa.SigningKey.generate(ecdsa.NIST384p) verifyingKey = peer.get_verifying_key() publicKey = verifyingKey.to_string().hex() print(publicKey) # publicKey(...) """ # Generate a new public key to send a auth request to the romote server """ The address of PhoenixBuilder Auth server is wss://api.fastbuilder.pro:2053 """ # Address of PhoenixBuilder Auth server """ Golang Structure type AuthRequest struct { Action string `json:"action"` ServerCode string `json:"serverCode"` ServerPassword string `json:"serverPassword"` Key string `json:"publicKey"` FBToken string } Python Dictionary { 'action': 'phoenix::login', 'serverCode': ..., 'serverPassword': ..., 'publicKey': ..., 'FBToken': ... } """ # Send an auth request to the PhoenixBuilder Auth server # Note: Must use GZIP to compress data when sending """ Python Dictionary { 'chainInfo': ..., 'code': ..., 'message': ..., 'privateSigningKey': ..., 'prove': ... } """ # The response of the PhoenixBuilder Auth server when the request succeeds
PhoenixBuilder Auth Server
使用了Cloudflared
来代理(加速)它的Websocket
服务器,因此您无法直接使用Python
的Websocket
库来连接此服务器。目前尚且未找到对应的解决办法,一个替代方案是使用Golang
下的Websocket
库与PhoenixBuilder Auth Server
建立连接
快速上手
您可以利用 BDXConverter/Converter/FileOperation.py
中已提供的 4
个函数来完成 BDX
文件和 JSON
文件的相关操作。
🐍 Pypi Packages
我们已将此存储库以 BDXConverter
的名字上载到 Pypi
,您可以通过 pip install BDXConverter
快速安装。
访问 📦 BDXConverter on Pypi 以了解有关此库的更多信息。
我们配置了自动化 CD/CI 工作流
,因此如果您是本项目的 协作者
,您可以通过更改 version
文件或通过手动触发的方式启动工作流,它会自动编译本项目并将将其上载到 Pypi
中。
[注:我们建议您在 Python 3.10
及以上的版本使用本项目,3.7
及以下的版本已不再受到 Python
的维护和更新]
第三方依赖
本项目使用了 brotli, nbtlib
和 pycryptodome
总计 3
个第三方库,您可以通过在 终端
逐一地执行以下命令以安装它们。
pip install brotli
pip install nbtlib
pip install pycryptodome
特性
您可以从 BDXConverter/General/Pool.py
查看本项目已支持的全部 BDX
操作符。
实际上,我们将每一个操作符都转换为了 Python
下已被实例化的类,并且每个类都有以下属性。
class GeneralClass:
"""
Any operation of the BDX file will inherit this class
"""
def __init__(self) -> None:
self.operationNumber: int
self.operationName: str
def Marshal(self, writer: BytesIO) -> None:
"""
Marshal Self@GeneralClass into the writer(io object)
"""
...
def UnMarshal(self, buffer: BytesIO) -> None:
"""
Unmarshal the buffer(io object) into Self@GeneralClass
"""
...
def Loads(self, jsonDict: dict) -> None:
"""
Load datas from jsonDict:dict
"""
...
def Dumps(self) -> dict:
"""
Convert Self@GeneralClass into the basic dictionary
"""
...
因此,通过 Marshal
和 UnMarshal
函数,BDX Converter
可以自由的将 二进制数据
转换为 Python Class
,亦或转换回去。
而 Loads
和 Dumps
分别支持了把只带有基本数据类型的字典转换为 Python Class
亦或转换回去的功能。
目前 BDX Converter
支持了所有的操作符,包括但不限于 Operation 5, Operation 13, Operation 40
和 Operation 41
,当前也包含 签名
相关的功能。
什么是 BDX
文件
PhoenixBuilder
是一个用于 网易我的世界中国版 · 基岩版租赁服
的商业化快速建造器,而 BDX
文件则是此建造器用于存储 Minecraft
建筑结构的 私有文件格式
。
如果您希望解析 BDX
文件,敬请参阅 bdump-cn.md
。
关于 PhoenixBuilder
- 您可以通过此链接访问
PhoenixBuilder
的存储库 - 您可以通过下述链接访问
PhoenixBuilder
的相关网站
待办列表
-
API
文档 - 支持与
签名
有关的功能 - 可以将得到的
Python Class
进一步解析为建筑结构 - 可以自由地转换
BDX
和其他建筑文件格式
其他
本项目依照 MIT LICENSE
许可证进行许可和授权。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for BDXConverter-1.1.13-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a6665355cfa8488ea2a9d6d43afc6b21ecbd2a25420f1ee0f6133a634c181d6 |
|
MD5 | be851d62f624064129f7714b4fc51a42 |
|
BLAKE2b-256 | 87740e1c9d49d90543d98a774796add625f256f7b286b47fafa99c7a2eb3a737 |