86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
# auCDtect 0.8.2 reverse notes
|
|
|
|
Binary:
|
|
|
|
- File: `auCDtect.exe`
|
|
- SHA256: `efe47eec21c33431e7fceea4b171b8a15a729e3adcda967ee0fc165a6a41adba`
|
|
- Format: PE32 console, i386
|
|
- Build timestamp: 2004-09-24 05:29:58
|
|
- Version string: `auCDtect: CD records authenticity detector, version 0.8.2`
|
|
|
|
Useful functions found with radare2:
|
|
|
|
- `0x4014a0`: prints verbose per-track metrics and final per-track conclusion.
|
|
- `0x401650`: main CLI flow, option parsing, per-file processing.
|
|
- `0x403ef0`: summary classifier for a set of tracks.
|
|
- `0x402630`: large analysis function called during per-file processing.
|
|
- `0x402050`: WAV loading / analysis setup area.
|
|
|
|
Printed metrics in verbose mode:
|
|
|
|
- `Detected average hi-boundary frequency`
|
|
- `Detected average lo-boundary frequency`
|
|
- `Detected average hi-cut frequency`
|
|
- `Detected average lo-cut frequency`
|
|
- `Maximum probablis boundary frequency`
|
|
- `Coefficient of nonlinearity of a phase`
|
|
- `First order smothness`
|
|
- `Second order smothness`
|
|
|
|
Result struct offsets used by `0x4014a0`:
|
|
|
|
- `+0x00`: hi-boundary frequency, double
|
|
- `+0x08`: lo-boundary frequency, double
|
|
- `+0x18`: hi-cut frequency, double
|
|
- `+0x20`: lo-cut frequency, double
|
|
- `+0x30`: maximum probable boundary frequency, double
|
|
- `+0x38`: coefficient of phase nonlinearity, double
|
|
- `+0x40`: first-order smoothness denominator, double
|
|
- `+0x48`: first-order smoothness numerator, double
|
|
- `+0x50`: second-order smoothness denominator, double
|
|
- `+0x58`: second-order smoothness numerator, double
|
|
- `+0x88`: probability history / mode array, double[]
|
|
- `+0xa8`: result code / MPEG probability presence
|
|
- `+0xc0`: index into probability history
|
|
|
|
Observed original outputs:
|
|
|
|
## CDDA sample
|
|
|
|
Source: `samples/cdda/01 - In the Flesh.flac`, decoded to `cdda_in_the_flesh.wav`
|
|
|
|
```text
|
|
Detected average hi-boundary frequency: 2.062375e+004 Hz
|
|
Detected average lo-boundary frequency: 1.383399e+004 Hz
|
|
Detected average hi-cut frequency: 2.184077e+004 Hz
|
|
Detected average lo-cut frequency: 1.469628e+004 Hz
|
|
Maximum probablis boundary frequency: 2.152500e+004 Hz
|
|
Coefficient of nonlinearity of a phase: 1.496717e+000
|
|
First order smothness: 3.164557e-001
|
|
Second order smothness: 8.059072e-001
|
|
This track looks like CDDA with probability 100%
|
|
```
|
|
|
|
## MP3 transcode sample
|
|
|
|
Source: `samples/mp3_to_flac/01 - In the Flesh.flac`, decoded to `mp3_in_the_flesh.wav`
|
|
|
|
```text
|
|
Detected average hi-boundary frequency: 1.883405e+004 Hz
|
|
Detected average lo-boundary frequency: 1.721351e+004 Hz
|
|
Detected average hi-cut frequency: 1.875735e+004 Hz
|
|
Detected average lo-cut frequency: 1.760003e+004 Hz
|
|
Maximum probablis boundary frequency: 1.669100e+004 Hz
|
|
Coefficient of nonlinearity of a phase: 4.837348e-002
|
|
First order smothness: 8.607595e-001
|
|
Second order smothness: 7.594937e-001
|
|
This track looks like MPEG with probability 95%
|
|
```
|
|
|
|
Immediate implementation implications:
|
|
|
|
- Original does not rely only on upper-band energy. It estimates boundary and cut frequencies.
|
|
- The strongest contrast in the sample pair is phase nonlinearity: CDDA is high (`1.49`), MP3 transcode is low (`0.048`).
|
|
- First-order smoothness also separates the sample pair: CDDA low (`0.316`), MP3 transcode high (`0.861`).
|
|
- Our current detector should grow original-style fields before attempting stricter behavioral compatibility.
|