EAC Logchecker
This is a transparent implementation of the Exact Audio Copy log checksum algorithm in Python 3.5+.
This is a fork of https://github.com/puddly/eac_logsigner, with modifications to have it better match the output of the actual EAC Logchecker to be used in downstream applications. All credit goes to puddly for reverse-engineering the closed source EAC to develop the base.
Requirements
- Python 3.5+
- pprp==0.2.6
Installation
From PyPI:
$ pip install eac-logchecker
From source:
$ git clone https://github.com/OPSnet/eac_logchecker.py
$ cd eac_logchecker.py
$ python setup.py install
Usage
usage: eac_logchecker.py [-h] [--json] file
Verifies and resigns EAC logs
positional arguments:
file input log file
optional arguments:
-h, --help show this help message and exit
--json Output as JSON
Example
$ eac_logchecker logs/01.log
Log Integrity Checker (C) 2010 by Andre Wiethoff
1. Log entry is fine!
$ eac_logchecker logs/01.log
$ eac_logchecker logs/05.log
Log Integrity Checker (C) 2010 by Andre Wiethoff
1. Log entry is fine!
2. Log entry is fine!
$ eac_logchecker --json logs/05.log
[{"message": "Log entry is fine!", "status": "OK"}, {"message": "Log entry is fine!", "status": "OK"}]
Algorithm
- Strip the log file of newlines and BOMs.
- Cut off the existing signature block and (re-)encode the log text back into little-endian UTF-16
- Encrypt the log file with Rijndael-256:
- in CBC mode
- with a 256-bit block size (most AES implementations hard-code a 128-bit block size)
- all-zeroes IV
- zero-padding
- the hex key
9378716cf13e4265ae55338e940b376184da389e50647726b35f6f341ee3efd9
- XOR together all of the resulting 256-bit ciphertext blocks. You can do it byte-by-byte, it doesn't matter in the end.
- Output the little-endian representation of the above number, in uppercase hex.
Metadata
Release files for eac-logchecker 0.8.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| eac_logchecker-0.8.1.tar.gz | 5.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eac_logchecker-0.8.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.7 kB
Release files / eac_logchecker-0.8.1.tar.gz
| Download URL | eac_logchecker-0.8.1.tar.gz |
|---|---|
| Size | 5.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
681d83ec8ee7b581a394e190bf50f91929ac34a12af0584609bb71fa427ea177
|
|
BLAKE2b-256 checksum How to use checksums |
fe2cf01a9a6d8b0fb70aa5db561b51f674e67b46bf6a95a7c92d6dfccf6165c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.7
|
Release files / eac_logchecker-0.8.1-py3-none-any.whl
| Download URL | eac_logchecker-0.8.1-py3-none-any.whl |
|---|---|
| Size | 5.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
374cad78dcbf5df3c86ff96693e4b81ab9c47f7aad378488221bc3fb4bbbeac9
|
|
BLAKE2b-256 checksum How to use checksums |
a1a4a9cd81196b79145d261e4b1f8b8aaa0bd1e6157da404ca718c075c116360
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.7
|
Security for eac-logchecker 0.8.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.