gmarav/DeACED

GitHub: gmarav/DeACED

DeACED 是 SerializationDumper 的零依赖 Python 移植版,用于转储和检查 Java 序列化流与 RMI 数据包,修复了原版 bug 并支持 JSON 等多种输出格式。

Stars: 0 | Forks: 0

# DeACED [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/gmarav/DeACED/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ![Python](https://img.shields.io/badge/python-3.10%E2%80%933.14-blue) `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, 开发工具, 数据解析, 文档结构分析, 无后门, 逆向工具