gmarav/DeACED
GitHub: gmarav/DeACED
DeACED 是 SerializationDumper 的零依赖 Python 移植版,用于转储和检查 Java 序列化流与 RMI 数据包,修复了原版 bug 并支持 JSON 等多种输出格式。
Stars: 0 | Forks: 0
# DeACED
[](https://github.com/gmarav/DeACED/actions/workflows/ci.yml)
[](LICENSE)

`DeACED`(致敬 `AC ED` 流魔术以及*反序列化*)是一个小型的、**零依赖**的 Python 库和 CLI。
它是 Nicky Bloor 的 [SerializationDumper](https://github.com/NickstaDB/SerializationDumper) 的移植版,
包含若干正确性修复(详见 [NOTICE](NOTICE))。
## 安装
```
pip install deaced # once published
# 或从源码:
pip install .
```
## CLI
```
deaced -r dump.bin # raw serialized file
cat dump.bin | deaced -r - # from stdin
deaced -x aced0005740004414243... # hex on the command line
deaced -f hexdump.txt # file of hex-ascii bytes
deaced -r dump.bin --offsets # prefix each line with '@|'
deaced -r dump.bin -o out.txt # write to a file
deaced -r dump.bin -F json # structured, machine-readable JSON
deaced -r dump.bin -F pretty # compact, human-readable data tree
```
示例:
```
$ deaced -x aced0005740004414243447071007e0000
STREAM_MAGIC - 0xac ed
STREAM_VERSION - 0x00 05
Contents
TC_STRING - 0x74
newHandle 0x00 7e 00 00
Length - 4 - 0x00 04
Value - ABCD - 0x41424344
TC_NULL - 0x70
TC_REFERENCE - 0x71
Handle - 8257536 - 0x00 7e 00 00
```
## 库
```
from deaced import dump, parse
data = open("dump.bin", "rb").read()
print(dump(data)) # text dump (default)
print(dump(data, offsets=True)) # with '@|' prefixes
print(dump(data, format="json")) # structured JSON
print(dump(data, format="pretty")) # compact human-readable tree
tree = parse(data) # the semantic AST (deaced.model.Stream)
```
## 为什么需要移植?
移除了对 JVM 的依赖(原版是一个 Java jar),可以在任何支持 Python 的地方运行,集成到 Python 工具链中,并修复了原版中真实的 bug——尤其是 `(long)`/`(double)` 整数移位 bug(`0xFFFFFFFFFFFFFFFF` 显示为 `-4294967297` 而不是 `-1`)。完整列表请参见 [NOTICE](NOTICE)。
## 安全性
DeACED 旨在检查**不受信任的、由攻击者控制的**序列化流(这是转储序列化流的常见原因),因此:
- **它永远不会反序列化 Java 对象。** DeACED 只读取并将字节流解码为描述性的树结构——它不会加载类、实例化对象或调用 `readObject`。经典的 Java 反序列化 gadget chain 无法通过它触发。
- **遇到畸形输入时会干净地失败。** 截断或结构无效的流会引发携带字节偏移量的 `SerDumpError`;负的长度/计数会被拒绝,而不是导致巨大的内存分配;深度嵌套的流会引发错误而不是导致解释器崩溃。
资源消耗仍然与输入大小成正比——在直接从网络转储数据时,请自行设定限制。请参阅 [SECURITY.md](SECURITY.md)。
## 开发
```
pip install -e ".[dev]"
pytest # tests (tiny synthetic fixtures)
ruff check .
ruff format --check .
mypy
```
## 贡献
欢迎贡献——请参阅 [CONTRIBUTING](CONTRIBUTING.md)。原版中流“重建”(`-b`)模式被有意未作移植(参见 [NOTICE](NOTICE))。
## 致谢与许可
由 **Alexander Gmar** ([@gmarav](https://github.com/gmarav)) 进行 Python 移植 —— [github.com/gmarav/DeACED](https://github.com/gmarav/DeACED)。
基于 **Nicky Bloor** ([@NickstaDB](https://github.com/NickstaDB)) 的 **SerializationDumper**。
采用 [MIT License](LICENSE) 授权;移植版 © 2026 Alexander Gmar,原版 © 2017 Nicky Bloor。
标签:Java反序列化, Python, RMI协议, SOC Prime, 开发工具, 数据解析, 文档结构分析, 无后门, 逆向工具