Carregar ficheiros para "/"
This commit is contained in:
297
README.md
Normal file
297
README.md
Normal file
@ -0,0 +1,297 @@
|
|||||||
|
# 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.
|
||||||
17
list_EDC15.txt
Normal file
17
list_EDC15.txt
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
EDC15C0
|
||||||
|
EDC15C2
|
||||||
|
EDC15C3
|
||||||
|
EDC15C4
|
||||||
|
EDC15C5
|
||||||
|
EDC15C6
|
||||||
|
EDC15C7
|
||||||
|
EDC15C9
|
||||||
|
EDC15C11
|
||||||
|
EDC15C13
|
||||||
|
EDC15M1
|
||||||
|
EDC15P+
|
||||||
|
EDC15P
|
||||||
|
EDC15P6
|
||||||
|
EDC15V
|
||||||
|
EDC15V+
|
||||||
|
EDC15VM
|
||||||
11
liste type.csv
Normal file
11
liste type.csv
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
ECU Type
|
||||||
|
EDC15C13
|
||||||
|
EDC15C2
|
||||||
|
EDC15C3
|
||||||
|
EDC15C4
|
||||||
|
EDC15C5
|
||||||
|
EDC15C6
|
||||||
|
EDC15C7
|
||||||
|
EDC15C9
|
||||||
|
EDC15P
|
||||||
|
EDC15V
|
||||||
|
44
logger.py
Normal file
44
logger.py
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import logging
|
||||||
|
import os
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
def setup_logger(name='hexaw_logger', log_dir='logs'):
|
||||||
|
"""
|
||||||
|
Set up a logger with file and console output.
|
||||||
|
|
||||||
|
:param name: Name of the logger
|
||||||
|
:param log_dir: Directory to store log files
|
||||||
|
:return: Configured logger
|
||||||
|
"""
|
||||||
|
# Create logs directory if it doesn't exist
|
||||||
|
os.makedirs(log_dir, exist_ok=True)
|
||||||
|
|
||||||
|
# Generate a log filename with timestamp
|
||||||
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
|
log_file = os.path.join(log_dir, f'{name}_{timestamp}.log')
|
||||||
|
|
||||||
|
# Create logger
|
||||||
|
logger = logging.getLogger(name)
|
||||||
|
logger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
# Create file handler
|
||||||
|
file_handler = logging.FileHandler(log_file, encoding='utf-8')
|
||||||
|
file_handler.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
# Create console handler
|
||||||
|
console_handler = logging.StreamHandler()
|
||||||
|
console_handler.setLevel(logging.INFO)
|
||||||
|
|
||||||
|
# Create formatter
|
||||||
|
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
file_handler.setFormatter(formatter)
|
||||||
|
console_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
# Add handlers to logger
|
||||||
|
logger.addHandler(file_handler)
|
||||||
|
logger.addHandler(console_handler)
|
||||||
|
|
||||||
|
return logger
|
||||||
|
|
||||||
|
# Create a global logger instance
|
||||||
|
logger = setup_logger()
|
||||||
Reference in New Issue
Block a user