Giải mã bytecode Python (.pyc) về mã nguồn Python đọc được. Hỗ trợ Python 2.7 – 3.8, chạy hoàn toàn trong trình duyệt, không cần backend.
Features
- Giải mã thông minh: Tự động tái tạo mã Python từ bytecode với phân tích AST và luồng điều khiển.
- Hỗ trợ đa phiên bản: Nhận diện magic number để áp dụng engine phù hợp cho Python 2.7–3.8; với bytecode mới hơn sẽ cung cấp disassembly tham khảo.
- Metadata chi tiết: Hiển thị phiên bản Python, magic number, timestamp, cấu trúc bytecode phục vụ điều tra.
- Xuất kết quả tiện lợi: Sao chép hoặc tải về Tệp .py chỉ với một cú nhấp.
Usage Guide
- Chuẩn bị môi trường: Nhấn "Tải môi trường" nếu lần đầu sử dụng để nạp các gói Python cần thiết.
- Chọn tệp bytecode: Nhấp "Tải tệp" và chọn Tệp .pyc cần giải mã từ máy của bạn.
- Theo dõi tiến trình: Chờ công cụ phân tích bytecode, kiểm tra thông tin meta và kết quả hiển thị.
- Xuất mã nguồn: Sao chép hoặc tải Tệp .py thu được để phục vụ rà soát và chỉnh sửa.
Technical Details
Quy trình giải mã
Tệp PYC được phân tích Tiêu đề (magic number, timestamp), giải mã opcode, dựng đồ thị luồng điều khiển rồi tái tạo AST để sinh lại mã Python cấp cao.
Thuật toán decompiler
Kết hợp phân tích Control/Data Flow, đối chiếu pattern bytecode và ánh xạ node AST (Module, FunctionDef, If, Loop...) nhằm tái cấu trúc cú pháp.
Engine uncompyle6 trên Pyodide
Công cụ đóng gói uncompyle6 cùng Pyodide, tải interpreter Python ~8MB, lưu cache trong trình duyệt và chạy toàn bộ decompiler phía client để bảo vệ dữ liệu.
Frequently Asked Questions
- Tệp .pyc là gì và tạo ra như thế nào?
- Python tạo .pyc khi import module để lưu bytecode giúp chạy nhanh hơn. Tệp chứa magic number (phiên bản), timestamp/hash (kiểm tra cache) và code object tuần tự hóa.
- Mã giải mã có giống hệt nguồn ban đầu?
- Không hoàn toàn. Quá trình biên dịch làm mất comment, định dạng, một số tên biến và cấu trúc lệnh. Tuy nhiên decompiler cố gắng tạo ra mã tương đương về chức năng.
- Hỗ trợ phiên bản Python nào?
- Hỗ trợ tốt Python 2.7–3.8/3.9+, nhưng phiên bản mới hơn hoặc quá cũ có thể chỉ hiển thị disassembly. Nên dùng decompiler khớp với phiên bản bytecode.
- Giải mã .pyc có hợp pháp không?
- Phụ thuộc bối cảnh pháp lý. Được phép khi khôi phục mã của chính bạn, audit bảo mật được cho phép, nghiên cứu giáo dục. Tránh vi phạm bản quyền hay thỏa thuận cấp phép.
Related Documentation
- Tài liệu nội bộ bytecode Python - Hướng dẫn chính thức về bytecode và mô-đun dis trong Python.
- PEP 552 - Deterministic pycs - Đặc tả định dạng tệp .pyc
- uncompyle6 - Decompiler Python - Kho mã nguồn uncompyle6 hỗ trợ nhiều phiên bản bytecode.
- Tài liệu mô-đun AST - API chuẩn để thao tác cây cú pháp trừu tượng trong Python.
- Cấu trúc code object Python - Giải thích chi tiết code object và các trường dữ liệu nội bộ.