About
Disclude is a Rust-based command-line tool for discovering code obfuscation. This site performs disclude scans on new releases of widely used packages on PyPI, npm, and crates.io. The goal is to refine disclude's routines to minimize false positives. There is also the slight chance something malicious (or at least suspicious) slips into a release.
Signals, not verdicts
Disclude looks for code that hides what it does from a human reader: invisible or direction-changing Unicode, encoded payloads, dynamic execution, install-time hooks, and similar. Each finding is a signal: a reason to read that code, not proof of anything. Plenty of legitimate code trips a signal.
To see what disclude reports when code really is hiding something, see the Gallery of well-known obfuscations.
Method
- Discovery. New releases come from the ecosyste.ms release feed, limited to each registry's most-downloaded packages.
- What is scanned. The package's source repository at the git tag matching the release. The diff against the previous release's tag marks which signals are new in this release.
- What is not scanned. The published artifact itself. Code added only at publish time (outside the repository) is not seen.
- Rulesets. Every result records the disclude version that produced it. "No signals" means "nothing flagged by that version", not "clean". When disclude is upgraded, the latest version of each package is scanned again.
- Not scanned. A release can fail to scan: the registry records no source repository, no git tag matches the version, the source couldn't be fetched, or the scan hit its time or memory limit. Those are listed as such.
LLM Review
As part of each scan, a language model reviews the warn and critical signals, and gives a verdict: confirmed, suspicious, inconclusive, likely benign, or dismissed. A signal it judges benign with enough confidence is demoted to info. Scan pages show each verdict with the model's summary and reasoning, and mark every demotion with the severity it had before.
Characteristics
Severities
- critical
- A likely technique of obfuscation, or at least suspicious.
- warn
- Signals that have potential obfuscation.
- info
- Possibly unusual usage, and signals the LLM review demoted.
Passes
- raw
- Byte-level: hidden Unicode, entropy, long lines.
- token
- Token-level: encoded strings, decoders.
- ast
- Syntax-tree: dynamic execution, shell-outs, install hooks.
Signals
Each signal's kind (for example unicode-bidi) is named on its scan page. The Disclude README describes every kind.
Created By
Disclude and disclude.io are created by Christopher Ariza. Learn more at flexatone.net