Files
auCDtect_linux/docs/reverse_aucdtect_082.md

3.2 KiB

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

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

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.