298 lines
9.4 KiB
Markdown
298 lines
9.4 KiB
Markdown
# HexaWork - Byte Inspector
|
|
|
|
## Overview
|
|
HexaWork is a Python Tkinter application for binary file inspection and analysis. It provides a hexadecimal viewer and advanced byte analysis capabilities.
|
|
|
|
## Features
|
|
|
|
### 1. Hexadecimal View
|
|
- Three-column display: offset, hexadecimal values, and ASCII representation
|
|
- Uppercase hexadecimal values for better readability
|
|
- Monospace font for perfect alignment
|
|
- Horizontal and vertical scrollbars
|
|
|
|
### 2. Byte Analysis
|
|
#### Normal Order
|
|
- HEX: Hexadecimal representation of selected bytes
|
|
- DEC: Corresponding decimal value
|
|
- !HEX: Bitwise complement in hexadecimal
|
|
- !DEC: Bitwise complement in decimal
|
|
|
|
#### Reverse Order
|
|
- HEX: Hexadecimal representation of bytes in reverse order
|
|
- DEC: Decimal value of reverse order
|
|
- !HEX: Bitwise complement in hexadecimal
|
|
- !DEC: Bitwise complement in decimal
|
|
|
|
### 3. Flexible Selection
|
|
- Direct selection of hexadecimal values
|
|
- Full line selection including offset and ASCII
|
|
- Automatic analysis update on selection
|
|
|
|
### 4. ASCII Pattern Analysis
|
|
- Comprehensive file-wide ASCII text scanning
|
|
- Detects various patterns:
|
|
* Phone numbers
|
|
* Short letter sequences
|
|
* Alphanumeric codes
|
|
* Potential 3-letter abbreviations
|
|
- Interactive results popup
|
|
- Supports multiple pattern types
|
|
|
|
### 5. Advanced ASCII Pattern Recognition
|
|
- Comprehensive file-wide text scanning
|
|
- Multiple pattern detection:
|
|
* Possible Software Numbers (10-11 digits)
|
|
* Vehicle Identification Numbers (VIN)
|
|
* Potential Code Sequences
|
|
* Possible PIN Codes
|
|
- Unique pattern occurrence counting
|
|
- Interactive results display
|
|
- Supports complex alphanumeric pattern matching
|
|
|
|
### 6. Pattern Analysis Features
|
|
- Detailed pattern identification:
|
|
* Detects 3+ letter codes
|
|
* Finds long numeric sequences
|
|
* Highlights repeated patterns
|
|
- Occurrence frequency tracking
|
|
- User-friendly results popup
|
|
- Flexible pattern recognition
|
|
|
|
## Recent Updates and Enhancements
|
|
|
|
### Logging System
|
|
- Created centralized logging mechanism in `logger.py`
|
|
- Logs saved in timestamped files in `logs/` directory
|
|
- Provides detailed error tracking and information logging
|
|
- Supports both console and file logging
|
|
|
|
### Binary Graph Visualization
|
|
- Replaced Matplotlib with Plotly for interactive graphing
|
|
- Added `tkinterweb` support for rendering interactive graphs
|
|
- Enhanced scrolling capabilities for large binary files
|
|
- Improved error handling and data validation
|
|
|
|
### Error Handling
|
|
- Comprehensive error management across all modules
|
|
- User-friendly error messages
|
|
- Detailed logging for debugging purposes
|
|
|
|
### Performance Improvements
|
|
- More robust data type handling
|
|
- Optimized graph rendering
|
|
- Improved scrolling mechanisms
|
|
|
|
### New Dependencies
|
|
- Added `plotly` for interactive graphing
|
|
- Added `tkinterweb` for HTML-based graph rendering
|
|
|
|
### Installation
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Known Limitations
|
|
- Initial graph view limited to 512 data points
|
|
- Requires Python 3.12+
|
|
- Windows platform recommended
|
|
|
|
## Updates (December 6, 2023)
|
|
|
|
### EDC15 Info Window Enhancements
|
|
- **Hardware Number Detection**
|
|
- Automatically detects and displays 9-digit hardware numbers starting with prefixes (0281, 0265, 0255, 0275, 0235, 0285)
|
|
- Additional hardware numbers found are displayed in the comments section
|
|
|
|
- **Software Number Detection**
|
|
- Automatically finds and displays 9-digit software numbers starting with "103"
|
|
- Additional software numbers found are shown in the comments section
|
|
- Duplicate numbers are filtered out to avoid redundancy
|
|
|
|
- **Interface Improvements**
|
|
- Reorganized car information layout:
|
|
- Left side: Vertical alignment of all fields (Brand, Model, Engine, HP, KW, Year, VIN, Transmission)
|
|
- Right side: Comments section with scrollbar
|
|
- Replaced Save/Cancel buttons with:
|
|
- Create Project button (left-aligned)
|
|
- Cancel button (right-aligned)
|
|
- Improved field organization and spacing for better user experience
|
|
- Comments now show only unique additional hardware/software numbers
|
|
|
|
### New Features
|
|
- **Project Creation**
|
|
- Added new "Create Project" functionality
|
|
- Integrated with existing ECU information system
|
|
- Improved data validation and error handling
|
|
|
|
### Technical Updates
|
|
- Enhanced error logging for better debugging
|
|
- Improved memory management for binary file handling
|
|
- Updated UI components for better responsiveness
|
|
|
|
## Updates (December 20, 2023)
|
|
|
|
### Project Creation Workflow Enhancement
|
|
- Implemented strict project creation workflow
|
|
- Users must create a project before opening a binary file
|
|
- Added validation to ensure all required fields are filled
|
|
- Improved user experience by guiding project creation process
|
|
|
|
#### New Project Creation Rules
|
|
- "New Project" button in Flash Window initiates file selection
|
|
- EDC15 Info Window appears with mandatory fields
|
|
- Project can only be created after filling all required information
|
|
- Closing the info window without creating a project returns to the main screen
|
|
- Prevents accidental file opening without proper project context
|
|
|
|
#### Validation Improvements
|
|
- Comprehensive field validation in project creation
|
|
- Prevents project creation with incomplete information
|
|
- User-friendly warning messages for missing fields
|
|
- Enhanced data integrity and workflow control
|
|
|
|
### Technical Implementation Details
|
|
- Added `project_created` flag in `EDC15InfoWindow`
|
|
- Implemented `window_closed` flag to track user interactions
|
|
- Updated `open_file()` method in `FlashWindow`
|
|
- Modified main application flow to enforce project creation
|
|
|
|
### Benefits
|
|
- Improved data tracking and project management
|
|
- Prevents incomplete or accidental file processing
|
|
- Provides clear guidance for users during project creation
|
|
- Enhances overall application reliability
|
|
|
|
## Troubleshooting
|
|
- If you encounter any import errors, ensure all dependencies are installed
|
|
- Check log files in the `logs/` directory for detailed error information
|
|
|
|
## Installation
|
|
|
|
1. Requirements:
|
|
- Python 3.7 or higher
|
|
- Tkinter (usually included with Python)
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. Run the program:
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
2. Features:
|
|
- Click "Select File" to choose a binary file
|
|
- Select bytes in the hex viewer (using mouse or keyboard)
|
|
- View automatic analysis in Normal Order and Reverse Order panels
|
|
- Use scrollbars to navigate large files
|
|
|
|
## Examples
|
|
|
|
### Byte Analysis
|
|
If you select bytes "4E 31":
|
|
- Normal Order:
|
|
* HEX: 4E31
|
|
* DEC: 20017
|
|
* !HEX: [complement]
|
|
* !DEC: [decimal complement]
|
|
|
|
- Reverse Order:
|
|
* HEX: 314E
|
|
* DEC: 12622
|
|
* !HEX: [complement]
|
|
* !DEC: [decimal complement]
|
|
|
|
## Detailed Update History
|
|
|
|
### Version 0.2.0 - Advanced Editing Capabilities
|
|
#### Hexadecimal Editing Enhancements
|
|
- Implemented sophisticated in-place hexadecimal editing
|
|
- Developed smart cursor positioning algorithm
|
|
* Maintains cursor location during edits
|
|
* Handles edits at any file location
|
|
- Preserved line formatting during byte modifications
|
|
- Added real-time hex value validation
|
|
|
|
#### File Modification Safety
|
|
- Introduced file size change warning mechanism
|
|
- Implemented confirmation dialog for file size alterations
|
|
- Ensured user awareness of potential file structure changes
|
|
|
|
#### Checksum Refinements
|
|
- Enhanced checksum calculation methods
|
|
- Supported variable-length byte sequences
|
|
- Implemented three distinct checksum types:
|
|
* 1-byte Sum Checksum
|
|
* 1-byte XOR Checksum
|
|
* 16-bit Checksum
|
|
- Provided hexadecimal representation of checksums
|
|
|
|
#### Technical Improvements
|
|
- Added comprehensive error logging
|
|
- Improved input validation
|
|
- Enhanced user interaction during file editing
|
|
|
|
### Version 0.3.0 - Binary Graph Enhancements
|
|
#### Graph Display Improvements
|
|
- Implemented custom Tkinter-based graph visualization
|
|
- Added support for 8-bit, 16-bit, and 32-bit data display
|
|
- Enhanced scrolling mechanism for viewing large datasets
|
|
- Dynamic point display control (5-1500 points)
|
|
|
|
#### Axis Customization
|
|
- X-axis:
|
|
* Hexadecimal value display
|
|
* Special 16-bit mode with doubled values
|
|
* Automatic scaling based on visible points
|
|
- Y-axis:
|
|
* Fixed maximum values based on bit mode (255, 65535, 4294967295)
|
|
* Decimal value display
|
|
* Proper scaling for all data ranges
|
|
|
|
#### Interactive Features
|
|
- Smooth scrolling with scrollbar and mouse wheel
|
|
- Dynamic graph updates when changing bit modes
|
|
- Automatic rescaling when changing number of visible points
|
|
- Default 512-point display for optimal performance
|
|
|
|
#### Technical Improvements
|
|
- Implemented efficient canvas-based plotting
|
|
- Enhanced error handling and logging
|
|
- Improved memory management for large datasets
|
|
- Better user experience with responsive controls
|
|
|
|
### Version 0.3.1 - Interactive Graph Hover
|
|
#### Enhanced Graph Interaction
|
|
- Implemented interactive hover functionality in binary graph
|
|
- Added dynamic vertical line tracking mouse position
|
|
- Hover label displays:
|
|
* X-axis position in hexadecimal
|
|
* Y-axis value in decimal and hexadecimal
|
|
- Seamless integration with existing 8-bit, 16-bit, and 32-bit modes
|
|
- Improved data visualization with real-time coordinate tracking
|
|
|
|
### Upcoming Features
|
|
- Large file performance optimization
|
|
- Advanced search functionality
|
|
- More configurable display options
|
|
- Comprehensive unit testing
|
|
|
|
## Logging
|
|
- Log file: hexawork.log
|
|
- Records operations and errors for debugging
|
|
- Format: timestamp, module, level, message
|
|
|
|
## Contributing
|
|
Feel free to:
|
|
- Report bugs
|
|
- Suggest improvements
|
|
- Submit pull requests
|
|
|
|
## License
|
|
This project is under the MIT license.
|