/ENFormant

ENF Analysis tool (Bellingcat community)

Primary LanguageJupyter NotebookBSD 2-Clause "Simplified" LicenseBSD-2-Clause

Comprehensive Document on Electrical Network Frequency (ENF) Analysis and Python Script Development

The following is merely a sketch and a collection of findings.

Introduction to Electrical Network Frequency (ENF) Analysis

ENF analysis is a forensic technique leveraging the characteristic fluctuations of the power grid's frequency, typically around 50 or 60 Hz, to verify the time and location of audio and video recordings. The grid frequency's slight but consistent variations serve as an "auditory fingerprint," enabling the timestamping and geolocating of recordings.

Python Script for ENF Analysis: Features and Improvements

  • Basic Functionality:
    • Load and Process Audio Files: Extract audio data and sample rate.
    • Filter and Extract ENF Signal: Apply a bandpass filter and perform signal analysis, such as Fourier Transform.
  • Advanced Analysis Techniques:
    • Multi-Tone Analysis: Utilize approaches like Multi-Harmonic Combining (MHC) for analyzing multiple harmonic components of the ENF signal.
    • Beyond PMCC: Implement additional methods like Root Mean Square Error (RMSE) or cross-correlation for a more nuanced comparison.

Spatial Variability of ENF

  • Grid Consistency: ENF is largely consistent across a grid, allowing for reliable data matching over large distances.
  • Local Variations: For high-precision applications, consider local grid dynamics and configurations.

Recording Duration for Reliable Matching

  • Minimum Length: Longer recordings increase the reliability of ENF matching.
  • Variability Consideration: Shorter recordings can be effective if ENF variability is significant during the recording period.

Sources for ENF Forensics and OSINT

  • Technical Methods:
    • FFT and Harmonics Analysis: For detailed analysis of ENF components.
  • Research and Extensions:
    • Studies like Liao et al.: Focus on advanced methodologies for improved detection.
  • Data Sources:
    • Online databases like Power Grid Frequency and Grid Radar for historical ENF data.

Developing the Python Script

  • Incorporate Advanced Techniques: Focus on multi-tone analysis and harmonic exploitation.
  • Enhance Comparison Algorithms: Evaluate both correlation and absolute value agreement.
  • Data Collection and Analysis: Utilize online databases and local recordings for comparison and testing.

Validation and Application in Forensics and OSINT

  • Continuous Validation: Test against known recordings and timestamps.
  • Practical Utility: Apply in various forensic scenarios and OSINT for authenticity verification.

Expanded Methods for Video ENF Analysis

  • Rolling Shutter Effect: Address challenges in video recordings due to the rolling shutter mechanism in CMOS cameras.
  • Analytical Model for ENF Variation: Assess how ENF harmonic frequency varies with the camera's idle period.
  • Idle Period Estimation: Crucial for camera forensics to verify the source of image/video pairs.

Enhanced Python Script Functionality for Video Analysis

  • Video Frame Processing: Extract row illumination samples for time-series creation.
  • DFT Application: Identify strongest ENF components and their power ratio.
  • Idle Period Estimation: Use the analytical model for time-of-recording verification.
  • Adaptability to Frame Rates: Design the script to handle various video frame rates.

Conclusion and Forward Plan

  • Incorporate Video Forensics: Expand the Python script's scope to include video-based ENF analysis, especially considering rolling shutter effects.
  • Cross-Reference Audio and Video Analysis: Combine insights for a comprehensive forensic tool.
  • Test and Validate: Ensure accuracy and reliability across audio and video samples.