# compare

WPSniffer vs PHP Malware Finder

Updated October 2026

PHP Malware Finder (PMF) proved that YARA rules are a good fit for PHP malware: it crawls a filesystem and tests files against rules for webshells and well-known obfuscators. Its GitHub repository was archived and made read-only on February 11, 2024. WPSniffer takes the same idea forward with a maintained engine and a much larger, continuously updated rule set.

Details about the other tool come from its public documentation and repository as of October 2026. If something is out of date, open an issue and it will be corrected.

At a glance

WPSnifferPHP Malware Finder
LicenseGPLv3LGPL-3.0
StatusMaintainedArchived (read-only) since February 11, 2024
Written inPython 3.8+Go 1.17+ with libyara 4.2+; rules also usable with the yara CLI
EngineYARA-XClassic YARA (libyara)
RulesYARA Forge core, extended or full (about 5,000 in core), refreshed daily, plus your ownPMF's own php.yar rule set for webshells and about 20 named obfuscators; no longer updated
Rule attribution in output✓ Author, reference, score and description columns✗ Rule name only
Report formatsCSV, TSV, delimited, human-readable, emailTerminal output
Whole-file scanning✓ Up to 50 MiB by defaultDepends on YARA defaults
Multi-process✓ -j✓ -w workers
Whitelist / exclusions-e excludes rules by name; filename filterswhitelist.yar with hashes of known-good files
Docker imageNot provided; pip install✓ ghcr.io/jvoisin/php-malware-finder
WordPress-specific helpers✓ count-sites; reads paths from stdin for find pipelines✗

What PMF got right

PMF's rules are written as semantic patterns rather than file hashes, so they catch variants, and its list of detected obfuscators (Weevely3, P.A.S, Carbylamine, PHP Jiami and others) targets exactly the tooling used against WordPress. Its whitelist of hashes for known-good files is a clean answer to false positives on vendored libraries. Its own README was honest that bypassing it is "trivial", which is true of every pattern-based scanner and the reason rule sets must keep evolving.

With the repository archived, the rules stopped evolving in early 2024. New webshell generators and obfuscators since then are not covered, and the project will not receive fixes for newer YARA versions.

Where WPSniffer differs

  • Rule supply. Instead of one project's rule file, WPSniffer downloads the YARA Forge package, which aggregates and tests rules from many maintained sources, including the webshell and obfuscator families PMF targeted, and refreshes daily.
  • Attribution. Each hit carries the rule author, reference URL, score and description, so a report is reviewable by someone who has never seen the rule.
  • Reporting. CSV, TSV and delimited output with selectable columns, and an email summary, instead of terminal text.
  • Operations. Compiled-rule caching, per-file timeouts, whole-file scanning and stdin input make it practical for nightly scans across many sites.

What PMF has that WPSniffer lacks: a hash-based whitelist of known-good files and an official Docker image. WPSniffer's equivalent for noise is excluding rules by name and narrowing the scan with filename filters or a find list.

Migrating from PMF

If you still have PMF's php.yar, you can keep using its rules inside WPSniffer alongside YARA Forge. YARA-X is stricter about syntax than classic YARA, so some rules may need small fixes, which the compiler reports clearly:

$ wpsniffer malware-scan --rules /opt/php-malware-finder/data/php.yar --yara-forge core /var/www/html

Replace a PMF invocation with the WPSniffer equivalent:

$ php-malware-finder -a -w 8 /var/www/html
$ wpsniffer malware-scan --match-all -j 8 /var/www/html

For files PMF whitelisted, confirm they are clean once and exclude the specific rule they trigger with -e.