Skip to content

tixset/ImageWriter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

πŸ’Ύ ImageWriter

License: GPL v3 Platform Language Version Status PRs Welcome

GitHub Stars GitHub Forks GitHub Issues Last Commit Code Size

English Russian

A modern disk image writing utility for USB drives and SD cards

πŸ“Έ Screenshot

Main window β€” project list


πŸ“– About

ImageWriter is a modernized and enhanced version of the dd for Windows utility, originally developed by John Newbigin. This project provides a graphical interface and additional features for writing disk images to removable media.


πŸ‘€ Credits

Original Project: dd for Windows by John Newbigin (jn@chrysocome.net)
Current Developer: Anton Zelenov (tixset@gmail.com)
GitHub: https://github.com/tixset/ImageWriter
License: GNU General Public License v3.0

πŸ“ Project Structure

ImageWriter/
β”œβ”€β”€ src/                   # Source code
β”‚   β”œβ”€β”€ *.pas, *.dfm      # Delphi modules and forms
β”‚   β”œβ”€β”€ managers/         # Business logic managers
β”‚   β”‚   β”œβ”€β”€ ArchiveHandler.pas    # Archive format support
β”‚   β”‚   β”œβ”€β”€ DeviceBenchmark.pas   # Performance testing
β”‚   β”‚   β”œβ”€β”€ DeviceManager.pas     # Device operations
β”‚   β”‚   └── ...          # Other manager modules
β”‚   └── studio/           # Helper modules
β”‚       β”œβ”€β”€ md5/          # MD5 hashing
β”‚       β”œβ”€β”€ random/       # Random number generator
β”‚       └── sha256/       # SHA-256 hashing
β”œβ”€β”€ tests/                 # Automated test suite
β”‚   β”œβ”€β”€ *.pas             # Test modules (DUnit)
β”‚   β”œβ”€β”€ ImageWriterTests.dpr  # Test runner
β”‚   β”œβ”€β”€ run_tests.bat     # Test execution script
β”‚   β”œβ”€β”€ *.ps1             # PowerShell integration tests
β”‚   └── README.md         # Test documentation
β”œβ”€β”€ docs/                  # Documentation
β”‚   β”œβ”€β”€ README.md         # Main documentation (English)
β”‚   β”œβ”€β”€ README.ru.md      # Documentation in Russian
β”‚   β”œβ”€β”€ CODING_STYLE_GUIDE.md   # Code style guidelines
β”‚   β”œβ”€β”€ COMMIT_CONVENTIONS.md   # Git commit standards
β”‚   └── ...              # Other documentation files
β”œβ”€β”€ resources/            # Application resources
β”‚   β”œβ”€β”€ *.rc             # Resource files
β”‚   └── *.RES            # Compiled resources
β”œβ”€β”€ lib/                  # External libraries
β”‚   └── zlib1.dll        # ZLib compression library
β”œβ”€β”€ LICENSE              # GNU GPL v3.0 license
β”œβ”€β”€ CHANGELOG.md         # Version history
β”œβ”€β”€ CONTRIBUTING.md      # Contribution guidelines
β”œβ”€β”€ CODE_OF_CONDUCT.md   # Community guidelines
β”œβ”€β”€ ROADMAP.md           # Development roadmap
β”œβ”€β”€ SECURITY.md          # Security policy
β”œβ”€β”€ BUILD_CONFIGURATION.md  # Build instructions (IDE + command-line)
β”œβ”€β”€ *.dpr                # Delphi project files
β”œβ”€β”€ *.dof                # Delphi IDE project settings
β”œβ”€β”€ *.cfg                # Compiler configuration (command-line)
β”œβ”€β”€ build.bat            # Build script
└── .gitignore

✨ Features

  • πŸ–₯️ Graphical User Interface - Easy-to-use Windows GUI
  • ⌨️ Command-Line Interface (CLI) - Console mode for automation and scripting
  • πŸ’Ύ Multiple Image Formats - Support for raw, GZIP (.gz), ZIP (.zip), XZ, BZIP2, 7z, TAR
  • βœ… Hash Verification - MD5 and SHA-256 checksums for data integrity
  • πŸ“Š Partition Information - Display MBR and GPT partition tables (even from archives!)
  • πŸ”’ UAC Elevation - Automatic privilege elevation on Vista and later
  • ⚑ High Performance - Optimized I/O operations with progress tracking
  • 🎯 Drag & Drop - Simple file selection via drag and drop
  • πŸ”§ Advanced Options - Block size, count, seek, and skip parameters
  • πŸ›‘οΈ Safe Operations - Volume locking and dismounting for data safety
  • πŸ“Š Progress Tracking - Real-time progress bar and status updates with ETA and speed
  • 🌐 Network Shares - Pro version supports network-mounted drives (UNC paths)
  • πŸ”„ Dynamic Loading - On-demand library loading for better startup performance
  • πŸ“ Comprehensive Logging - Detailed operation logs for troubleshooting
  • πŸ”§ Clean Code Architecture - Modular design with 37+ manager methods
  • βœ… Automated Testing - DUnit tests and PowerShell integration tests
  • 🎯 Active Development - Recent refactoring and GitHub-ready infrastructure
  • πŸ›‘οΈ GitHub Ready - Full CI/CD workflows, issue templates, security policy
  • πŸ”¬ Device Benchmarking - Test disk performance with read/write benchmarks
  • πŸ₯ Device Health Monitoring - Automatic diagnostics with WMI, SMART, and partition validation
  • πŸ›‘οΈ Smart Safety Features - Visual health indicators and write protection for critical devices

πŸš€ Quick Start

Prerequisites

  • Windows 7 or later (Vista supported with limitations)
  • Administrator privileges for writing to disk devices
  • zlib1.dll (included, auto-extracted when needed)

Building from Source

build.bat

Requires: Borland Delphi 7 or compatible compiler

Usage

GUI Mode

  1. Run ImageWriter.exe or ImageWriterPro.exe
  2. Select source image file or device
  3. Select target device
  4. Configure options (block size, count, etc.)
  5. Click "Write" or "Read"

Versions:

  • ImageWriter.exe - Standard version for local drives
  • ImageWriterPro.exe - Extended version with network share support

CLI Mode (Console)

List available devices:

ImageWriter.exe --cli --list

Write image to USB drive:

ImageWriter.exe --cli --write --device \\.\PhysicalDrive2 --file ubuntu.iso --verify

Read device to compressed image:

ImageWriter.exe --cli --read --device E:\ --file backup.img.gz --hash md5

Verify device against image:

ImageWriter.exe --cli --verify --device E:\ --file backup.img --hash sha256

Show help:

ImageWriter.exe --cli --help

CLI Options:

  • --device <path> - Device path (e.g., \\.\PhysicalDrive2 or E:\)
  • --file <path> - Image file (.img, .iso, .gz, .zip)
  • --bs <size> - Block size in bytes (default: 1048576)
  • --count <n> - Number of blocks to copy
  • --hash <md5|sha256> - Calculate hash after operation
  • --verify - Verify written data
  • --force - Skip safety checks (dangerous!)
  • --quiet - Suppress progress output

See ImageWriter.exe --cli --help for complete documentation.

πŸ“– Documentation

Full documentation is available in the docs/ directory:

πŸ§ͺ Testing

Run automated tests:

cd tests
run_tests.bat

Tests include:

  • Unit Tests - DUnit framework for core functionality
  • Integration Tests - PowerShell scripts for real-world scenarios
  • GUI Automation - UI testing via Windows Automation API

🀝 Contributing

We welcome contributions! Please read CONTRIBUTING.md before submitting pull requests.

πŸ“œ License

GNU General Public License v3.0 - see LICENSE for details.

πŸ”’ Security

If you discover a security vulnerability, please see SECURITY.md for responsible disclosure guidelines.

πŸ“š Additional Documentation

ImageWriter includes an automated test suite:

cd tests
run_tests.bat

Safety Features:

  • Tests ONLY on removable devices (USB drives)
  • NEVER tests on fixed disks
  • Automatic device type verification
  • Safe read-only operations

See tests/README.md for details.

πŸ› οΈ Technology Stack

  • Delphi 7 (Borland Delphi Version 15.0)
  • Win32 API for low-level disk access
  • Named Pipes for IPC in Pro version
  • ZLib for compressed image support (dynamic loading)

🀝 Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

Additional Resources:

πŸ“œ License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

πŸ™ Acknowledgments

  • John Newbigin - Original author of dd for Windows
  • The ZLib team for the compression library
  • All contributors to this project

πŸ“ž Contact

πŸ”— Links


Made with ❀️ for the open-source community

Note: This is a derivative work based on dd for Windows.
Original project Β© Chrysocome and John Newbigin, available under the GPL license.