Skip to main content

canary-scan

pypi python build tests license

Scan document data-sources for canaries, trackers, web beacons, and per-recipient fingerprints before interacting with supplied datasets.

When you receive a large document dump from an external party — a leak, legal disclosure, or investigation — those files and documents can contain deliberate or indirect canaries: tracking pixels, embedded JavaScript, remote template links, steganographic watermarks, or per-recipient metadata fingerprints that phone home the moment a file is opened.

canary-scan inspects files without opening it in its native viewer, extracting and analysing raw structure, metadata, embedded objects, and near-duplicate fingerprints to surface anything that may reveal to an external party that the data-source is being examined.

Full documentation: psaintelligence.github.io/canary-scan


Quick Start (Docker)

The recommended way to run canary-scan is via Docker, as the image bundles all required system utilities and dependencies:

# Run the scan using the GitHub Container Registry image
docker run --rm \
  -v /mnt/datasource:/data:ro \
  -v $(pwd)/canary-scan-out:/output \
  ghcr.io/psaintelligence/canary-scan:latest scan /data -o /output

# Review findings
jq '.[] | select(.severity=="critical")' canary-scan-out/canary-scan-report.json

Quick Start (pipx)

If you prefer to run canary-scan directly on your host machine:

# 1. Install canary-scan
pipx install canary-scan

# 2. Install required system dependencies (Ubuntu 24.04 example)
sudo apt install libimage-exiftool-perl qpdf poppler-utils mupdf-tools \
    ripgrep unzip p7zip-full

# 3. Run the scan
canary-scan scan /mnt/datasource

Detection pipeline

Seven sequential stages: inventory → metadata → remote-refs → embedded → stego → uniqueness → report

Each stage writes a JSONL artefact to .canary-scan/. Run canary-scan --guide for a concise cheat sheet.


Supply-chain safety

canary-scan pins third-party Python dependencies to releases no newer than 14 days via uv's exclude-newer setting in pyproject.toml. This bounds the window during which a compromised upstream package could enter the resolved lockfile. The Didier Stevens bundled scripts are pinned at build time via make vendor; their provenance (commit SHA + version + date) is recorded in src/canary_scan/bundled/VERSIONS.txt.


License

Apache-2.0. Bundled third-party scripts (pdfid, pdf-parser, rtfdump) are BSD 2-Clause — see src/canary_scan/bundled/README.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

canary_scan-0.2.0.tar.gz (468.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

canary_scan-0.2.0-py3-none-any.whl (104.2 kB view details)

Uploaded Python 3

File details

Details for the file canary_scan-0.2.0.tar.gz.

File metadata

  • Download URL: canary_scan-0.2.0.tar.gz
  • Upload date:
  • Size: 468.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for canary_scan-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e4ebd7b181b6ed13d3b220ccf22493e3806a951dc11ecec0dccb333f0aa2b8a4
MD5 d4fb5c085db1f65e021f83b5d8e13df7
BLAKE2b-256 be0dad1d73f6566b0f0bad025f873fc46037d7f19e2f564c5a9a052cbb25ee2f

See more details on using hashes here.

File details

Details for the file canary_scan-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: canary_scan-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 104.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for canary_scan-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a2714a87bdce53db5697ecafb441d9f31307b0c19a2af1b008b812176babb4e8
MD5 f184cc044427bc88d98e878c7f2c3112
BLAKE2b-256 ed3e4b21d7795235748d055f804469685ead282bfb6c40277f9ecedfadcd062b

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page