Skip to main content

A comprehensive environment for hardware and firmware reverse engineering, analysis and management

Project description

Twinizer

Overview

Twinizer is a comprehensive toolkit for creating and manipulating digital twins of hardware and software systems. It provides a collection of converters, analyzers, and utilities to transform various input formats into useful representations for digital twin applications.

Features

Hardware Analysis

  • KiCad Integration: Parse and convert KiCad schematics and PCB layouts
  • KiCad Docker Integration: Convert KiCad files to various formats (SVG, PNG, PDF, DXF, HPGL, PS, EPS) and analyze projects using Docker
  • Altium Integration: Support for Altium Designer files
  • 3D Model Generation: Convert PCB designs to 3D models

Software Analysis

  • Dependency Analysis: Analyze project dependencies across various languages and build systems
  • Decompilation: Convert binary files to higher-level representations
  • Disassembly: Disassemble binary files into assembly code

Converters

  • PDF to Markdown: Convert PDF documents to Markdown format
  • Image Processing:
    • ASCII Art: Convert images to ASCII art
    • Mermaid Diagrams: Generate Mermaid diagrams from images
    • 3D Models: Convert images to height maps, normal maps, 3D meshes, and point clouds
  • Binary to Source: Convert binary files to source code representations

Installation

Using pip

pip install twinizer

From Source

git clone https://github.com/yourusername/twinizer.git
cd twinizer
pip install -e .

Dependencies

Twinizer has several optional dependencies that enable specific features:

# For image processing features
pip install matplotlib

# For KiCad integration (required for hardware analysis)
# KiCad must be installed on your system for full functionality

# For KiCad Docker integration
# Docker must be installed and running on your system

# For PDF conversion
pip install pdfminer.six

# For all optional dependencies
pip install twinizer[all]

Usage

Command Line Interface

Twinizer provides a comprehensive command-line interface for all its functionality:

# Show help and available commands
twinizer --help

# Analyze project structure
twinizer analyze structure --source-dir /path/to/project

# Convert between file formats
twinizer convert pdf-to-markdown /path/to/document.pdf --output document.md

# Work with KiCad files
twinizer kicad sch-to-mermaid /path/to/schematic.sch --diagram-type flowchart --output schematic.mmd
twinizer kicad sch-to-bom /path/to/schematic.sch --format csv --output bom.csv
twinizer kicad pcb-to-mermaid /path/to/pcb.kicad_pcb --diagram-type flowchart --output pcb.mmd

# Work with KiCad files using Docker
twinizer kicad-docker convert /path/to/schematic.kicad_sch --format svg --output schematic.svg
twinizer kicad-docker convert /path/to/schematic.kicad_sch --format pdf --color-theme dark --paper-size A3 --orientation landscape
twinizer kicad-docker analyze /path/to/kicad_project --format html --output report.html
twinizer kicad-docker formats

Project Structure

twinizer/
├── src/
│   ├── twinizer/
│   │   ├── cli/               # Command-line interface
│   │   │   └── commands/      # CLI command modules
│   │   ├── converters/        # File format converters
│   │   │   ├── pdf2md/        # PDF to Markdown conversion
│   │   │   ├── image/         # Image processing
│   │   │   └── bin2source/    # Binary to source code conversion
│   │   ├── hardware/          # Hardware analysis
│   │   │   ├── kicad/         # KiCad file parsing
│   │   │   └── altium/        # Altium file parsing
│   │   ├── software/          # Software analysis
│   │   │   ├── analyze/       # Code analysis
│   │   │   ├── decompile/     # Decompilation
│   │   │   └── disassemble/   # Disassembly
│   │   └── utils/             # Utility functions
├── scripts/                   # Utility scripts
├── tests/                     # Test suite
├── docs/                      # Documentation
├── examples/                  # Example code
├── pyproject.toml             # Project configuration
└── README.md                  # This file

Examples

See the examples/ directory for example scripts demonstrating various features of Twinizer.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twinizer-0.1.13.tar.gz (118.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

twinizer-0.1.13-py3-none-any.whl (145.0 kB view details)

Uploaded Python 3

File details

Details for the file twinizer-0.1.13.tar.gz.

File metadata

  • Download URL: twinizer-0.1.13.tar.gz
  • Upload date:
  • Size: 118.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for twinizer-0.1.13.tar.gz
Algorithm Hash digest
SHA256 120071ae5f70a2da73d2e0499ea6d4615ba3e235cf0ed2bf2a6439c9b8380896
MD5 f8c7ae3819500a09a60787e6b134b1b2
BLAKE2b-256 f966bf4f8586bed203585ab7e6570807fe0857e4bcb1224e40e24e4081e413dd

See more details on using hashes here.

File details

Details for the file twinizer-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: twinizer-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 145.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for twinizer-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 303211f0da5741bd321e1ebc87d9878f8adb376100e2310b7b209a17dd30ea12
MD5 fb8f87507d1252e48af9b459930008f8
BLAKE2b-256 a0da41e018b14428ce697216aacdc06c1508a5574b4d1a005543378e5f47542d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page